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
----------------------------------------
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");
}