• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zmiana stanów logicznych oświetlenia
#11
(25-11-2019, 12:06)Krzaczek napisał(a): Jeżeli chodzi o aplikację to wszystko działa dobrze. Problem mam tylko z tym manualnym włączeniem i wyłączeniem.
Źle rozwiązałeś porównywanie czasu włączenia i wyłączenia o zadanym czasie. Używasz ">" i "<" a to rodzi problemy. Powinno być "==" ale jak loop wykonuje się długo to będą problemy. Najlepiej obsługiwać RTC na przerwaniu, wtedy warunek "==" na pewno kiedyś wsie wykona (nie będzie pominięty) i co ważne, wykona się raz (zakładam przerwania RTC co sekundę). To rozwiązanie jest najlepsze.
Inna opcja to np porównywać przez > i < oraz ustawianie flagi aby porównanie wykonało się raz, tyle, że to komplikuje kod.

Zmiana PWM dla ściemniania i rozjaśniania też powinna być zrealizowana na przerwaniach. W tym wypadku wystarczy przerwanie 1ms. Można skorzystać z przerwania "systemowego" od T0 (nie napisałeś co to za Arduino, zakładam, że na AVR).

Zrób RTC na przerwaniach, problemy znikną a kod będzie prostszy. Manualne załączenie lampki to ustawienie/skasowanie flagi, która w przerwaniu 1ms rozjaśni/ściemni oświetlenie. Tak samo porównanie RTC operuje na fladze. Prosto i skutecznie.
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Zmiana stanów logicznych oświetlenia - przez semi - 25-11-2019, 12:29

Skocz do:


Przeglądający: 1 gości