Доброго времени суток, написал скетч на открывание и закрывание сервы от кнопки , также хочу добавить таймер который будет каждые 12 часов также производить те же действия и сбрасывать таймер , но не могу понять как это сделать толи с помощью delay, то ли mills или же как то с переменной.Навыки программирования начальные , прошу помощи , совета. Сам скетч const int buttonPin = 12; // номер входа, подключенный к кнопке const int ledPin = 13; // номер выхода светодиода // переменные int buttonState = 0; // переменная для хранения состояния кнопки #include <Servo.h> //используем библиотеку для работы с сервоприводом Servo servo; //объявляем переменную servo типа Servo void setup() { servo.attach(9); //привязываем привод к порту 9 // инициализируем пин, подключенный к светодиоду, как выход pinMode(ledPin, OUTPUT); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin, INPUT); } void loop(){ // считываем значения с входа кнопки buttonState = digitalRead(buttonPin); // проверяем нажата ли кнопка // если нажата, то buttonState будет HIGH: if (buttonState == HIGH) { // включаем светодиод // digitalWrite(ledPin, HIGH); servo.write(0); //ставим вал под 180(открытие сервы) delay(2000); //ждем 2 секунды servo.write(160); //ставим вал под 0 (закрытие закрытие) //delay(5000); //ждем 2 секунды } }
Легко. В три шага: В начальный момент запоминаете текущее значение millis Код (C++): long prevmillis = millis(); задаем интервал 12 часов Код (C++): long interval = 12* 60 * 60 * 1000u; а потом в loop() все время проверяете, не прошло ли это время: Код (C++): If (( millis() - prevmillis) > interval) { и все.