Часы (DS3231) с будильником (Arduino)

Часы с будильником состоят из платы Arduino Nano (Uno), LCD индикатора 1602 и модуля часов реального времени DS3231 (ZS-042). Помимо текущего времени на экране индикатора отображается дата, день недели, месяц, год и температура. Будильник в часах один, он позволяет выставить время срабатывания в минутах и часах, так же предусмотрено его отключение, а так же работа каждый день, в будние дни и по выходным. Установка времени срабатывания будильника осуществляется кнопками «К», «+» и «-«. Сигнал будильника звучит в течении одной минуты, но если нажать на одну из кнопок «+» или «-«. сигнал будильника можно прервать. Время срабатывания будильника и режим его работы сохраняются в энергонезависимой памяти.

Устанавливать время на часах не нужно, так как предусмотрена коррекция времени при прошивке микроконтроллера. Для этого необходимо раскомментировать строчку:

// clock.setDateTime(__DATE__, __TIME__);

Далее залейте скетч в плату, закомментируйте строчку и залейте скетч повторно.

#include <Wire.h>
#include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip // DS3231.zip
DS3231 clock;RTCDateTime DateTime;
#include <LiquidCrystal.h>  
#include <EEPROM.h> //#include <EEPROMex.h> 
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7
 
int k,m,h,i,w,reg,ton;
byte rom0,rom1,rom2;
unsigned long eeprom;
 
void setup(){Serial.begin(9600);
   lcd.begin(16,2);// LCD 16X2 
   Wire.begin(); clock.begin();
   pinMode(2,INPUT);pinMode(3,INPUT);pinMode(4,INPUT);
 //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  rom0 = EEPROM.read(0);if(rom0>59){EEPROM.update(0,0);}
  rom1 = EEPROM.read(1);if(rom1>23){EEPROM.update(1,0);}
  rom2 = EEPROM.read(2);if(rom2>3){EEPROM.update(2,0);}
  m=rom0;h=rom1;w=rom2;
}
 
void loop(){i++;if(i>4){i=0;}
 if(digitalRead(2)==HIGH){k++;reg=1;delay(300);}if(k>3){k=0;reg=0;}
 
 if(reg==1) {
 if(k==1){
 if(digitalRead(3)==HIGH){m++;}if(m>59){m=59;}
 if(digitalRead(4)==HIGH){m--;}if(m<0){m=0;}}
 if(k==2){
 if(digitalRead(3)==HIGH){h++;}if(h>23){h=23;}
 if(digitalRead(4)==HIGH){h--;}if(h<0){h=0;}}
 if(k==3){
 if(digitalRead(3)==HIGH){w++;delay(300);}if(w>3){w=0;}
 if(digitalRead(4)==HIGH){w--;delay(300);}if(w<0){w=3;}
 } 
 lcd.setCursor(0,0);lcd.print("Alarm ");
 if(i==1&&k==2){lcd.print("  ");}else{if(h < 10 ){lcd.print("0");}lcd.print(h);} lcd.print(":");
 if(i==1&&k==1){lcd.print("  ");}else{if(m < 10 ){lcd.print("0");}lcd.print(m);} 
 lcd.setCursor(0,1);
 if(i==1&&k==3){lcd.print("                 ");}
 if(w==0){lcd.print("every day");}  //каждый день 1234567
 if(w==1){lcd.print("on weekdays");}//по будням 12345
 if(w==2){lcd.print("on weekends");}//по выходным 67
 if(w==3){lcd.print("off");}
 rom0=m;rom1=h;rom2=w;
 eeprom=0;
 }
 
 if(reg==0){if(eeprom==1){EEPROM.update(0,rom0);EEPROM.update(1,rom1);EEPROM.update(2,rom2);}
 DateTime=clock.getDateTime();   // Считываем c часов текущие значения даты и времени в сущность DateTime
 lcd.setCursor(0,0);
 lcd.print(clock.dateFormat("H:i:s ",DateTime));// выводим часы, минуты и секунды
 lcd.print(clock.readTemperature(),1);lcd.print((char)223);lcd.print("C");// выводим значение температуры
 lcd.setCursor(0,1);lcd.print(clock.dateFormat("D d M Y", DateTime));// выводим день недели, дату, месяц и год
 }
if(digitalRead(3)==HIGH||digitalRead(4)==HIGH){ton=1;}
if(DateTime.hour*60+DateTime.minute!=h*60+m){ton=0;}
 
 if(w==0){pic();}
 if(w==1&&(DateTime.dayOfWeek<6)){pic();}
 if(w==2&&(DateTime.dayOfWeek>5)){pic();}
 
 eeprom++;
 delay(200);
 lcd.clear();
 
}
 
void pic(){if(ton==0&&(DateTime.hour*60+DateTime.minute==h*60+m)){tone(5,1200,500);delay(500);}}

// форум - http://forum.rcl-radio.ru/viewtopic.php?pid=927#p927

Второй вариант часов с будильником выполнен с использованием четырех разрядного семисегментного индикатора на базе драйвера TM1637 (модуль TM1637).

При нажимании кнопки «К» происходит перебор элементов меню, вывод секунд, даты и месяца, температуры, установка времени будильника, включение или отключение будильника, яркость индикатора.

#include <Wire.h>
#include <TM1637Display.h>
#include <DS3231.h>
#include <EEPROM.h>  //#include <EEPROMex.h>
DS3231 clock; // ПОДКЛЮЧЕНИЕ DS3231 SDA, SCL, SQW / A4, A5, D6
RTCDateTime DateTime;
TM1637Display display(4, 5);// ПОДКЛЮЧЕНИЕ TM1637 CLK,DIO / 4, 5
 
int k,alarm_m,alarm_h;
byte w = 1,x,y,z,menu,ton,on=1;
uint8_t date_s[]{0,0,0,0};// second
uint8_t date_t[]{0x78,0,0,0};// t
uint8_t date_on[]{0,0,0x3f,0x37};// ON
uint8_t date_off[]{0,0x3f,0x71,0x71};// OFF
 
void setup() {
  // clock.setDateTime(__DATE__, __TIME__);
   display.setBrightness(1);// яркость TM1637 0-7
   Wire.begin(); clock.begin();
   pinMode(6,INPUT);pinMode(10,INPUT);pinMode(11,INPUT);pinMode(12,INPUT);
   alarm_m = EEPROM.read(0);alarm_h = EEPROM.read(1);z = EEPROM.read(3);// ЧТЕНИЕ EEPROM
}
 
void loop() {
     DateTime = clock.getDateTime(); // ОПРОС ВРЕМЕНИ
     k = DateTime.hour*100+DateTime.minute; // ВРЕМЯ КАК ЧИСЛО ННММ
 
if(digitalRead(6) == HIGH){x = 0x40;}else{x = 0x00;} // МИГАНИЕ ДВОЕТОЧИЯ 
if(digitalRead(10) == HIGH){menu++;delay(300);if(menu > 6){menu = 0;}} // ПЕРЕБОР МЕНЮ
 
if(menu == 0){y = true;if(w == 0){EEPROM.update(0,alarm_m);EEPROM.update(1,alarm_h);EEPROM.update(3,z);}
w = 1;}  // ПРИ ВЫХОДЕ ИЗ МЕНЮ ОБНОВЛЕНИЕ EEPROM
 
if(menu == 1){k = DateTime.second;date_s[2] = display.encodeDigit((k/10)%10);
date_s[3] = display.encodeDigit((k%10)%10);display.setSegments(date_s);
} // ВЫВОД СЕКУНД
 
if(menu == 2){k = DateTime.day*100 + DateTime.month;x = 0x40;} // ВЫВОД ДАТЫ И МЕСЯЦА
 
if(menu == 3){k = clock.readTemperature();date_t[2] = display.encodeDigit((k/10)%10);
date_t[3] = display.encodeDigit((k%10)%10);display.setSegments(date_t);} // ВЫВОД ТЕМПЕРАТУРЫ
 
if(menu == 4){y = true;x = 0x40;k = alarm_h*100+alarm_m; // УСТАНОВКА БУДИЛЬНИКА
if(digitalRead(12) == HIGH){alarm_m++;delay(300);}if(alarm_m > 59){alarm_m = 0;} // МИНУТЫ БУДИЛЬНИКА
if(digitalRead(11) == HIGH){alarm_h++;delay(500);}if(alarm_h > 23){alarm_h = 0;} // ЧАСЫ БУДИЛЬНИКА
w = 0;}
 
if(menu == 5){
if(digitalRead(11) == HIGH){on=1;delay(300);}if(on==1){display.setSegments(date_on);} // БУДИЛЬНИК ВКЛЮЧЕН
if(digitalRead(12) == HIGH){on=0;delay(300);}if(on==0){display.setSegments(date_off);} // БУДИЛЬНИК ВЫКЛЮЧЕН
}
 
if(menu == 6){y = false;x = 0x00;k = z; // НАСТРОЙКА ЯРКОСТИ ИНДИКАТОРА
if(digitalRead(11) == HIGH){z++;delay(500);}if(z > 7){z = 0;}
if(digitalRead(12) == HIGH){z--;delay(500);}if(z > 8){z = 7;}
w = 0;}
 
if(digitalRead(11)==HIGH||digitalRead(12)==HIGH){ton=1;} // ПРИ НАЖАТИИ НА КНОПУ + ИЛИ - ПРЕРЫВАЕТСЯ СИГНАЛ БУДИЛНИКА
if(DateTime.hour*100+DateTime.minute!=alarm_h*100+alarm_m){ton=0;}
if(on==1){pic();}
 
display.setBrightness(z);
if(menu == 3 || menu == 5 || menu == 1){}else{display.showNumberDecEx(k,x,y);}
 
}
void pic(){if(ton==0&&(DateTime.hour*100+DateTime.minute==alarm_h*100+alarm_m)){tone(7,1000,500);delay(1000);}} // СИГНАЛ БУДИЛЬНИКА, 7 ЦИФРОВОЙ ВЫХОД

 

Comments

  1. в этом режиме , работает но на некоторых пунктах меню как будто друг на друга ложиться

    if(digitalRead(9) == HIGH){menu1++;delay(300);menu=100;if(menu1 > 3){menu1 = 0;}} // ПЕРЕБОР настроек редактирования времени
    if(digitalRead(10) == HIGH){menu++;delay(300);menu1=100;if(menu > 6){menu = 0;}} // ПЕРЕБОР МЕНЮ

    сделал так ,все хорошо работает
    if(digitalRead(9) == HIGH){menu1++;delay(300);menu=100;if(menu1 > 3){menu1 = 0;}} // ПЕРЕБОР настроек редактирования времени
    if(digitalRead(10) == HIGH){menu++;delay(300);if(menu > 6){menu = 0;}} // ПЕРЕБОР МЕНЮ

  2. к примеру
    /// редактирование часов +-
    if(menu1 == 4){y = true;x = 0x40;k = set_h*100+set_m; //выводим на индикатор часы
    if(digitalRead(12) == HIGH){set_h++;delay(300);w1 = 0;}if(set_h > 23){set_h = 0;}// прибавляет часы
    if(digitalRead(11) == HIGH){set_h—;delay(300);w1 = 0;}if(set_h 59){set_m = 0;}// прибавляет минуты
    if(digitalRead(11) == HIGH){set_m—;delay(300);w1 = 0;}if(set_m < 0){set_m = 0;} // убавляем минуты
    }
    при установки получается одно и тоже , тока меняется установки, я пытался сделать если устанавливаю часы чтобы выводилось значение часов 14 а заместо минут — в целом 14:—, создал uint8_t date_f[]{0,0,0×40,0x40};// 0X40 выводит —, подставить так и не получилось

  3. Добрый вечер.Есть небольшая проблемка, выставляю часы в полночь два нуля есть все нормально, отключаю питание они пропадают, захожу в настройку появляются , выключаю питание изсчезают снова, вот код, может напутал что при изменении значений

  4. полный лог ошибки:

    sketch_sep26a:44:113: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:114: error: stray ‘\245’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:115: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:116: error: stray ‘\222’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:117: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:118: error: stray ‘\230’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:119: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:120: error: stray ‘\233’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:121: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:122: error: stray ‘\230’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:123: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:124: error: stray ‘\235’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:125: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:126: error: stray ‘\230’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:128: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:129: error: stray ‘\221’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:130: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:131: error: stray ‘\243’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:132: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:133: error: stray ‘\224’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:134: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:135: error: stray ‘\230’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:136: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:137: error: stray ‘\233’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:138: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:139: error: stray ‘\254’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:140: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:141: error: stray ‘\235’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:142: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:143: error: stray ‘\230’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:144: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:145: error: stray ‘\232’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:146: error: stray ‘\320’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:147: error: stray ‘\220’ in program
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:7:1: error: ‘TM1637’ does not name a type
    TM1637 Display display ( 4 , 5 ) ; // ПІДКЛЮЧЕННЯ TM1637 CLK,DIO / 4, 5
    ^~~~~~
    ‘void setup()’:
    sketch_sep26a:18:4: error: ‘display’ was not declared in this scope
    display. setBrightness ( 1 ) ; // Яскравість TM1637 0-7
    ^~~~~~~
    delay
    sketch_sep26a.ino: In function ‘void loop()’:
    sketch_sep26a:34:60: error: ‘display’ was not declared in this scope
    if ( menu == 1 ) { k = DateTime. second ; date_s [ 2 ] = display. encodeDigit ( ( k / 10 ) % 10 ) ;
    ^~~~~~~
    note: suggested alternative: ‘delay’
    if ( menu == 1 ) { k = DateTime. second ; date_s [ 2 ] = display. encodeDigit ( ( k / 10 ) % 10 ) ;
    ^~~~~~~
    delay
    sketch_sep26a:40:72: error: ‘display’ was not declared in this scope
    if ( menu == 3 ) { k = clock . readTemperature ( ) ; date_t [ 2 ] = display. encodeDigit ( ( k / 10 ) % 10 ) ;
    ^~~~~~~
    note: suggested alternative: ‘delay’
    if ( menu == 3 ) { k = clock . readTemperature ( ) ; date_t [ 2 ] = display. encodeDigit ( ( k / 10 ) % 10 ) ;
    ^~~~~~~
    delay
    sketch_sep26a:44:109: error: expected primary-expression before ‘/’ token
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:44:111: error: expected primary-expression before ‘/’ token
    if ( digitalRead ( 12 ) == HIGH ) { alarm_m ++ ; delay ( 300 ) ; } if ( alarm_m > 59 ) { alarm_m = 0 ;} / / ХВИЛИНИ БУДИЛЬНИКА
    ^
    sketch_sep26a:45:1: error: expected primary-expression before ‘if’
    if ( digitalRead ( 11 ) == HIGH ) { alarm_h ++ ; delay ( 500 ) ; } if ( alarm_h > 23 ) { alarm_h = 0 ; } // ГОДИННИК БУДИЛЬНИКА
    ^~
    sketch_sep26a:49:82: error: ‘display’ was not declared in this scope
    if ( digitalRead ( 11 ) == HIGH ) { on = 1 ; delay ( 300 ) ; } if ( on == 1 ) { display. setSegments ( date_on ) ; } // Будильник включений
    ^~~~~~~
    note: suggested alternative: ‘delay’
    if ( digitalRead ( 11 ) == HIGH ) { on = 1 ; delay ( 300 ) ; } if ( on == 1 ) { display. setSegments ( date_on ) ; } // Будильник включений
    ^~~~~~~
    delay
    sketch_sep26a:50:81: error: ‘display’ was not declared in this scope
    if ( digitalRead ( 12 ) == HIGH ) { on =0 ; delay ( 300 ) ; } if ( on == 0 ) { display. setSegments ( date_off ) ; } // Будильник вимкнений
    ^~~~~~~
    note: suggested alternative: ‘delay’
    if ( digitalRead ( 12 ) == HIGH ) { on =0 ; delay ( 300 ) ; } if ( on == 0 ) { display. setSegments ( date_off ) ; } // Будильник вимкнений
    ^~~~~~~
    delay
    sketch_sep26a:59:46: error: expected ‘)’ before ‘!’ token
    if ( DateTime. hour * 100 + DateTime. minute ! = alarm_h * 100 + alarm_m ) { ton = 0 ; }
    ^
    sketch_sep26a:62:1: error: ‘display’ was not declared in this scope
    display. setBrightness ( z ) ;
    ^~~~~~~
    delay
    exit status 1
    stray ‘\320’ in program

    1. Что именно не работает? Скетч загружается?
      clock.setDateTime(__DATE__, __TIME__); эту строку закомментировали. Ручная установка времени не работает?

  5. clock.setDateTime(__DATE__, __TIME__); эту строку розкоментировал и залил
    потом закоментировал и с нова залил
    вместо реального времени 00_00
    в ручную время не устанавливается

Добавить комментарий

Войти с помощью: