• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
regulator temperatury co, cwu
#3
kolega "nomak" wyobrazi sobie że prubowałem coś w tym kierunku zdziałać,  ale nic mi nie wychodzi.
nie liczę na gotowca, lecz jakąś podpowiedz. Chyba po to te całe forum
znalazłem co nie co  i zacząłem coś działać w tym kierunku, ale lipa.... nawet nie ma czym się chwalić,  no ale żeby nie było że czekam z założonymi rękami  aż ktoś mnie wyręczy. Kod poniżej.
Odczyt z czujnika jest w momencie gdy zmieniam wartość  zadaną,
Wrażenie mam tak jak by "void loop()" nie działał jak należy.  
---------------------------------------
kod
----------------------------------------
Kod:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>


#define ONE_WIRE_BUS 2         //czujnik 1 podpięty do pinu 2
#define ONE_WIRE_BUS2 3         //czujnik 2 podpięty do pinu 3

OneWire oneWire(ONE_WIRE_BUS);    //czujnik 1
OneWire oneWire2(ONE_WIRE_BUS2);   //czujnik 2


// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
DallasTemperature bojler(&oneWire2);
// Definicja wejść wyświetlacza ciekłokrystalicznego

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Ustawienie adresu ukladu na 0x27
int przekaznik=5;          //przekaznik 1 do pinu 5
int przekaznik2=6;          //przekaznik 2 do pinu 6
char *k0="T.K:";
char *k1=" <> Temp. = ";
char *k2=" *C                ";
char *k3=" Ustawiono!=";
int temp=50;
// --------------------------------------------------------------------------------
void setup()
{
 pinMode(9,INPUT_PULLUP);
 pinMode(10,INPUT_PULLUP);
 pinMode(11,INPUT_PULLUP);
Serial.begin(9600);
 // Inicjacja czujnika
 sensors.begin();
 // Inicjacja wyświetlacza
 lcd.begin(16, 2);
 lcd.clear();
pinMode(przekaznik,OUTPUT); // ustawienie pinu jako wyjście
digitalWrite(przekaznik,LOW); // ustawienie na nim stanu niskiego
pinMode(przekaznik2,OUTPUT); // ustawienie pinu jako wyjście
digitalWrite(przekaznik2,LOW); // ustawienie na nim stanu niskiego

}
// ---------------------------------------------------------------------------------
int getButton(int bG, int bD, int oK)
{
 if(digitalRead(bG)==LOW){delay(30);if(digitalRead(bG)==LOW)return 1;}
 if(digitalRead(bD)==LOW){delay(30);if(digitalRead(bD)==LOW)return 2;}
 if(digitalRead(oK)==LOW){delay(30);if(digitalRead(oK)==LOW)return 3;}
 return -1;
}
// ---------------------------------------------------------------------------------
void ekran(char *kL, int v ,char *kP="",int wiersz=0)
{
  if(wiersz>=0)
   {
   lcd.setCursor(14,wiersz);lcd.print(" ");
   lcd.setCursor(14,wiersz);lcd.print(kL);lcd.print(v);lcd.print(kP);
   
  lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("T.K:");    //temperatura kotła
 sensors.requestTemperatures();
lcd.print(sensors.getTempCByIndex(0));

}
   else {Serial.print(kL);Serial.print(v);Serial.println(kP);}
}
// ---------------------------------------------------------------------------------
void ekran(char *kK,int wiersz=0)
{
 if(wiersz>=0)
   {
   lcd.setCursor(0,wiersz);lcd.print(" ");
   lcd.setCursor(0,wiersz);lcd.print(kK);
   }
   else Serial.print(kK);
}    
// ---------------------------------------------------------------------------------
int nastawy(int v, int vmin, int vmax)
{
 ekran(k0,v,k2);
 int zm=-1;
 int x=-1;
 while(x!=5)
   {
   x=getButton(9,10,11);
   if(x!=zm)
     {
     switch(x)
       {
       case 1: v++;if(v>vmax)v=vmax;ekran(k1,v,k2);break;
       case 2: v--;if(v<vmin)v=vmin;ekran(k1,v,k2);break;
       case 3: ekran(k3);delay(2000);ekran("");return v;break;
       }
     }
    zm=x;
   }
}
// ---------------------------------------------------------------------------------
void loop()
{
lcd.setCursor(0,0);
        //funkcja pompy co
digitalWrite(przekaznik,HIGH); // włączenie przekaźnika 1
   lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("T.K:");    //temperatura kotła
 sensors.requestTemperatures();
lcd.print(sensors.getTempCByIndex(0));

temp=nastawy(temp,10,80);
lcd.print("*C");

}
 
Odpowiedź
  


Wiadomości w tym wątku
regulator temperatury co, cwu - przez miodzik - 23-04-2017, 19:28
RE: regulator temperatury co, cwu - przez namok - 23-04-2017, 21:59
RE: regulator temperatury co, cwu - przez miodzik - 24-04-2017, 21:33
RE: regulator temperatury co, cwu - przez Smaczek - 25-04-2017, 08:10
RE: regulator temperatury co, cwu - przez miodzik - 04-05-2017, 16:51

Skocz do:


Przeglądający: 1 gości