Skocz do zawartości

lewwus

Użytkownicy
  • Zawartość

    13
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O lewwus

  • Ranga
    2/10
  1. WOW Dziękuje bardzo za taką dawkę wiedzy !
  2. W takiej wersji jak poniżej ze zmienionymi nawiasami wydaje się działać prawidłowo if (digitalRead(RELAY_PIN_W) == LOW){ lcd.setCursor(16,3); lcd.print("ON."); } else if (digitalRead(RELAY_PIN_W) == HIGH){ lcd.setCursor(16,3); lcd.print("OFF"); } } Tylko czy to o to chodziło z tymi nawiasami ?
  3. Tak też myślałem Aktualna wersja jaka przychodzi mi na myśl . // poprzednia część kodu . if (digitalRead(RELAY_PIN_W == LOW)){ lcd.setCursor(16,3); lcd.print("ON"); } else if (digitalRead(RELAY_PIN_W == HIGH)){ lcd.setCursor(16,3); lcd.print("OFF"); } } Niestety wyświetla się tylko "ON", po wyłączeniu przekaźnika nie pojawia się stan "OFF".
  4. Wracam z kolejną zagwozdką, a mianowicie chciałem dodać informacje o stanie przekaźnika, który byłby wyświetlany w menu głównym. Aktualnie menu główne wygląda tak: void menuGlowne() { aktualnyCzas = millis(); roznicaCzasu = aktualnyCzas - zapamietanyCzas; if (hasChanged) { // tekst na menu glownym lcd.clear(); lcd.setCursor(0,0); lcd.print("PARAMETRY"); lcd.setCursor(16,0); lcd.print("Stan"); lcd.setCursor(0,2); lcd.print("Temp."); lcd.setCursor(0,3); lcd.print("Wilg."); } if (roznicaCzasu >= 2000UL || hasChanged) { // wyswietlenie t
  5. Poprawione ! Wszystko wydaje się działać tak jak trzeba, bez zakłóceń Zastanawia mnie tylko jedno, bo zauważyłem lekkie opóźnienie/różnica miedzy działaniem przekaźnika a wyświetleniem temperatury. Jest jakaś recepta na te dolegliwość ? Nie jest to wielki błąd, bardziej bym nazwał to przyczepieniem się do szczegółów #include <Wire.h> // dodanie bibliotek #include <LiquidCrystal_I2C.h> #include "dht.h" #include <Bounce2.h> LiquidCrystal_I2C lcd(0x3F,20,4); //przypisanie wspołrzednyc ekranu LCD dht DHT22; #define DHT22PIN 13
  6. Dzięki za tyle wiedzy i rad ! Jednak nie obyłoby się bez jakich przygód/problemów. Kod poprawiony, przede wszystkim oczyszczona przestrzeń w loopie. Histereza poprawiona, aktualnie wygląda tak { if (DHT22.temperature <= minTemp){ // właczenie sie przkaznika gdy temp otoczenia jest mniejsza od minmalnej temp oraz mniejsza od maksymalnej digitalWrite(RELAY_PIN, LOW); } else if (DHT22.temperature >= maxTemp){ // wylączenie sie przekaznika gdy jest rowna lub wieksza maksymalnej digitalWrite(RELAY_PIN, HIGH); } } Tak jak napisał @Elvis maxTemp nie jest spraw
  7. if ((DHT22.temperature <= minTemp) && (DHT22.temperature <= maxTemp)){ digitalWrite(RELAY_PIN, LOW); } else if (DHT22.temperature >= maxTemp){ digitalWrite(RELAY_PIN, HIGH); } W takiej formie histereza działa, bo po osiągnięciu tempMax przekaźnik się wyłącza. Włącza się po spadnieciu do tempMin i grzeje do tempMax. Problem jaki zauważyłem to, to że działa ona w momencie wyświetlania temp min i max czyli ekran 3. Nie wiem jak inaczej to ugryźć, może jest jakaś inna droga.
  8. Zanotowane Tak, poczytałem o histerezie i dodałem funkcje regulacji temperatury pomiędzy dwoma rożnymi wartościami. Jednak nie jestem do końca co do niej przekonany. Dokładniej to stany w ktorych włącza lub wyłącza się przekaźnik są odwrotne niż w innych rozwiązaniach, nie wiem czy jest to duży błąd. Dodatkowo przekaźnik włącza się ponownie po załadowaniu temperatury maksymalnej na ekranie. Wersja z jedną temperaturą (bez histerezy) działa nie ważne jaki ekran wyświetlacz pokazuję. #include <Wire.h> // dodanie bibliotek #include <LiquidCrystal_I2
  9. Wybaczcie za mój błąd z voidem lub zmienna, nie jestem programista, a to co robię wykonuje hobbystycznie poza godzinami regularnej pracy. Wiem, że mam braki (i to nie małe!), jednak dziękuje za zwrócenie uwagi i odesłanie do dalszej nauki . @Treker zgadza się to co miałem na myśli to była osobna funkcja tak jak w przykładzie poniżej. void loop() { . . . // kod własciwy regulacjaTemp(); } void regulacjaTemp() { // wykonanie czynnosci/ zadania } Na przyszłość będę pamiętał i zabieram się za dalsze kształcenie
  10. Wszystko działa prawidłowo, delay usunięty. (przepraszam za brak rozgarnięcia). Dziękuję pięknie za pomoc ! Chciałbym się też dowiedzieć (jeśli możesz wiedzieć), bo nie wiem czy to wina kodu czy samego czujnika DHT22, ale momentami odczyt wilgotności wskazuje -999, jednak po 2 sekundach kiedy ma być wykonany nowy odczyt błąd ten znika. Dodatkowo wspomniałem na początku, że chciałbym dodać do tego rozwiązania możliwość regulacji temperatury np. w pomieszczeniu poprzez podłączenie przekaźnika, który będzie załączał się i wyłączał w odpowiednim momencie. Myślę, że to jest dobry moment
  11. Kod poprawiony, troszkę uporządkowany, wygląda on następująco #include <Wire.h> // dodanie bibliotek #include <LiquidCrystal_I2C.h> #include "dht.h" #include <Bounce2.h> LiquidCrystal_I2C lcd(0x3F,20,4); //przypisanie wspołrzednyc ekranu LCD dht DHT22; #define DHT22PIN 13 // zdefiniowanie podłączeń #define BUTTON_PIN 10 int menu = 1; Bounce przycisk = Bounce(); boolean hasChanged = true; int COUNT_MENU = 3; unsigned long aktualnyCzas = 0; // Przypisanie long temperatury i willgotnosci unsigned long zapamietanyCzas = 0; un
  12. Okej, problem pierwszy, częściowo zażegnany. Po usunięciu "ifa" ekrany się zmieniają i aktualizują na bieżąco wartości, jednak pojawił się problem czwarty, który przewidziałeś niczym z magicznej kuli . Problemem jest mruganie lub zanikanie tekstu. W momencie dodania delay'u na końcu, tekst z pierwszego ekranu mruga, bez tego delay'a zanika. Co do biblioteki Bounce2, pobrana i staram się z nią zapoznać na podstawie gotowych przykładów jakie znajdują się w tej bibliotece, jednak wszystkie opierają się na ledzie i nie wiem do końca który z tych przykładów może mieć zastosowanie w moi
  13. Cześć, chce zrobić termostat, który będzie oparty na dwóch rożnych ekranach które będą przełączane jednym guzikiem. Część, kodu mam napisane jednak doszedłem do momentu w którym nie wiem co może być nie tak. Przyjmę każda pomoc w ruszeniu z miejsca Wiem, że podobny wątek był poruszany na forum jednak nie chce zmieniać pierwotnego problemu innego uzytkownika. Poniżej załączam kod na jakim działam. Część kodu jest napisana prze zemnie a część zapożyczona z gotowego. #include <Wire.h> #include <LiquidCrystal_I2C.h> #include "dht.h" LiquidCrystal_I2C lcd(0x3F,20,4); dht D
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.