Часы на городской ратуше

Тема в разделе "Arduino & Shields", создана пользователем technomag, 3 июл 2016.

  1. Vetrinus

    Vetrinus Гик

    Я код имел ввиду
     
  2. fogary

    fogary Гик

    Лучше, в обработчике прерывания только устанавливать переменную-флаг срабатывания будильника, а обработку события и сброс этого флага перенести в функцию loop().
     
  3. technomag

    technomag Нуб

    Только Ваш код, больше ничего
    #include <Stepper.h>
    #include <RTC.h>
    #define STEPS 200 // 1 шаг = 1 градус
    Stepper stepper(STEPS, 3, 4); // пины на ардуино
    byte current_minute;
    RTC time;

    void setup()
    {
    stepper.setSpeed(500); // скорость движения вала
    time.begin(RTC_DS3231); //Либо другой
    current_minute=atoi(time.gettime("i"));
    }

    void loop()
    {
    if(atoi(time.gettime("i"))!=current_minute){//Сравниваем текущую минуту с записанной, если не сошлось
    stepper.step(3200); // выполняет пол оборота вала согласно расчетам редуктора стрелок часов (секундной стрелки нет)
    current_minute=atoi(time.gettime("i"));//Обновляем текущее значение минуты.
    }
    }
     
  4. Vetrinus

    Vetrinus Гик

    Вообще, когда я писал этот код, я подразумевал, что
    Код (C++):
    stepper.step(3200); // выполняет пол оборота вала согласно расчетам редуктора стрелок часов (секундной стрелки нет)
    сдвинет стрелку на нужную величину.
    Этого не происходит?
     
  5. technomag

    technomag Нуб

    нет, только двигатель делает рывок похожий на движение секундной стрелки, а у Вас есть скайп или вайбер? Я бы Вам это все показал как оно работает.
     
  6. Vetrinus

    Vetrinus Гик

    Скайп в подписи
     
  7. technomag

    technomag Нуб

    Запустились часы на городской ратуше, благодаря товарищу Ventirus который любезно помог с кодом, огромное ему спасибо!!!!!!!!!!!!!!!!

    #include <Stepper.h>
    #include <RTC.h>
    #define STEPS 200 // 1 шаг = 1 градус
    Stepper stepper(STEPS, 3, 4); // пины на ардуино
    byte current_minute;
    RTC time;
    unsigned long timer;

    void setup()
    {
    Serial.begin(9600);
    stepper.setSpeed(500); // скорость движения вала
    time.begin(RTC_DS3231); //Либо другой
    current_minute = atoi(time.gettime("i"));
    }

    void loop()
    {
    if (atoi(time.gettime("i")) != current_minute) { //Сравниваем текущую минуту с записанной, если не сошлось
    Serial.println("Pass a minute...");
    Serial.println("timer start...");
    timer=millis();
    stepper.step(3200); // выполняет пол оборота вала согласно расчетам редуктора стрелок часов (секундной стрелки нет)
    Serial.print("Timer value is ");
    Serial.println(millis()-timer);
    current_minute = atoi(time.gettime("i")); //Обновляем текущее значение минуты.
    }
    }
     
    Oldindianamen нравится это.