Witam
To mój pierwszy projekt na Arduino który ma jedno zadanie: włączanie/wyłączanie przekaźnika o określonych godzinach i w konkretnych dniach. Aby móc zmieniać godziny bez podpierania się zmianami sketcha i wgruwaniem go do mokroprocesora, postanowiłem wykorzystać czytnik kartSD z którego Arduino ma pobierać dane wejściowe (dzień tygodnia, godzinę minutę i sekundę włączenia/wyłączenia) z pliku setting6.txt o następującej treści:
exINT-2=0:23:59:15:111
exINToff-2=0:0:0:11:222
exINT-3=0:23:59:25:333
exINToff-3=0:0:0:1:444
Na wstępie zmodyfikowałem sketch ze strony Korneliusza Jarzebskiego https://github.com/jarzebski/Arduino-DS3231 i powstał program który w zadanych czasach włącza/wyłącza odbiorniki podpięte pod przekaźniki:
Następnie powstał drugi program który pobiera dane wejściowe (int nralarm, int DayOfWeek (dow), int godzina, int minuta, int sekunda).
Gdy oba programy udało się wstępnie skończyć, powstał poniższy zlepek programu, który działa poprawnie ale tylko na Arduino_Mega. W założeniu układ ma pracować na NANO/UNO ale
ArduinoIDE przy wgrywaniu sketcha do UNO/NANO informuje o małej ilości pamięci, i możliwej niestabilności.
Po uruchomieniu programu na ArduinoNANO kod się wykrzacza 🙁 .
Skecz programu w załączniku.
I tu jest moje zasadnicze pytania:
1)Jakie mogą być ewentualne sposoby na zminimalizowanie zajętości pamięci w tym konkretnym kodzie?
2)Czy pomocne byłoby zapisywanie zmiennych do EEPROMu? -wg mnie program ma potencjał....można dopisać kolejne alarmy aż do wyczerpania wyjść NANO/UNO ale skoro już teraz, przy 4 alarmach jest problem z pamięcią.....?!?!.
3)Proszę o ewentualne sugestie dotyczące optymalizacji tego kodu.
Pozdrawiam
Tomek
txtToSettings6_i_timer2a-temp-optymalizacja.zip