Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <DHT.h>
- #include <LiquidCrystal.h>
- #include <DS3231.h>
- #include <Wire.h>
- //Zdefiniowanie Pinów
- #define PIR 2
- #define DHT11_PIN 13
- #define przycisk1 A5
- #define czerwony 5
- #define zielony 4
- #define niebieski 3
- #define podswietlenie_LCD 6
- //Wywołanie obiektów
- DHT dht;
- LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
- DS3231 rtc(SDA, SCL);
- Time t;
- int temp = 00, wilg = 00, tryb = 0, detekcja = 0;
- unsigned long odliczanie1, odliczanie2, odliczanie3;
- //Utworzenie symboli wyświetlacza LCD (kropla, termometr)
- byte termometr[] = {
- B00100,
- B01010,
- B01010,
- B01010,
- B01110,
- B11111,
- B11111,
- B01110
- };
- byte kropla[] = {
- B00000,
- B00100,
- B00100,
- B01110,
- B11111,
- B11111,
- B01110,
- B00000
- };
- //Obsługa wyświetlacza
- void LCD() {
- switch (tryb) {
- case 0:
- digitalWrite(podswietlenie_LCD, LOW);
- lcd.clear();
- lcd.begin(16, 2);
- lcd.setCursor(0, 0);
- lcd.print("");
- analogWrite(czerwony, 0);
- analogWrite(zielony, 0);
- analogWrite(niebieski, 0);
- Serial.print("Tryb: "); Serial.println(tryb);
- break;
- case 1:
- czujnik_DHT();
- dioda_RGB();
- digitalWrite(podswietlenie_LCD, HIGH);
- lcd.clear();
- lcd.begin(16, 2);
- lcd.setCursor(0, 0);
- lcd.print(rtc.getTimeStr());
- lcd.setCursor(0, 1);
- lcd.print(rtc.getDateStr());
- Serial.print("Tryb: "); Serial.println(tryb);
- break;
- case 2:
- czujnik_DHT();
- dioda_RGB();
- digitalWrite(podswietlenie_LCD, HIGH);
- lcd.begin(16, 2);
- lcd.setCursor(0, 0);
- lcd.write(1);
- lcd.setCursor(0, 1);
- lcd.write(2);
- lcd.setCursor(14, 1);
- lcd.print("%");
- // Kontrola pomiaru czujnika
- lcd.setCursor(13, 0);
- lcd.print(temp);
- lcd.setCursor(12, 1);
- lcd.print(wilg);
- Serial.print("Tryb: "); Serial.println(tryb);
- break;
- /* case 3:
- czujnik_DHT();
- dioda_RGB();
- digitalWrite(podswietlenie_LCD, HIGH);
- lcd.clear();
- lcd.begin(16, 2);
- lcd.setCursor(0, 0);
- lcd.print(rtc.getDateStr());
- lcd.print(" : ");
- lcd.println(detekcja);
- Serial.print("Tryb: "); Serial.println(tryb);*/
- break;
- }
- }
- //Odczyt temperatury oraz wilgotności
- void czujnik_DHT() {
- int t, w;
- t = dht.getHumidity();
- w = dht.getTemperature();
- if (dht.getStatusString() == "OK") {
- wilg = dht.getHumidity();
- temp = dht.getTemperature();
- }
- }
- //obsługa diody RGB
- void dioda_RGB() {
- if (temp < 12)
- {
- analogWrite(czerwony, 0);
- analogWrite(zielony, 0);
- analogWrite(niebieski, 255);
- } else if (temp >= 10 && temp < 18) {
- analogWrite(czerwony, 0);
- analogWrite(zielony, 128);
- analogWrite(niebieski, 255);
- } else if (temp >= 18 && temp < 24) {
- analogWrite(czerwony, 192);
- analogWrite(zielony, 64);
- analogWrite(niebieski, 0);
- } else if (temp >= 24) {
- analogWrite(czerwony, 255);
- analogWrite(zielony, 0);
- analogWrite(niebieski, 0);
- }
- }
- void setup() {
- Serial.begin(9600);
- Wire.begin();
- rtc.begin();
- dht.setup(DHT11_PIN);
- lcd.createChar(1, termometr);
- lcd.createChar(2, kropla);
- pinMode(przycisk1, INPUT_PULLUP);
- pinMode(czerwony, OUTPUT);
- pinMode(niebieski, OUTPUT);
- pinMode(zielony, OUTPUT);
- pinMode(PIR, INPUT);
- pinMode(podswietlenie_LCD, OUTPUT);
- LCD();
- //Jednorazowe ustawianie daty (moduł RTC)
- //rtc.setTime(20, 46, 00);
- //rtc.setDate(17, 3, 2020);
- //rtc.setDOW(TUESDAY);
- }
- void loop() {
- // Aktywacja przez czujnik ruchu
- if (digitalRead(PIR) == HIGH) {
- odliczanie1 = millis();
- Serial.println("!Aktywacja czujnika ruchu!");
- if (digitalRead(przycisk1) == LOW) {
- odliczanie1 = millis();
- if (tryb < 3) {
- tryb++;
- } else if (tryb == 3) {
- tryb = 1;
- }
- Serial.println("!Wcisniecie przycisku!");
- } else if (digitalRead(przycisk1) == HIGH && tryb == 0) {
- tryb = 1;
- }
- LCD();
- delay(100);
- }
- //Aktywacja przez przycisk
- if (digitalRead(przycisk1) == LOW) {
- odliczanie1 = millis();
- if (tryb < 3) {
- tryb++;
- } else if (tryb == 3) {
- tryb = 1;
- }
- LCD();
- Serial.println("!Wcisniecie przycisku!");
- }
- //Wyłączenie podświetlenia
- odliczanie2 = millis();
- if (odliczanie1 >= odliczanie2 - 10000 && odliczanie1 <= odliczanie2 - 9000) {
- tryb = 0;
- LCD();
- delay(100);
- }
- LCD();
- Serial.println(temp);
- delay(500);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement