Редактирование скетча часов

Гость464
Offline
Зарегистрирован: 05.12.2021

Доброго времени суток  помогите пожалуйста переделать под жк экран 2004А V1,1 чтоб время было на 2 строки и подключить кнопки для настройки часов и даты и подскажите к каким выводам подключить кнопки

 

 

================================================

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

 

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Это залёт....

Гость464
Offline
Зарегистрирован: 05.12.2021
Гость464
Offline
Зарегистрирован: 05.12.2021

BOOM пишет:

Это залёт....

что не так ?

b707
Offline
Зарегистрирован: 26.05.2017

Гость464 пишет:

что не так ?

вам в оба ваших сообщения вставили ссылку - "что не так". Читайте, прежде чем постить.

Гость464
Offline
Зарегистрирован: 05.12.2021
#include <iarduino_RTC.h>  // подключаем библиотеку часов DS1302
iarduino_RTC time(RTC_DS1302,6,8,7);  // для модуля DS1302 - RST, CLK, DAT
#include <Wire.h>                             // подключаем библиотеку для устройств I2C 
#include <LiquidCrystal_I2C.h>       // подключаем библиотеку для дисплея
LiquidCrystal_I2C LCD(0x27,16,2);  // присваиваем имя дисплею
#include "SoftwareSerial.h" // подключаем библиотеку SoftwareSerial
#include "DFRobotDFPlayerMini.h" // подключаем библиотеку мп3 плеера
#include <dht11.h> // подключаем библиотеку датчика влажности и температуры
dht11 sensor;
#define DHT11PIN 2
const uint8_t PIN_button_SET  = 3;           // указываем номер вывода arduino, к которому подключена кнопка DOWN
const uint8_t PIN_button_UP   = 4;            // указываем номер вывода arduino, к которому подключена кнопка UP
const uint8_t PIN_button_DOWN = 5;           // указываем номер вывода arduino, к которому подключена кнопка SET
const uint8_t PIN_button_TMR  = 9;            // указываем номер вывода arduino, к которому подключена кнопка TMR
int SEC = 0; //переменная для таймера
int MIN = 0; //переменная для таймера
unsigned long timer;
byte w = 0;
SoftwareSerial mySoftwareSerial(10, 11); // 10 , 11 пин устанавливаем как SoftwareSerial RX, TX для плеера
DFRobotDFPlayerMini myDFPlayer;   // плеер мп3
void printDetail(uint8_t type, int value);
void setup() {
   delay(300);
   LCD.init();            // инициализация LCD дисплея
   LCD.backlight();  // включение подсветки дисплея
   time.begin();
    // time.settime(00, 22, 12, 24, 10, 21, 6); // установка времени, например  0  сек, 30 мин, 18 часов, 12, июня, 2020, дни недели(0-6)
  mySoftwareSerial.begin(9600);   //скорость порта
  if (!myDFPlayer.begin(mySoftwareSerial, true, false)) {  //Use softwareSerial to communicate with mp3.
    while(true){
      delay(0);   
   } }
  myDFPlayer.volume(28);  //громкость 0 to 30
  myDFPlayer.play(15); //трек играет при загрузке
  myDFPlayer.EQ(DFPLAYER_EQ_JAZZ); // Устанавливаем эквалайзер с настройками джаз
 
   pinMode(PIN_button_SET,  INPUT_PULLUP);           // устанавливаем режим работы вывода PIN_button_SET,  как "вход"
   pinMode(PIN_button_UP,   INPUT_PULLUP);            // устанавливаем режим работы вывода PIN_button_UP,  как "вход"
   pinMode(PIN_button_DOWN,  INPUT_PULLUP);          // устанавливаем режим работы вывода PIN_button_DOWN, как "вход"
   pinMode(PIN_button_TMR,   INPUT_PULLUP);          // устанавливаем режим работы вывода PIN_button_TMR,  как "вход"
}
void loop() {
   
   if (millis() % 1000 == 0) {  // если прошла 1 секунда выводим время на дисплей
       LCD.setCursor(0,1);   //место на дисплее
       LCD.print(time.gettime("d m y "));   //выводим дату
       LCD.setCursor(0,0);  //место на дисплее
       LCD.print(time.gettime("H:i:s"));   //выводим время
       int chk = sensor.read(DHT11PIN); // читаем датчик влажности и температуры
       LCD.setCursor(9,1);  //место на дисплее
       LCD.print("B");   //выводим знак влажность
       LCD.setCursor(10,1);  //место на дисплее
       LCD.print(sensor.humidity); //выводим влажность
       LCD.setCursor(13,1);  //место на дисплее
       LCD.print("t"); //выводим знак температуры
       LCD.setCursor(14,1);  //место на дисплее
       LCD.print (sensor.temperature); //выводим температуру
      delay(1);

   

      
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==8){    // если совпали часы
             myDFPlayer.play(1);  // воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==9){    // если совпали часы
             myDFPlayer.play(2);  // воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==10){    // если совпали часы
             myDFPlayer.play(3);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}    
       if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==11){    // если совпали часы
             myDFPlayer.play(4);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==12){    // если совпали часы
             myDFPlayer.play(5);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==13){    // если совпали часы
             myDFPlayer.play(6);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==14){    // если совпали часы
             myDFPlayer.play(7);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==15){    // если совпали часы
             myDFPlayer.play(8);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==16){    // если совпали часы
             myDFPlayer.play(9);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==17){    // если совпали часы
             myDFPlayer.play(10);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
              
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==18){    // если совпали часы
             myDFPlayer.play(11);  //  воспроизвести трек()
             LCD.backlight(); // включить подсветку
}}}
      if(time.seconds==0){                  // если в текущем времени 0 секунд
        if(time.minutes==00){     // если совпали минуты
          if(time.Hours==19){    // если совпали часы
             myDFPlayer.play(12);  //  воспроизвести трек()
             LCD.noBacklight(); // отключить подсветку
}}}
      if(time.seconds==0){     //  новый год , если в текущем времени 0 секунд
        if(time.minutes==55){     // если совпали минуты
          if(time.Hours==23){    // если совпали часы
            if(time.day==31){    // если совпали дни 
              if(time.month==12){    // если совпали месяцы
               LCD.backlight(); // включить подсветку
                myDFPlayer.play(13);  //  воспроизвести трек()
               delay(10000);
                  LCD.noBacklight(); // отключить подсветку
}}}}}
       // if(time.weekday==3){    // если совпали дни недели 
}
      if(!digitalRead(PIN_button_DOWN)){                 
        time.settime(-1, (time.minutes==59?0:time.minutes+1), -1, -1, -1, -1, -1); // минуты плюс коррекция      
        delay(200); }
      if(!digitalRead(PIN_button_UP )){  
        time.settime(-1, (time.minutes==0?59:time.minutes-1), -1, -1, -1, -1, -1);  // минуты минус коррекция
        delay(200);} 
      if(!digitalRead(PIN_button_SET)){ // Уменьшение громкости
      myDFPlayer.volumeDown(); 
      LCD.setCursor(13,0); 
      LCD.print("3B-");
            delay(200);  
      }
   if(!digitalRead(PIN_button_TMR )){  //таймер по нажатию кнопки TMR
      MIN = MIN + 1;    // прибавляются минуты ( в счетчике не используются)
      SEC = SEC + 60;    // прибавляются секунды
      LCD.setCursor(9,0);  // место на дисплее
      LCD.print("TMP     "); // отображаем тмр и пробелы
      LCD.setCursor(13,0);  // место на дисплее
      LCD.print(MIN);  // отображаем минуты при нажатии 
      delay(200);
  }
     if (SEC < 1 ) { SEC = 1; }   // костыль чтоб таймер в минус не убегал
     if (millis() - timer > 999) {   // каждые 999 милисекунд
         timer = millis();
         SEC = SEC - 1;           // вычитаем 1 секунду
         LCD.setCursor(9,0);      // место на дисплее
         LCD.print("TMP     ");   // отображаем тмр и пробелы
         LCD.setCursor(13,0);    // место на дисплее
         LCD.print(SEC);        // отображакм секунды
      
      if (SEC == 1) {   // когда на таймере остается одна секунда
          MIN = 0 ; 
          myDFPlayer.play(14);  //запуск трека по таймеру
  }
   } 
    } 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Гость464,

Вас точно не смущает вот такая портянка предупреждений?

In file included from C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC.h:33:0,
                 from C:\GoogleD\Soft\Kaka\kaka3\kaka3.ino:1:
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h: In member function 'bool iarduino_RTC_DS1302::funcWriteReg(uint8_t, uint8_t)':
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h:61:3: warning: no return statement in function returning non-void [-Wreturn-type]
   }
   ^
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h: In member function 'void iarduino_RTC_DS1302::funcWriteByte(uint8_t)':
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h:64:191: warning: comparison is always true due to limited range of data type [-Wtype-limits]
   void funcWriteByte (uint8_t j)   /* Передача  одного байта  (байт для передачи)         */ {uint8_t i=0, n=500/busRate+1; pinMode(pinDAT, OUTPUT); while(i>=0 && i<8){digitalWrite(pinDAT, (j & _BV(i))); delayMicroseconds(n); digitalWrite(pinCLK, 1); delayMicroseconds(n); digitalWrite(pinCLK, 0); i++;} pinMode(pinDAT, INPUT);}
                                                                                                                                                                                              ~^~~
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h: In member function 'uint8_t iarduino_RTC_DS1302::funcReadByte(bool)':
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h:65:290: warning: comparison is always true due to limited range of data type [-Wtype-limits]
   uint8_t funcReadByte (bool j)   /* Получение одного байта  (флаг чтения предустановленного бита с линии DAT) */ {uint8_t i=0, k=0, n=500/busRate+1; pinMode(pinDAT, INPUT); if(j){if(digitalRead(pinDAT)){k |= _BV(i);} i++;} while(i>=0 && i<8){digitalWrite(pinCLK, 1); delayMicroseconds(n); digitalWrite(pinCLK, 0); delayMicroseconds(n); if(digitalRead(pinDAT)){k |= _BV(i);} i++;} return k;}
                                                                                                                                                                                                                                                                                                 ~^~~
C:\GoogleD\Soft\Kaka\kaka3\kaka3.ino: In function 'void loop()':
C:\GoogleD\Soft\Kaka\kaka3\kaka3.ino:49:12: warning: unused variable 'chk' [-Wunused-variable]
        int chk = sensor.read(DHT11PIN); // читаем датчик влажности и температуры
            ^~~
In file included from C:\GoogleD\Soft\libraries\iarduino_RTC\src\iarduino_RTC.h:33:0,
                 from C:\GoogleD\Soft\libraries\iarduino_RTC\src\iarduino_RTC.cpp:1:
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h: In member function 'bool iarduino_RTC_DS1302::funcWriteReg(uint8_t, uint8_t)':
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h:61:3: warning: no return statement in function returning non-void [-Wreturn-type]
   }
   ^
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h: In member function 'void iarduino_RTC_DS1302::funcWriteByte(uint8_t)':
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h:64:191: warning: comparison is always true due to limited range of data type [-Wtype-limits]
   void funcWriteByte (uint8_t j)   /* Передача  одного байта  (байт для передачи)         */ {uint8_t i=0, n=500/busRate+1; pinMode(pinDAT, OUTPUT); while(i>=0 && i<8){digitalWrite(pinDAT, (j & _BV(i))); delayMicroseconds(n); digitalWrite(pinCLK, 1); delayMicroseconds(n); digitalWrite(pinCLK, 0); i++;} pinMode(pinDAT, INPUT);}
                                                                                                                                                                                              ~^~~
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h: In member function 'uint8_t iarduino_RTC_DS1302::funcReadByte(bool)':
C:\GoogleD\Soft\libraries\iarduino_RTC\src/iarduino_RTC_DS1302.h:65:290: warning: comparison is always true due to limited range of data type [-Wtype-limits]
   uint8_t funcReadByte (bool j)   /* Получение одного байта  (флаг чтения предустановленного бита с линии DAT) */ {uint8_t i=0, k=0, n=500/busRate+1; pinMode(pinDAT, INPUT); if(j){if(digitalRead(pinDAT)){k |= _BV(i);} i++;} while(i>=0 && i<8){digitalWrite(pinCLK, 1); delayMicroseconds(n); digitalWrite(pinCLK, 0); delayMicroseconds(n); if(digitalRead(pinDAT)){k |= _BV(i);} i++;} return k;}
                                                                                                                                                                                                                                                                                                 ~^~~
C:\GoogleD\Soft\libraries\iarduino_RTC\src\iarduino_RTC.cpp: In member function 'char* iarduino_RTC::gettime(const char*)':
C:\GoogleD\Soft\libraries\iarduino_RTC\src\iarduino_RTC.cpp:6:26: warning: unused variable 'f' [-Wunused-variable]
    uint8_t j, k, n; bool f;                  // Объявляем локальные переменные
                          ^
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp: In member function 'void LiquidCrystal_I2C::begin(uint8_t, uint8_t, uint8_t)':
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:66:39: warning: unused parameter 'cols' [-Wunused-parameter]
 void LiquidCrystal_I2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
                                       ^~~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp: In member function 'void LiquidCrystal_I2C::setDelay(int, int)':
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:307:39: warning: unused parameter 'cmdDelay' [-Wunused-parameter]
 void LiquidCrystal_I2C::setDelay (int cmdDelay,int charDelay) {}
                                       ^~~~~~~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:307:52: warning: unused parameter 'charDelay' [-Wunused-parameter]
 void LiquidCrystal_I2C::setDelay (int cmdDelay,int charDelay) {}
                                                    ^~~~~~~~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp: In member function 'uint8_t LiquidCrystal_I2C::init_bargraph(uint8_t)':
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:310:50: warning: unused parameter 'graphtype' [-Wunused-parameter]
 uint8_t LiquidCrystal_I2C::init_bargraph(uint8_t graphtype){return 0;}
                                                  ^~~~~~~~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp: In member function 'void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t, uint8_t, uint8_t, uint8_t)':
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:311:55: warning: unused parameter 'row' [-Wunused-parameter]
 void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_col_end){}
                                                       ^~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:311:68: warning: unused parameter 'column' [-Wunused-parameter]
 void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_col_end){}
                                                                    ^~~~~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:311:84: warning: unused parameter 'len' [-Wunused-parameter]
 void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_col_end){}
                                                                                    ^~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:311:98: warning: unused parameter 'pixel_col_end' [-Wunused-parameter]
 void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_col_end){}
                                                                                                  ^~~~~~~~~~~~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp: In member function 'void LiquidCrystal_I2C::draw_vertical_graph(uint8_t, uint8_t, uint8_t, uint8_t)':
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:312:53: warning: unused parameter 'row' [-Wunused-parameter]
 void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_row_end){}
                                                     ^~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:312:66: warning: unused parameter 'column' [-Wunused-parameter]
 void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_row_end){}
                                                                  ^~~~~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:312:82: warning: unused parameter 'len' [-Wunused-parameter]
 void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_row_end){}
                                                                                  ^~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:312:96: warning: unused parameter 'pixel_row_end' [-Wunused-parameter]
 void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_row_end){}
                                                                                                ^~~~~~~~~~~~~
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp: In member function 'void LiquidCrystal_I2C::setContrast(uint8_t)':
C:\GoogleD\Soft\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:313:45: warning: unused parameter 'new_val' [-Wunused-parameter]
 void LiquidCrystal_I2C::setContrast(uint8_t new_val){}
                                             ^~~~~~~
Скетч использует 12432 байт (40%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 618 байт (30%) динамической памяти, оставляя 1430 байт для локальных переменных. Максимум: 2048 байт.

и Вы твёрдо намерены пользоваться этим кодом?

Гость464
Offline
Зарегистрирован: 05.12.2021

Удалите пост . Мне  уже в другом месте помогают. Чтоб вас всех не смущало