Chciałbym podzielić się z Wami swoim kodem nad którym pracowałem kilka miesięcy - pierwszy raz o arduino usłyszałem chwilę przed tworzeniem kodu, przeczytałem masę poradników w internecie oraz książkę poświęconą temu tematowi. Domyślam się że kod może mieć jakieś błędy w samej budowie ( może do pewnych rzeczy powinienem użyć innych komend ) natomiast działał i robił to co chciałem żeby robił.
Mianowicie:
- obsługa EZ przy OLM
- określanie długości stabilizacji po której zawór się otworzy
- zapis temperatury dnia
- określanie temperatury w buforze oraz na 10 półce przy której zamknie się zawór OLM
Czyli typowe zabezpieczenie przed skokiem temperatury.
Ja przeszedłem na testowanie gotowych sterowników, obecnie SKNv3 i szkoda byłoby wrzucić do folderu i zapomnieć o tym, nawet jeśli ktoś wykorzysta kawałek kodu, może kogoś naprowadzi na jakieś rozwiązanie, będę się cieszył że mogłem pomóc. Otrzymałem z tego forum potężną wiedzę i sam w miarę możliwości będę chciał pomagać
LiquidCrystal_I2C lcd(0x27, 20, 4);
OneWire oneWire(0); //Uruchomienie komunikacji i2c na D3
DallasTemperature sensors(&oneWire); //Przekazanie informacji do biblioteki
//Zapis temperatury dnia po 60 minutach stabilizacji
if (dziesiatapolka > 75 && blokada == 0) {
if (roznicaCzasu > czasstabilizacji) {
lcd.setCursor (4, 0);
lcd.print(dziesiatapolka);
tempdnia = dziesiatapolka;
progolm = tempdnia + 0.32;
blokada = 1;
}
}
//Zawór OLM
if (dziesiatapolka > 30) { //Otwarcie po zakończeniu stabilizacji
if (roznicaCzasu > czasstabilizacji) {
digitalWrite(14, LOW);
}
}
if (dziesiatapolka > progolm & progolm != 0) { //Zamknięcie po przekroczeniu temperatury dnia
digitalWrite(14, HIGH);
}
if ( bufor > maxtempbufor) { // Zamknięcie zaworu gdy temperatura w buforze powyżej ustawionego progu
digitalWrite(14, HIGH);
}
BLYNK_WRITE(V20) // Zmiana czasu stabilizacji
{
int i = param.asInt();
EEPROM.write(1, i);
}
BLYNK_WRITE(V21) // Zmiana temperatury bufora przy której zamknie się zawór OLM
{
int i = param.asInt();
EEPROM.write(5, i);
}
BLYNK_WRITE(V22) // Zmiana temperatury 10półki przy której zamknie się zawór OLM
{
float i = param.asFloat();
EEPROM.put(10, i);
}
a później zaczął bym używać tych definicji w kodzie np tak:
digitalWrite(EZ_OLM, HIGH); zamiast digitalWrite(14, HIGH);
Bo po co po pół roku zastanawiać się co to jest 14 albo D5 itp...
Później zajął bym się wydzieleniem spójnych bloków funkcjonalnych do osobnych funkcji jak np. obsługa wyświetlacza
PS. Nie traktuj tego jako czepialstwo bo jak dopiszesz jeszcze ze sto linii kodu to za kolejne pół roku i coś się sypnie to będzie bieda z tymi magicznymi cyferkami.
″Iloraz inteligencji tłumu jest równy IQ najgłupszego jego przedstawiciela podzielonemu przez liczbę uczestników.„
- Terry Pratchett
@rasto zdaję sobie z tego sprawę, nawet o tym wspomniałem i jak najbardziej nie traktuję Twojego komentarza jako czepialstwo. Nie znam się na tyle aby wydzielać z kodu co jest zrobione do końca poprawnie a co można by uprościć/poprawić dlatego wrzucam cały kod.
Ostatnio zmieniony niedziela, 31 sty 2021, 19:36 przez aakk, łącznie zmieniany 1 raz.
Destylatory ze stali nierdzewnej.
www.ak-spaw.pl
facebook.com/akspawpl
Zapraszam
Cześć,
odgrzebie stary temat, bo mam jedno pytanie do autora, albo bardziej obeznanych kolegów w temacie.
Dlaczego dodaje się tutaj te 0,5 st.C do Kega:
Po takim czasie to już nawet autor nie wie po co to jest... może jego termometr oszukiwał na wodzie o tyle a może pomysł był zupełnie inny. Jeżeli miała by to być poprawka na ciśnienie to raczej nie w tę stronę...
Ostatnio zmieniony czwartek, 4 maja 2023, 17:11 przez rastro, łącznie zmieniany 1 raz.
″Iloraz inteligencji tłumu jest równy IQ najgłupszego jego przedstawiciela podzielonemu przez liczbę uczestników.„
- Terry Pratchett