20-11-2019, 13:43
Witam.
Dopiero zaczynam przygodę z Arduino i jeszcze wiele muszę się nauczyć ale stworzyłem program do sterowania solarnym podgrzewaczem wody.
Pokrótce program działa w następujący sposób:
- w sposób ciągły dokonywany jest pomiar temperatury wody i wyświetlany na wyświetlaczu LCD
- program może pracować w dwóch trybach:
1. Tryb auto gdzie w momencie przekroczenia zadanej temperatury (np. 85 st) automatycznie włącza się pompa chłodząca podgrzewacz a w momencie zbyt niskiej temperatury (np. 35 st) włącza się grzałka podgrzewająca wodę
2. Tryb manual w tym trybie nie włącza się nic automatycznie ale za pomocą przycisków można uruchomić zarówno pompę jak i grzałkę
Przełączanie pomiędzy trybami zrobiłem za pomocą przełącznika bistabilnego - nie przycisku (stale włączony jest tryb auto lub manual w zależności od pozycji przełącznika), Takie rozwiązanie pozwala uruchomić ostatnio używany tryb pracy np. po zaniku prądu, ponownym włączeniu urządzenia.
Problem w tym że po przełączeniu z trybu auto na manual program nadal trzyma wartości z trybu auto a chcę żeby zostały one jak gdyby "wyzerowane" np. jeśli w tym momencie jesteśmy w trybie auto Auto i grzałka jest załączona to po przełączeniu w tryb Manual powinna ona zostać automatyczny wyłączona i program powinien "czekać" na ewentualne uruchomienie grzałki za pomocą przycisku.
Potrzebuje jakąś komendę, funkcję lub pętlę która "wyzeruje" wszystkie ustawienia, czyli taka która zadziała (wykona się) tylko jeden raz i nie będzie się wykonywać za każdym kolejnym razem pomimo tego że zagnieżdżona jest w pętli.
Czyli krótko - potrzebuję aby np. komenda:
digitalWrite(pin, LOW);
wykonała się tylko raz pomimo tego że znajduje się w pętli.
Nie mam pojęcia jak to zrobić.
Bardzo proszę o pomoc.
Dopiero zaczynam przygodę z Arduino i jeszcze wiele muszę się nauczyć ale stworzyłem program do sterowania solarnym podgrzewaczem wody.
Pokrótce program działa w następujący sposób:
- w sposób ciągły dokonywany jest pomiar temperatury wody i wyświetlany na wyświetlaczu LCD
- program może pracować w dwóch trybach:
1. Tryb auto gdzie w momencie przekroczenia zadanej temperatury (np. 85 st) automatycznie włącza się pompa chłodząca podgrzewacz a w momencie zbyt niskiej temperatury (np. 35 st) włącza się grzałka podgrzewająca wodę
2. Tryb manual w tym trybie nie włącza się nic automatycznie ale za pomocą przycisków można uruchomić zarówno pompę jak i grzałkę
Przełączanie pomiędzy trybami zrobiłem za pomocą przełącznika bistabilnego - nie przycisku (stale włączony jest tryb auto lub manual w zależności od pozycji przełącznika), Takie rozwiązanie pozwala uruchomić ostatnio używany tryb pracy np. po zaniku prądu, ponownym włączeniu urządzenia.
Problem w tym że po przełączeniu z trybu auto na manual program nadal trzyma wartości z trybu auto a chcę żeby zostały one jak gdyby "wyzerowane" np. jeśli w tym momencie jesteśmy w trybie auto Auto i grzałka jest załączona to po przełączeniu w tryb Manual powinna ona zostać automatyczny wyłączona i program powinien "czekać" na ewentualne uruchomienie grzałki za pomocą przycisku.
Potrzebuje jakąś komendę, funkcję lub pętlę która "wyzeruje" wszystkie ustawienia, czyli taka która zadziała (wykona się) tylko jeden raz i nie będzie się wykonywać za każdym kolejnym razem pomimo tego że zagnieżdżona jest w pętli.
Czyli krótko - potrzebuję aby np. komenda:
digitalWrite(pin, LOW);
wykonała się tylko raz pomimo tego że znajduje się w pętli.
Nie mam pojęcia jak to zrobić.
Bardzo proszę o pomoc.