Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <OneWire.h>
- #include <DS18B20.h>
- #include <LiquidCrystal.h>
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 20, 4);
- #define ONE_WIRE_BUS 11
- OneWire oneWire(ONE_WIRE_BUS);
- DS18B20 sensors(&oneWire);
- const int tempplus = 6;
- const int tempminus = 7;
- const int wlacznik = 5;
- float tempz = 50; //inicjalizacja i przypisanie wartości tempz
- #define SENSORS_NUM 2
- float temperature;
- float temperatura;
- // Adresy czujników
- byte addres[8] = {0x28, 0x8C, 0x4D, 0x1F, 0x7, 0x0, 0x0, 0x54};
- byte address [8] = {0x28, 0x61, 0x73, 0x1F, 0x7, 0x0, 0x0, 0x11};
- int BeepPin = 13; //numer pinu buzzera
- void praca()
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("T.Pieca ~");
- lcd.setCursor(0, 1);
- lcd.print("T.Boilera ~");
- lcd.setCursor(0, 2);
- lcd.print("Stan pompy ~");
- lcd.setCursor(0, 3);
- lcd.print("Start pompy ~");
- lcd.setCursor(14, 3);
- lcd.print(tempz);
- if (sensors.available())
- {
- temperature = sensors.readTemperature(addres);
- lcd.setCursor(14, 0);
- lcd.print(temperature, 1);
- temperatura = sensors.readTemperature(address);
- lcd.setCursor(14, 1);
- lcd.print(temperatura, 1);
- sensors.request();
- }
- if (temperature >= tempz) {
- digitalWrite(10, HIGH);
- lcd.setCursor(14, 2);
- lcd.print("PRACA");
- if (poprzedniStan != digitalRead(10)) {
- poprzedniStan = digitalRead(10);
- Ton();
- }
- }
- if (temperature <= tempz - 5) {
- digitalWrite(10, LOW);
- lcd.setCursor(14, 2);
- lcd.print("STOP ");
- if (poprzedniStan != digitalRead(10)) {
- poprzedniStan = digitalRead(10);
- Beep();
- }
- }
- }
- void manual()
- {
- lcd.clear();
- lcd.setCursor(4, 0);
- lcd.print("temp.");
- lcd.setCursor(10, 0);
- lcd.print(temperature, 1);
- lcd.setCursor(1, 2);
- lcd.print("< POMPA PRACUJE >");
- }
- void Ton()
- { int i = 0;
- while (i < 4)
- {
- digitalWrite(BeepPin, HIGH);
- delay(80);
- digitalWrite(BeepPin, LOW);
- delay(40);
- i++;
- }
- }
- void Beep()
- {
- digitalWrite(BeepPin, HIGH); //stan wysoki żeby odpalić buzzer
- delay(800);
- digitalWrite(BeepPin, LOW); //stan niski - kończymy piskanie
- }
- void Pip()
- { int i = 0;
- while (i < 4)
- {
- digitalWrite(BeepPin, HIGH);
- delay(80);
- digitalWrite(BeepPin, LOW);
- delay(50);
- i++;
- }
- }
- void setup()
- {
- sensors.begin(12); //rozpoczęcie pracy DS18B20
- sensors.request();
- pinMode(wlacznik, INPUT_PULLUP);
- pinMode(tempplus, INPUT_PULLUP);
- pinMode(tempminus, INPUT_PULLUP);
- pinMode(10, OUTPUT);
- pinMode(12, OUTPUT);
- pinMode(BeepPin, OUTPUT); //ustawiamy
- digitalWrite(BeepPin, LOW); //tak dla pewności żeby wyzerować
- lcd.init();
- lcd.backlight();
- lcd.clear();
- }
- int poprzedniStan = LOW;
- boolean stan = 0;
- void loop()
- {
- if (digitalRead(tempplus) == LOW) {
- tempz++;
- }
- if (digitalRead(tempminus) == LOW) {
- tempz--;
- }
- if (digitalRead(wlacznik) == LOW)
- {
- delay(20);
- stan = !stan;
- digitalWrite(12, stan);
- while (digitalRead(wlacznik) == LOW);
- delay(20);
- Pip();
- }
- if (stan == 0)
- {
- praca();
- }
- else
- {
- manual();
- }
- delay(50);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement