Таймер времени

Тема в разделе "Arduino & Shields", создана пользователем ffffff, 28 мар 2018.

  1. ffffff

    ffffff Нерд

    Доброго времени суток, написал скетч на открывание и закрывание сервы от кнопки , также хочу добавить таймер который будет каждые 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 секунды
    }
    }
     
  2. b707

    b707 Гуру

    используйте миллис
     
  3. ffffff

    ffffff Нерд

    да я бы с радостью но как
     
  4. b707

    b707 Гуру

    Легко. В три шага:

    В начальный момент запоминаете текущее значение millis
    Код (C++):
    long prevmillis = millis();
    задаем интервал 12 часов
    Код (C++):
    long interval = 12* 60 * 60 * 1000u;
    а потом в loop() все время проверяете, не прошло ли это время:
    Код (C++):
    If (( millis() - prevmillis) > interval) {
    и все.
     
    ffffff, arkadyf и Tomasina нравится это.
  5. ffffff

    ffffff Нерд

    ок спс