26

Re: Простые часы на LCD2004 (Arduino)

Датчик с платой или без.

27

Re: Простые часы на LCD2004 (Arduino)

liman324 пишет:

Датчик с платой или без.

Датчик металлический на проводе, вот такой: http://forum.rcl-radio.ru/uploads/images/2021/02/bcdce6a1922f9681c2aeccbb51f5604a.jpg

28

Re: Простые часы на LCD2004 (Arduino)

На выход датчика через резистор 4,7 кОм подайте +5В

29 (2021-02-01 18:44:55 отредактировано Udav999)

Re: Простые часы на LCD2004 (Arduino)

liman324 пишет:

На выход датчика через резистор 4,7 кОм подайте +5В

"Резистор на желтый провод и к нему +5В - правильно я понимаю?"

Всё нашел способ подключения датчика через резистор.

Спасибо за совет!

30

Re: Простые часы на LCD2004 (Arduino)

да

31

Re: Простые часы на LCD2004 (Arduino)

Не компилируется почему то, выдаёт ошибку 'RTCDateTime' does not name a type; did you mean 'DateTime'? в 9 строке.

32

Re: Простые часы на LCD2004 (Arduino)

Установите старую версию библиотеки - Данный контент доступен только зарегистрированным пользователям.

33

Re: Простые часы на LCD2004 (Arduino)

liman324 Спасибо. Помогло.

34 (2021-03-21 18:36:31 отредактировано kym13)

Re: Простые часы на LCD2004 (Arduino)

Такая же ерунда как в посте 25 показывает -127. Датчик 18b20 на плате(модуль). А вообще правильно ли 18b20 садить на аналоговый пин? Все предыдущие скетчи проверил, с одним 18b20 всё нормально, а скетч где добавлен BME280 показывает ерунду.

35

Re: Простые часы на LCD2004 (Arduino)

Проверьте наличие подтягивающего резистора 4,7К на плате датчика.

А вообще правильно ли 18b20 садить на аналоговый пин?

Не имеет значения, аналоговый пин он же и цифровой

36 (2021-03-21 18:46:16 отредактировано kym13)

Re: Простые часы на LCD2004 (Arduino)

liman324 пишет:

Проверьте наличие подтягивающего резистора 4,7К на плате датчика.

А вообще правильно ли 18b20 садить на аналоговый пин?

Не имеет значения, аналоговый пин он же и цифровой

Резистор есть, ещё не отображается день недели. Я тестирую без BME, без датчика должны отображатся ноли, но температура с BME(в его отсутствии) 29 градусов, а с 18b20 -127

37

Re: Простые часы на LCD2004 (Arduino)

Вы какой скетч используете?

38 (2021-03-21 18:56:02 отредактировано kym13)

Re: Простые часы на LCD2004 (Arduino)

liman324 пишет:

Вы какой скетч используете?


Из 9 поста.
Заменил модуль 18b20 на отдельный датчик 18b20 с резистором тоже самое -127

39

Re: Простые часы на LCD2004 (Arduino)

Вы два датчика DS18b20 подключаете?

40

Re: Простые часы на LCD2004 (Arduino)

liman324 пишет:

Вы два датчика DS18b20 подключаете?

один

41

Re: Простые часы на LCD2004 (Arduino)

Я точно не скажу, но с одним скорее всего работать не будет.

Удалите строку:

if(DateTime.second==30){t2 = temp.getTempCByIndex(1);}

42 (2021-03-21 19:19:10 отредактировано kym13)

Re: Простые часы на LCD2004 (Arduino)

liman324 пишет:

Я точно не скажу, но с одним скорее всего работать не будет.

Удалите строку:

if(DateTime.second==30){t2 = temp.getTempCByIndex(1);}

Я не внимательно читал. Оказывается там помимо ВМЕ  ещё два 18b20. Установил второй и всё стало норм, кроме дня недели.
Если закоментировать строку которую Вы сказали то один показывает "0", а второй температуру.
Температура снимается с датчиков не постоянно, а по какому то алгоритму? Очень инертно реагируют на изменения температуры.

43

Re: Простые часы на LCD2004 (Arduino)

Температура снимается с датчиков не постоянно, а по какому то алгоритму?

В 15 и 20 секунд каждой минуты идет  замер температуры.

Попробуйте этот скетч:

#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>// https://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[8]{" ","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);
   }
   
   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]);
   
   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");}
   }

44

Re: Простые часы на LCD2004 (Arduino)

liman324
А зачем два 18b20? если в BME280 есть датчик температуры

45

Re: Простые часы на LCD2004 (Arduino)

BME280 - немного завышает.

46 (2021-03-21 19:53:53 отредактировано kym13)

Re: Простые часы на LCD2004 (Arduino)

Попробовал скетч из 43 поста. День недели не отображается, остальное норм.
Ещё хотел спросить hpa = bme.readPressure() / 100.0F; почему делим на 100, а не на 133.322 ?

47

Re: Простые часы на LCD2004 (Arduino)

День недели должен работать, попробуйте переустановить время:

clock.setDateTime(__DATE__, __TIME__);


Ещё хотел спросить hpa = bme.readPressure() / 100.0F; почему делим на 100, а не на 133.322 ?

Так было в примере в библиотеки указано.

48

Re: Простые часы на LCD2004 (Arduino)

liman324 пишет:

День недели должен работать, попробуйте переустановить время:

clock.setDateTime(__DATE__, __TIME__);


Ещё хотел спросить hpa = bme.readPressure() / 100.0F; почему делим на 100, а не на 133.322 ?

Так было в примере в библиотеки указано.

Переустановил время всё заработало. Спасибо.
А по поводу деления на 100, правильно будет делить на 133.322(проверено на практике), при делении на 100 будет врать т.е. завышать давление в мм.рт.ст.

49

Re: Простые часы на LCD2004 (Arduino)

Добрый день. Скетч заливается в ардуино нано,lcd горит но ничего не показывает. Прошу помощи.

50

Re: Простые часы на LCD2004 (Arduino)

#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 <Adafruit_Sensor.h>  // https://github.com/adafruit/Adafruit_Sensor
#include <Adafruit_BME280.h>  // https://github.com/adafruit/Adafruit_BME280_Library
         
      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 const* mes[12]{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
      char const* den[7]{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
      float hpa,h,t;
      
   void setup(){ Wire.begin(); clock.begin(); 
    bme.begin(0x76);
    //temp.begin(); temp.setResolution(9);//9 бит   
    //clock.setDateTime(2021, 15, 11, 1, 11, 0);
    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(){
     
    {
    t = bme.readTemperature();
    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);lcd.print(t,0);lcd.print("C ");}