#include // bibiloteka I2C #include // biblioteka wyświetlaca LCD na I2C LCD_I2C lcd(0x27, 16, 2); // domyslny adres dla modułów PCF8574 const int pwody = 2; // poziom wody zbiornika const int czprzep = 3; // czujnik przeplyw wpdy const int tbojl= 4; // czujnik temeratury bojlera wody const int pkmala = 5; // przycisk kawa mala const int pkduza = 6; // przycisk kawa duza const int ppara = 7; // przycisk spieniacz const int ledkawa = 8; // dioda sygnalizacji kawy const int ledpara = 9; // dioda sygnalizacji pary const int grzalka = 13; // grzałka bojlera const int pompa = 10; // pomapa wody const int silzap = 11; // napęd zaparzacza const int mlynek = 12; // młynek kawy void setup() { pinMode(pwody, INPUT_PULLUP); pinMode(czprzep, INPUT_PULLUP); pinMode(tbojl, INPUT_PULLUP); pinMode(pkmala, INPUT_PULLUP); pinMode(pkduza, INPUT_PULLUP); pinMode(ppara, INPUT_PULLUP); pinMode(ledkawa, OUTPUT); pinMode(ledpara, OUTPUT); pinMode(grzalka, OUTPUT); pinMode(pompa, OUTPUT); pinMode(silzap,OUTPUT); pinMode(mlynek,OUTPUT); digitalWrite(ledkawa, LOW); digitalWrite(ledpara, LOW); digitalWrite(grzalka, LOW); digitalWrite(pompa, LOW); digitalWrite(silzap, LOW); digitalWrite(mlynek, LOW); lcd.begin(); // inicjowanie LCD poz 0,0 lcd.backlight(); // podświetlenie LCD lcd.setCursor(2, 0); // ustawienie kursora kolunma 2, wiersz 1 lcd.print("Uruchamienie"); // wyświetlenie napisu lcd.print(""); delay(3000); lcd.clear(); // kasownie wyświeltacza } void loop() { // jeśli mało wody to migaj LED kawa i para 5 razy if (digitalRead(pwody) == LOW) { digitalWrite(grzalka,LOW); lcd.setCursor(6,0); // kolumna, wiersz lcd.print("BRAK"); lcd.setCursor(6,1); lcd.print("WODY"); for (int bw = 0;bw < 3;bw++) { digitalWrite(ledkawa,HIGH); digitalWrite(ledpara,HIGH); delay(300); digitalWrite(ledkawa,LOW); digitalWrite(ledpara,LOW); delay(300); } lcd.clear(); } // jesli temperatura wody niska to wlacza grzalke if (digitalRead(tbojl) == LOW && digitalRead(pwody) == HIGH) { digitalWrite(grzalka, HIGH); lcd.setCursor(2,0); // kolumna, wiersz lcd.print("Podgrzewam"); lcd.setCursor(6,1); lcd.print("wode"); } else { digitalWrite(grzalka, LOW); lcd.clear(); } // MAŁM KAWA // jeśli wcisnieto przycisk mała kawa to zapal LED mała kawa // uruchom silnik zaparzacza, włacz grzałkę i włącz pompe na 5 sekund if (digitalRead(pkmala)==LOW && digitalRead(pwody) == HIGH) { // lcd.clear(); lcd.setCursor(3,0); // kolumna, wiersz lcd.print("MALA KAWA"); lcd.setCursor(5,1); lcd.print("125 ml"); digitalWrite(ledkawa,HIGH); digitalWrite(mlynek,HIGH); delay(4000); digitalWrite(mlynek,LOW); digitalWrite(silzap,HIGH); delay(1000); digitalWrite(silzap,LOW); delay(500); digitalWrite(pompa,HIGH); digitalWrite(grzalka, HIGH); delay(2500); digitalWrite(pompa,LOW); delay(1000); digitalWrite(pompa,HIGH); delay(2500); digitalWrite(pompa,LOW); delay(1000); digitalWrite(pompa,HIGH); delay(2500); digitalWrite(pompa,LOW); digitalWrite(grzalka, LOW); digitalWrite(ledkawa,LOW); lcd.clear(); } // DUŻA KAWA // jesli wciśnieto przycisk duża kawa, to zapal LED duza kowa // uruchom silnik zaparzacza na 1,5 sek, włacz grzałkę i włącz pompe na 5 sek // zrób pauze pompy na 1 sek, włacz pompęn 5 sek // wylacz pompę, grzałkę, zgaś LED duża kawa if (digitalRead(pkduza)==LOW && digitalRead(pwody) == HIGH) { // lcd.clear(); lcd.setCursor(3,0); // kolumna, wiersz lcd.print("DUZA KAWA"); lcd.setCursor(5,1); lcd.print("230 ml"); digitalWrite(ledkawa,HIGH); digitalWrite(mlynek,HIGH); delay(4000); digitalWrite(mlynek,LOW); digitalWrite(silzap,HIGH); delay(1500); digitalWrite(silzap,LOW); delay(100); digitalWrite(pompa,HIGH); digitalWrite(grzalka, HIGH); delay(4000); digitalWrite(pompa,LOW); delay(1000); digitalWrite(pompa,HIGH); delay(4000); digitalWrite(pompa,LOW); delay(1000); digitalWrite(pompa,HIGH); delay(4000); digitalWrite(pompa,LOW); digitalWrite(grzalka, LOW); digitalWrite(ledkawa,LOW); lcd.clear(); } // SPIENIACZ - PARA // jesli wsisnieto przycisk PARA if (digitalRead(ppara)==LOW && digitalRead(pwody) == HIGH) { // lcd.clear(); lcd.setCursor(2,0); // kolumna, wiersz lcd.print("Goraca woda"); lcd.setCursor(2,1); lcd.print("Spienianie"); digitalWrite(ledpara,HIGH); digitalWrite(pompa,HIGH); digitalWrite(grzalka, HIGH); delay(3000); digitalWrite(pompa,LOW); delay(1000); digitalWrite(pompa,HIGH); delay(3000); digitalWrite(pompa,LOW); delay(1000); digitalWrite(pompa,HIGH); delay(3000); digitalWrite(pompa,LOW); delay(1000); digitalWrite(pompa,HIGH); delay(3000); digitalWrite(pompa,LOW); digitalWrite(grzalka, LOW); digitalWrite(ledpara,LOW); lcd.clear(); } }