void setup() и подпрограммы
- Войдите на сайт для отправки комментариев
Ср, 17/09/2014 - 12:01
Добрый день! Я начинающий пользователь arduino, посему прошу не ругать за вопрос. Возможно ли из void setup() вызывать свою подпрограмму? К примеру так:
#include <EEPROM.h> int mstate; int addr = 0; // адрес ячейки int mon = 1; // матрас включен int moff = 0; // матрас выключен int mled = 13; // светодиод матраса int tled = 14; // светодиод передачи int relay = 7; // Определяем на каком пине находятся реле void setup() { pinMode(mled, OUTPUT); pinMode(tled, OUTPUT); pinMode(relay, OUTPUT); void reststate(); } void loop() { ... } void reststate() { mstate = EEPROM.read(addr); if (mstate == 1) { matresson(); } else if (mstate == 0) { matressoff(); } }
Пардон. Ошибся:
И можно ли в строке pinMode указать несколько пинов (mled, tled, relay)?
У вас какой то неверный подход. Вы попробуйте сперва, а если не получится, тогда и спрашивайте. Или вы думаете что программировать это вдумчиво набратьтекст программы и с первого раза ее откомпилировать? Нет. Отладка, отладка и еще раз отладка.
Моя ардуинка еще едет. Пытаюсь код писать заранее. Простите за вопрос(
Пример кода в ArduinoIDE скомпилился без ошибок.
http://arduino.ru/Reference/Setup
http://arduino.ru/Reference/Loop
Прочитайте про это: setup выполняется один раз, а затеи loop до посинения....
А мне и надо один раз при старте
И можно ли в строке pinMode указать несколько пинов (mled, tled, relay)?
можно
компилировать без ардуины никто не запрещал
можно. setup() и loop() - с точки зрения компилятора это обычные функции. Все что можно с обычными - можно с ними. Можно и другие функции вызывать, и переменные объявлять и проч.
Их "особость" только в одном: setup() вызовется один раз, при старте, а loop() - будет до посинения дергаться. Других отличий - нет.
Вообщем, на самом деле, в любом скетче, у вас есть еще одна функция, вы ее не видите, но она есть, вот типа такой:
Вот эта функция и вызывается при старте контроллера. А уж она дергает setup(), а потом в бесконечном цикле loop();