Приветствую всех! Собрал проект 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;} } В коде явно ошибка, в нижней части (установка времени). Люди знающие, помогите пожалуйста. Сильно не пинайте, новичек в освоении ардуино
Ужас, увидел код и решил "ну нафик такое читать". Пока листал вверх, то заметил, что swi1 и swi2 запоминаются с (1)+число. Может, в этом проблема?