26-04-2016, 11:15
Opis w kodzie.
Alarm wyłącza się w innej temperaturze niż zdeklarowana.
Alarm wyłącza się w innej temperaturze niż zdeklarowana.
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
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
//float tempT1 = (sensors.getTempCByIndex(0));
if(sensors.getTempCByIndex(0) >=24.2)
digitalWrite(przekaznik, LOW);
delay(1);
{
if(sensors.getTempCByIndex(0) >=26.1)
digitalWrite(buzzer, HIGH);
delay(10);
digitalWrite(buzzer, LOW);
delay(500);
if(sensors.getTempCByIndex(0) <=23.1) // tu jest problem
digitalWrite(buzzer, HIGH); // buzzer przestaje pipczyć
delay(1); // przy temp. 26.1
digitalWrite(buzzer, LOW); //
}
if(sensors.getTempCByIndex(0) <=23.3) //jeżeli T1 niższa od 27
digitalWrite(przekaznik, HIGH);
// drugi czujnik
lcd.setCursor(4,4); //ustaw kursor w pozycji 0,0
lcd.print(sensors.getTempCByIndex(1)); //wyswietl wartosc z czujnika 1
delay(10); //odczekaj 50ms
}