Proszę bardzo , nie da się wysterować wyjścia bez utrzymania stanu poniżej którego funkcja nie działa .
Kod:
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define TEMPERATURE_PRECISION 9 // precyzja
#define SENSORS_NUM 2 // Ilość czujników
int one_wire = 8; //Transmisja 1-Wire na pinie 10
int buzzer = 9;
int przekaznik = 10;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
OneWire oneWire(one_wire); //wywołujemy transmisję 1-Wire na pinie 10
DallasTemperature sensors(&oneWire); //informujemy Arduino, ze przy pomocy 1-Wire
//chcemy komunikowac sie z czujnikiem
long pm = 0;
byte buzzerstate = 0;
void setup() {
pinMode(buzzer,OUTPUT); //buzzer
pinMode(przekaznik,OUTPUT);
lcd.begin(16, 2); //Rozpoczęcie pracy wyświetlacza
lcd.setCursor(0,0); //Ustawienie kursora w pozycji poczatkowej
lcd.print("T1:"); // wyświetlanie stałej
lcd.setCursor(0,1); //Ustawienie kursora w pozycji poczatkowej
lcd.print("T2:"); // wyświetlanie stałej
sensors.begin(); //rozpocznij odczyt z czujnika
digitalWrite(przekaznik, HIGH); //stan poczatkowy przekażnika wysoki
//digitalWrite(buzzer, LOW);
}
void loop(){
sensors.requestTemperatures(); //zazadaj odczyt temperatury z czujnika
lcd.setCursor(4,0); //ustaw kursor w pozycji 0,0
lcd.print(sensors.getTempCByIndex(0)); //wyswietl wartosc z czujnika 0
if(sensors.getTempCByIndex(0) >= 24.2)digitalWrite(przekaznik, LOW);
if(sensors.getTempCByIndex(0) <= 23.3)digitalWrite(przekaznik, HIGH);
if(sensors.getTempCByIndex(0) >= 26.1)buzzerstate = 1;
if(sensors.getTempCByIndex(0) <= 23.1)buzzerstate = 0;
lcd.setCursor(4,4);
lcd.print(sensors.getTempCByIndex(1));
buzerek();
}
void buzerek(){
if ( buzzerstate == 1 ){
long cm = millis();
if ( cm - pm > 500 )digitalWrite(buzzer, HIGH);
if ( cm - pm > 1000 ){digitalWrite(buzzer, LOW);pm = cm;}
}
if ( buzzerstate == 0 )digitalWrite(buzzer, LOW);
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji