Редактирование скетча часов
- Войдите на сайт для отправки комментариев
Вс, 05/12/2021 - 22:26
Доброго времени суток помогите пожалуйста переделать под жк экран 2004А V1,1 чтоб время было на 2 строки и подключить кнопки для настройки часов и даты и подскажите к каким выводам подключить кнопки
================================================
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Это залёт....
================================================
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
взял тут https://avtosega.blogspot.com/2021/11/include-ds1302-iarduinortc.html
Это залёт....
что не так ?
вам в оба ваших сообщения вставили ссылку - "что не так". Читайте, прежде чем постить.
#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); //запуск трека по таймеру } } }Гость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 байт.и Вы твёрдо намерены пользоваться этим кодом?
Удалите пост . Мне уже в другом месте помогают. Чтоб вас всех не смущало