Информация для общего развития:
и конечно энергонезависимую память FLASH которая при правильном использовании не дает контроллеру "забывать" кто он и что должен сделать/доделать :)
В основе модулей Ардуино лежит AVR-овские процессоры серии MEGA. Это достаточно надежные и не дорогие процессоры. Первый процессор был выпущен в далеком 1996 году и до сих пор он остается востребованным. Особенность архитектуры позволяет микроконтроллеру выполнять большинство команд за один такт, это значит что при частоте тактового генератора в 16МГц контроллер выполняет примерно 16 миллионов операций в секунду :)
Еще большим плюсом этого контроллера является его богатая периферия. Каждый контроллер имеет в своем арсенале:
- аналого цифровые преобразователи,
- цифро аналоговые преобразователи (PWM/ШИМ),
- аналоговые компараторы,
- двунаправленные порты ввода-вывода,
- UART - универсальный асинхронный приемопередатчик,
- TWI (i2c) - двухпроводный последовательный интерфейс,
- до 4-х таймеров/счетчиков
Теперь вернемся к нашему проекту.
Итак структура программы проста и основана на событиях сгенерированных из вне или самой программой.
Внешние события это:
- IN-x - состояния входных портов;
- EX-x - внешние события, полученные от периферийных устройств Ардуино;
- SMS-x - принятые СМС сообщения модулем GSM;
- AL-x - событие совпадение временного интервала (будильник);
- RF-x - считанные ключи RFID-ридера;
- События сгенерированные от АЦП (аналого цифрового преобразователя), термометров, датчиков влажности.
И события сгенерированные самой программой:
- Cnt-x - состояние программных счетчиков;
- M-x - состояние булевыx маркеров;
- Out-x - состояние выходов контроллера;
- Tmr-x - состояние программных таймеров.
Написание программы заключается в отправки результата логические операции (И, ИЛИ, НЕ), над выбранными вами событиями, в указанный вами выходной порт Out-x.