(25-11-2019, 12:51)Krzaczek napisał(a): Semi bardzo Ci dziękuję za odpowiedź. Zagłębię się w temat przerwań i spróbuję zrobić tak jak mi zasugerowałeś. Jeżeli już zrobię to oczywiście w odpowiedzi udostępnię programJak chcesz aby program był bardziej pro (na Arduino to raczej niemożliwe) to RTC powinien byc w uC (programowy) synchronizowany zewnętrzym RTC. W razie problemów z zewnętrznym RTC, wewnętrzny nadal działa a program sygnalizuje problem.
Obsługa I2C na AVR też wymagała by zmiany. W praktyce arduinowe libs won i trzeba napisać swoje, odporne na status F8 i dodać funkcję "reanimacji" blokady I2C przez slave.
Te dwie modyfikacje (tak z 1 dzień roboty) zbliżą program do bardziej niezawodnego.
(25-11-2019, 17:19)Agregacik napisał(a): to przez minutę jak przyjdzie czas załączania lub wyłączania nie będzie można przyciskami gasić lub zapalać lampy.Jak dla mnie nie do zaakceptowania. Modyfikuje soft, w którym czasem (przez arduinowe libs) program nie reaguje przez ponad 5 sekund. To potrafi człowieka doprowadzić do wściekłości a co dopiero 60 sekund.
(25-11-2019, 17:19)Agregacik napisał(a): Przerwanie można wykorzystać do sterowania rozjaśnianiem i ściemnianiem ale ja bym w pierwszej wersji zastosował delay (10). Mało eleganckie ale jak program tylko to robi co opisałeś to wystarczy.Delay można zrobić na początku, jak działa, to jak najszybciej wywalić to.
Niestety, w Arduino nie da się (nie jest łatwo) wywalić wszystkie delay i "while ( zdarzenie ), bo są one w bibliotekach :-( Taki wątpliwy urok Arduino.
Nawet tak prosty projekt, jak sterowanie światełkiem w akwarium może być dużym wyzwaniem na Arduino jeśli ma to działać pewnie. Gdyby przyszło dodać nadzór przez ETH, rejestrację parametrów jak temp wody w czasie i inne bajery, to projekt jest praktycznie nie do zrealizowania na Arduino z wykorzystaniem jednego uC a jak już na pewno pochłonie bardzo ale to bardzo dużo czasu więc szybciej i lepiej zrobić odcinając się od Arduino.