Аналоговые часы на вольтметрах

Тема в разделе "Arduino & Shields", создана пользователем Smile88, 7 янв 2020.

  1. Smile88

    Smile88 Нуб

    Приветствую всех!
    Собрал проект http://bestdiy.ru/chasy-na-analogovyh-strelochnyh-voltmetrah-svoimi-rukami.html
    залил скетч, в скетче ошибка, при снятии питания, либо при ресете, к часам и минутам добавляется по значению, т.е +1 к часам и минутам после снятия и подачи напряжения на плату ардуино.
    Код:
    Код (C++):
    #include <iarduino_RTC.h> //подключение библиотеки
    iarduino_RTC   _RTC1(RTC_DS1302, 10, 8, 9); //RTC модуль

    int _gtv1; //минуты
    int _gtv2; //часы
    byte _RTC1_GetTime1_HourOut = 0;
    byte _RTC1_GetTime1_MinOut = 0;
    byte _RTC1_GetTime1_SecOut = 0;
    int _swi1; //минут
    bool _bounseInputD4S = 0;
    bool _bounseInputD4O = 0;
    unsigned long _bounseInputD4P = 0UL;
    bool _RTCST_Ost2 = 0;
    bool _RTCST_Ost1 = 0;
    int _swi2; //часы
    bool _bounseInputD7S = 0;
    bool _bounseInputD7O = 0;
    unsigned long _bounseInputD7P = 0UL;
    void setup()
    {
    _RTC1.begin();
    _RTC1.period(1);
    pinMode(4, INPUT_PULLUP);
    pinMode(7, INPUT_PULLUP);
    pinMode(6, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(3, OUTPUT);

    _bounseInputD4O =  digitalRead(4);
    _bounseInputD7O =  digitalRead(7);
    }
    void loop()
    {
    bool  _bounceInputTmpD4 =  (digitalRead (4));

    if (_bounseInputD4S)
        {
         if (millis() >= (_bounseInputD4P + 40))
             {_bounseInputD4O= _bounceInputTmpD4; _bounseInputD4S=0;}
         }
    else
        {
         if (_bounceInputTmpD4 != _bounseInputD4O )
             {_bounseInputD4S=1; _bounseInputD4P = millis();}
          }
    bool  _bounceInputTmpD7 =  (digitalRead (7));

    if (_bounseInputD7S)
        {
         if (millis() >= (_bounseInputD7P + 40))
             {_bounseInputD7O= _bounceInputTmpD7; _bounseInputD7S=0;}
         }
    else
        {
         if (_bounceInputTmpD7 != _bounseInputD7O )
             {_bounseInputD7S=1; _bounseInputD7P = millis();}
          }

    //digitalWrite(3, HIGH);
    //digitalWrite(6, HIGH);
    //digitalWrite(5, HIGH);

    //Плата:1
    analogWrite(3, (_gtv2)*(21.25));
    _RTC1.gettime();
    _RTC1_GetTime1_HourOut = _RTC1.Hours;
    _RTC1_GetTime1_MinOut = _RTC1.minutes;
    _RTC1_GetTime1_SecOut = _RTC1.seconds;
    analogWrite(A1, (_RTC1_GetTime1_SecOut)*(4.25));
    _gtv1 = _RTC1_GetTime1_MinOut;
    _gtv2 = _RTC1_GetTime1_HourOut;
    analogWrite(5, (_gtv1)*(4.25));
    if((_gtv1) > (58))
    {_swi1=0;}
    else
    {_swi1=(1)+(_gtv1);}
    if (_bounseInputD4O)
    { if (!(_RTCST_Ost1))
    {
    _RTC1.settime(-1, (_swi1), -1, -1, -1, -1, -1);
    _RTCST_Ost1 = 1;
    }}
    else
    { _RTCST_Ost1 = 0;}
    if((_gtv2) > (22))
    {_swi2=0;}
    else
    {_swi2=(1)+(_gtv2);}
    if (_bounseInputD7O)
    { if (!(_RTCST_Ost2))
    {
    _RTC1.settime(-1, -1, (_swi2), -1, -1, -1, -1);
    _RTCST_Ost2 = 1;
    }}
    else
    { _RTCST_Ost2 = 0;}
    }
    В коде явно ошибка, в нижней части (установка времени). Люди знающие, помогите пожалуйста.
    Сильно не пинайте, новичек в освоении ардуино
     
    Последнее редактирование: 7 янв 2020
  2. parovoZZ

    parovoZZ Гуру

    Для кода на форуме предусмотрены специальные теги. Эту портянку из plaintext никто читать не будет.
     
    Smile88 нравится это.
  3. Smile88

    Smile88 Нуб

    Спасибо, буду знать
     
  4. Daniil

    Daniil Гуру

    Ужас, увидел код и решил "ну нафик такое читать". Пока листал вверх, то заметил, что swi1 и swi2 запоминаются с (1)+число. Может, в этом проблема?
     
  5. DetSimen

    DetSimen Guest

    странный ты, ТС. Код тебе писал flprog, а вопросы по нему ты задаешь нам...
     
    Asper Daffy нравится это.
  6. Asper Daffy

    Asper Daffy Иксперд

    Ну, уж в часах-то можно было без этой байды обойтись!
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Эх!Перекуем вольтметры на часы!
     
  8. Asper Daffy

    Asper Daffy Иксперд

    На это много ума не надо. А вот обратную задачу слабо решить?
     
    DetSimen нравится это.