Re: Простые часы на LCD2004 (Arduino)
Проверьте адреса I2C уст-в - http://forum.rcl-radio.ru/viewtopic.php?id=64
bme280, ds3231 и LCD2004
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Тестирование скетчей → Простые часы на LCD2004 (Arduino)
Проверьте адреса I2C уст-в - http://forum.rcl-radio.ru/viewtopic.php?id=64
bme280, ds3231 и LCD2004
Scanning...
I2C device found at address 0x27 !
I2C device found at address 0x76 !
done
Нет адреса часов реального времени, проверьте подключение
Понял. Раньше плата работала. Спасибо. Буду разбираться.
Нет адреса часов реального времени, проверьте подключение
Возможно, что перепутал sda и scl при подключение модуль вылетел?
Привет! Не могу установить время-дату. В каком формате вносить в скетч? Спасибо!
Раскоментируйте строку:
clock.setDateTime(__DATE__, __TIME__);
залейте скетч
закоментируйте строку:
//clock.setDateTime(__DATE__, __TIME__);
залейте скетч
Это я понял. А в скобках в каком формате писать? У меня вылазит какая то чертовщина!
Нет, ни чего в скобках писать не надо, время берется по времени компиляции.
Отлично! Спасибо!!!
Раскоментируйте строку:
clock.setDateTime(__DATE__, __TIME__);
залейте скетч
закоментируйте строку:
//clock.setDateTime(__DATE__, __TIME__);
залейте скетч
Здравствуйте! Подскажите начинающему ардинщику как раскоментировать, а потом закоментироваь?
Спасибо!
Просто убрать //
Просто убрать //
А когда закаментировать, то добавить //
И еще вопрос скетч с кнопками и DS18B20, так правильно будет ?
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //Библиотека - http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip // DS3231.zip
#include <DallasTemperature.h>// http://rcl-radio.ru/wp-content/uploads/2018/07/DallasTemperature.zip
#include <Adafruit_Sensor.h> // https://github.com/adafruit/Adafruit_Sensor
#include <Adafruit_BME280.h> // https://github.com/adafruit/Adafruit_BME280_Library
OneWire oneWire(A0);// вход датчика 18b20
DallasTemperature temp(&oneWire);
DS3231 clock;RTCDateTime DateTime;
LiquidCrystal_I2C lcd(0x27,20,4); // Устанавливаем дисплей
Adafruit_BME280 bme;
byte v1[8] = {7,7,7,7,7,7,7,7};
byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};
byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};//
byte v6[8] = {28,28,28,28,28,28,28,28};
byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
byte v8[8] = { 31, 31,0,0,0,0,0, 0};
int a[6];
byte i,d1,d2,d3,d4,d5,d6,e1,e2,e3;
char * mes[12]{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
char * den[7]{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
float hpa,h,t1,t2;
void setup(){ Wire.begin(); clock.begin();
bme.begin(0x76);
temp.begin(); temp.setResolution(9);//9 бит
//clock.setDateTime(__DATE__, __TIME__);
lcd.init();lcd.backlight();// Включаем подсветку дисплея
lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
pinMode(A1,INPUT_PULLUP); // часы +
pinMode(A2,INPUT_PULLUP); // минуты +
// кнопки коррекци времени - нажатие === замыкание на GND
}
void loop(){
if(DateTime.second==0){temp.requestTemperatures();}
if(DateTime.second==15){t1 = temp.getTempCByIndex(0);}
if(DateTime.second==30){t2 = temp.getTempCByIndex(1);}
if(DateTime.second==45){
hpa = bme.readPressure() / 100.0F;
h = bme.readHumidity();}
// hpa=1002;
// h=35;
if(DateTime.hour>=0&&DateTime.hour<6){lcd.noBacklight();}else{lcd.backlight();}
DateTime=clock.getDateTime();
a[0]=DateTime.hour/10;
a[1]=DateTime.hour%10;
a[2]=DateTime.minute/10;
a[3]=DateTime.minute%10;
a[4]=DateTime.second/10;
a[5]=DateTime.second%10;
for(i=0;i<6;i++){
switch(i){
case 0: e1=0,e2=1,e3=2;break;
case 1: e1=3,e2=4,e3=5;break;
case 2: e1=7,e2=8,e3=9;break;
case 3: e1=10,e2=11,e3=12;break;
case 4: e1=14,e2=15,e3=16;break;
case 5: e1=17,e2=18,e3=19;break;
}
switch(a[i]){
case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;
case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;
case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;
case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;
case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;
case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;
}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);
}
lcd.setCursor(6,0);lcd.print(".");lcd.setCursor(13,0);lcd.print(".");lcd.setCursor(6,1);lcd.print(".");lcd.setCursor(13,1);lcd.print(".");
lcd.setCursor(2,2);if(DateTime.day<10){lcd.print(" ");}lcd.print(DateTime.day);lcd.print(" ");lcd.print(mes[DateTime.month-1]);lcd.print(" ");lcd.print(DateTime.year);lcd.print(" ");lcd.print(den[DateTime.dayOfWeek-1]);
lcd.setCursor(0,3);lcd.print("P");lcd.print(hpa*0.75,0);lcd.print(" ");lcd.print(h,0);lcd.print("% ");
lcd.setCursor(9,3);if(t1<0){lcd.print(t1,0);lcd.print("C ");}else{lcd.print(t1,1);lcd.print("C ");}
lcd.setCursor(15,3);if(t2<0){lcd.print(t2,0);lcd.print("C");}else{lcd.print(t2,1);lcd.print("C");}
}
Заранее большое спасибо!
Да, это скетч с кнопками и 18B20
Да, это скетч с кнопками и 18B20
Спасибо!!!
Здравствуйте liman324! Вопрос к Вам : в посте 64, в скетче используется датчик BME280, если его убрать часы будут работать, или нужно править скетч?
Спасибо!
Без датчика часы работать не будут.
Без датчика часы работать не будут.
Подскажите а удалить этот датчик из скетча можно?
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //Библиотека - http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip // DS3231.zip
#include <DallasTemperature.h>// http://rcl-radio.ru/wp-content/uploads/2018/07/DallasTemperature.zip
#include <Adafruit_Sensor.h> // https://github.com/adafruit/Adafruit_Sensor
OneWire oneWire(A0);// вход датчика 18b20
DallasTemperature temp(&oneWire);
DS3231 clock;RTCDateTime DateTime;
LiquidCrystal_I2C lcd(0x27,20,4); // Устанавливаем дисплей
byte v1[8] = {7,7,7,7,7,7,7,7};
byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};
byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};//
byte v6[8] = {28,28,28,28,28,28,28,28};
byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
byte v8[8] = { 31, 31,0,0,0,0,0, 0};
int a[6];
byte i,d1,d2,d3,d4,d5,d6,e1,e2,e3;
char * mes[12]{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
char * den[7]{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
float hpa,h,t1,t2;
void setup(){ Wire.begin(); clock.begin();
temp.begin(); temp.setResolution(9);//9 бит
//clock.setDateTime(__DATE__, __TIME__);
lcd.init();lcd.backlight();// Включаем подсветку дисплея
lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
pinMode(A1,INPUT_PULLUP); // часы +
pinMode(A2,INPUT_PULLUP); // минуты +
// кнопки коррекци времени - нажатие === замыкание на GND
}
void loop(){
if(DateTime.second==0){temp.requestTemperatures();}
if(DateTime.second==15){t1 = temp.getTempCByIndex(0);}
if(DateTime.second==30){t2 = temp.getTempCByIndex(1);}
if(DateTime.hour>=0&&DateTime.hour<6){lcd.noBacklight();}else{lcd.backlight();}
DateTime=clock.getDateTime();
a[0]=DateTime.hour/10;
a[1]=DateTime.hour%10;
a[2]=DateTime.minute/10;
a[3]=DateTime.minute%10;
a[4]=DateTime.second/10;
a[5]=DateTime.second%10;
for(i=0;i<6;i++){
switch(i){
case 0: e1=0,e2=1,e3=2;break;
case 1: e1=3,e2=4,e3=5;break;
case 2: e1=7,e2=8,e3=9;break;
case 3: e1=10,e2=11,e3=12;break;
case 4: e1=14,e2=15,e3=16;break;
case 5: e1=17,e2=18,e3=19;break;
}
switch(a[i]){
case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;
case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;
case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;
case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;
case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;
case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;
}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);
}
lcd.setCursor(6,0);lcd.print(".");lcd.setCursor(13,0);lcd.print(".");lcd.setCursor(6,1);lcd.print(".");lcd.setCursor(13,1);lcd.print(".");
lcd.setCursor(2,2);if(DateTime.day<10){lcd.print(" ");}lcd.print(DateTime.day);lcd.print(" ");lcd.print(mes[DateTime.month-1]);lcd.print(" ");lcd.print(DateTime.year);lcd.print(" ");lcd.print(den[DateTime.dayOfWeek-1]);
lcd.setCursor(9,3);if(t1<0){lcd.print(t1,0);lcd.print("C ");}else{lcd.print(t1,1);lcd.print("C ");}
lcd.setCursor(15,3);if(t2<0){lcd.print(t2,0);lcd.print("C");}else{lcd.print(t2,1);lcd.print("C");}
}
#include <Wire.h> #include <LiquidCrystal_I2C.h> //Библиотека - http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1 #include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip // DS3231.zip #include <DallasTemperature.h>// http://rcl-radio.ru/wp-content/uploads/2018/07/DallasTemperature.zip #include <Adafruit_Sensor.h> // https://github.com/adafruit/Adafruit_Sensor OneWire oneWire(A0);// вход датчика 18b20 DallasTemperature temp(&oneWire); DS3231 clock;RTCDateTime DateTime; LiquidCrystal_I2C lcd(0x27,20,4); // Устанавливаем дисплей byte v1[8] = {7,7,7,7,7,7,7,7}; byte v2[8] = {7,7,0, 0, 0, 0, 0, 0}; byte v3[8] = { 0, 0, 0, 0, 0,0,31,31}; byte v4[8] = {31,31, 0, 0, 0, 0,31,31}; byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};// byte v6[8] = {28,28,28,28,28,28,28,28}; byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7}; byte v8[8] = { 31, 31,0,0,0,0,0, 0}; int a[6]; byte i,d1,d2,d3,d4,d5,d6,e1,e2,e3; char * mes[12]{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; char * den[7]{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"}; float hpa,h,t1,t2; void setup(){ Wire.begin(); clock.begin(); temp.begin(); temp.setResolution(9);//9 бит //clock.setDateTime(__DATE__, __TIME__); lcd.init();lcd.backlight();// Включаем подсветку дисплея lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8); pinMode(A1,INPUT_PULLUP); // часы + pinMode(A2,INPUT_PULLUP); // минуты + // кнопки коррекци времени - нажатие === замыкание на GND } void loop(){ if(DateTime.second==0){temp.requestTemperatures();} if(DateTime.second==15){t1 = temp.getTempCByIndex(0);} if(DateTime.second==30){t2 = temp.getTempCByIndex(1);} if(DateTime.hour>=0&&DateTime.hour<6){lcd.noBacklight();}else{lcd.backlight();} DateTime=clock.getDateTime(); a[0]=DateTime.hour/10; a[1]=DateTime.hour%10; a[2]=DateTime.minute/10; a[3]=DateTime.minute%10; a[4]=DateTime.second/10; a[5]=DateTime.second%10; for(i=0;i<6;i++){ switch(i){ case 0: e1=0,e2=1,e3=2;break; case 1: e1=3,e2=4,e3=5;break; case 2: e1=7,e2=8,e3=9;break; case 3: e1=10,e2=11,e3=12;break; case 4: e1=14,e2=15,e3=16;break; case 5: e1=17,e2=18,e3=19;break; } switch(a[i]){ case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break; case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break; case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break; case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break; case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break; case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break; case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break; case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break; case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break; case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break; } lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3); lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6); } lcd.setCursor(6,0);lcd.print(".");lcd.setCursor(13,0);lcd.print(".");lcd.setCursor(6,1);lcd.print(".");lcd.setCursor(13,1);lcd.print("."); lcd.setCursor(2,2);if(DateTime.day<10){lcd.print(" ");}lcd.print(DateTime.day);lcd.print(" ");lcd.print(mes[DateTime.month-1]);lcd.print(" ");lcd.print(DateTime.year);lcd.print(" ");lcd.print(den[DateTime.dayOfWeek-1]); lcd.setCursor(9,3);if(t1<0){lcd.print(t1,0);lcd.print("C ");}else{lcd.print(t1,1);lcd.print("C ");} lcd.setCursor(15,3);if(t2<0){lcd.print(t2,0);lcd.print("C");}else{lcd.print(t2,1);lcd.print("C");} }
Это без датчика BME280?
Да
Да
Большое спасибо Вам!!!
Еще один вариант простых часов с использованием дисплея LCD2004
#include <Wire.h> #include <LiquidCrystal_I2C.h> //Библиотека - http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1 #include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip // DS3231.zip DS3231 clock;RTCDateTime DateTime; LiquidCrystal_I2C lcd(0x27,20,4); // Устанавливаем дисплей byte v1[8] = {15,15,15,15,15,15,15,15}; byte v2[8] = {15,15,15, 0, 0, 0, 0, 0}; byte v3[8] = { 0, 0, 0, 0, 0,31,31,31}; byte v4[8] = {31,31, 0, 0, 0, 0,31,31}; byte v5[8] = { 0, 0, 0, 0, 0, 30, 30, 30}; byte v6[8] = {30,30,30,30,30,30,30,30}; byte v7[8] = { 0, 0, 0, 0, 0, 15,15,15}; byte v8[8] = { 31, 31,31,0,0,0,0, 0}; int a[6]; byte i,d1,d2,d3,d4,d5,d6,e1,e2,e3; void setup(){ Wire.begin(); clock.begin(); //clock.setDateTime(__DATE__, __TIME__); lcd.init();lcd.backlight();// Включаем подсветку дисплея lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8); } void loop(){ DateTime=clock.getDateTime(); a[0]=DateTime.hour/10; a[1]=DateTime.hour%10; a[2]=DateTime.minute/10; a[3]=DateTime.minute%10; a[4]=DateTime.second/10; a[5]=DateTime.second%10; for(i=0;i<6;i++){ switch(i){ case 0: e1=0,e2=1,e3=2;break; case 1: e1=3,e2=4,e3=5;break; case 2: e1=7,e2=8,e3=9;break; case 3: e1=10,e2=11,e3=12;break; case 4: e1=14,e2=15,e3=16;break; case 5: e1=17,e2=18,e3=19;break; } switch(a[i]){ case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break; case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break; case 2: d1=2,d2=4,d3=6,d4=1,d5=3,d6=5;break; case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break; case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break; case 5: d1=1,d2=4,d3=8,d4=7,d5=3,d6=6;break; case 6: d1=1,d2=4,d3=8,d4=1,d5=3,d6=6;break; case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break; case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break; case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break; } lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3); lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6); } lcd.setCursor(6,0);lcd.print(".");lcd.setCursor(13,0);lcd.print(".");lcd.setCursor(6,1);lcd.print(".");lcd.setCursor(13,1);lcd.print("."); lcd.setCursor(0,2);lcd.print("--------------------"); lcd.setCursor(1,3);lcd.print(DateTime.day/10);lcd.print(DateTime.day%10);lcd.print("-");lcd.print(DateTime.month/10);lcd.print(DateTime.month%10);lcd.print("-");lcd.print(DateTime.year); lcd.print(" ");lcd.print(clock.readTemperature(),1);lcd.print((char)223);lcd.print("C"); }
Добрый день, скажите а где схему посмотреть?
Схемы нет, да она и не нужна. Экран и часы реального времени имеют по 4 пина соединенные параллельно:
Модули/ Ардуино
+5V / 5V
Gnd / GND
SDA / A4
SCL / A5
forum.rcl-radio.ru → Тестирование скетчей → Простые часы на LCD2004 (Arduino)
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|