51

Re: Часы с будильником 1602

Всем Привет, Хочу узнать , кто-нибудь проверял в минус уходит ? У меня стоят по нулям показание с датчика.

52 (2020-03-08 13:37:24 отредактировано vn2012)

Re: Часы с будильником 1602

Всем привет. Как писал выше, часы работают - как часы).
Назрел еще вопрос: возможно ли заменить кнопки на енкодер? Как это реалезировать в коде? Типа нажал: это сит, вправо - ап, влево - доун

53

Re: Часы с будильником 1602

Не вижу в этом смысла.

54

Re: Часы с будильником 1602

очень удобно, умные часы так построены (носимые)

liman324 пишет:

Не вижу в этом смысла.

55

Re: Часы с будильником 1602

Здравствуйте! Хочу спросить про скетч на 23 листе, часы с dht11 ) крестик над секундомером какую роль выполняет ?

56

Re: Часы с будильником 1602

Здравствуйте! Хочу спросить про скетч на 23 листе, часы с dht11 ) крестик над секундомером какую роль выполняет ?

Какой крестик?

57

Re: Часы с будильником 1602

между часами и минутами по середине над секундомером.

58

Re: Часы с будильником 1602

Это большая точка, она должна мигать в такт секундам

59

Re: Часы с будильником 1602

У меня просто стоит не моргает. Можно его как то убрать ?

60

Re: Часы с будильником 1602

pinMode(12,INPUT);

Выход SQL DS3231 соединить с D12

что бы мигало

или удалить строки (чтобы удалить точки)

if(digitalRead(12) == HIGH){lcd.setCursor(7,0);lcd.write((uint8_t)6);}else{ lcd.setCursor(7,0);lcd.write((uint8_t)5);}
if(digitalRead(12) == LOW){lcd.setCursor(8,0);lcd.write((uint8_t)6);}else{ lcd.setCursor(8,0);lcd.write((uint8_t)5);}

61

Re: Часы с будильником 1602

Спасибо! убрал две строчки и пропала точка

62

Re: Часы с будильником 1602

Здравствуйте! Пожалуйста помогите подключить датчик AHT10 вместо DHT11 он более точнее вроде. Пробовал сам заменить но увы. Да и он вроде может температуру показывать с десятыми как это реализовать в коде?

63

Re: Часы с будильником 1602

Переменная h должна быть типа float, сейчас она int.
Выводить большими цифрами все число не получится, например десятичный знак меленькой цифрой
http://forum.rcl-radio.ru/uploads/images/2020/11/7cfae3f79344601b9115286779eb0026.png

выводить десятичный знак можно примерно так:
lcd.setCursor(1,14);lcd.print(".");lcd.print((h-(int)h)*10);

64

Re: Часы с будильником 1602

#include <Wire.h> 
#include <Thinary_AHT10.h>
#include <LiquidCrystal_I2C.h>
#include <DS3231.h>
      AHT10Class AHT10;
      DS3231 clock;RTCDateTime DateTime;
      LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей    
      byte v1[8] = {31,31,31,31,31,31,31,31};
      byte v2[8] = {31,31,31, 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, 0, 0, 0};
      byte v6[8] = { 0, 0,14,31,31,14, 0, 0}; //*
      byte v7[8] = { 0, 0, 0, 0, 0, 0,31,31};
      int a[4],digit,sek_old,w,w1,w2,h,t;
      byte i,d1,d2,d3,d4,d5,d6,e1,e2,e3;
      unsigned long times;
      
   void setup(){ Wire.begin(); clock.begin(); Serial.begin(9600);  AHT10.begin(); 
    //clock.setDateTime(__DATE__, __TIME__);
    lcd.init();lcd.backlight();// Включаем подсветку дисплея
      pinMode(12,INPUT); // SQW часов на 12 ногу
      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);
      clock.setOutput(DS3231_1HZ);
   }
   
   void loop(){
    //if(millis()-times>3000){
    h = AHT10.GetHumidity()// влажность
    ;t = AHT10.GetTemperature()// температура
    //}
    ;DateTime=clock.getDateTime(); 
     if(millis()-times<=5000){digit = DateTime.hour*100+DateTime.minute;
     if(w1==1){lcd.clear();w1=0;}w=1;
     if(digit>999){a[0]=digit/1000;}else{a[0]=11;}
     a[1]=digit/100%10;
     a[2]=digit/10%10;
     a[3]=digit%10%10;
     
 for(i=0;i<4;i++){
      switch(i){
        case 0: e1=0,e2=1,e3=2;break;
        case 1: e1=4,e2=5,e3=6;break;
        case 2: e1=9,e2=10,e3=11;break;
        case 3: e1=13,e2=14,e3=15;break;}       
      switch(a[i]){
        case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
        case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
        case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
        case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
        case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
        case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
        case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
        case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
        case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
        case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
       case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;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);}
      
   if(digitalRead(12) == HIGH){lcd.setCursor(7,0);lcd.write((uint8_t)6);}else{ lcd.setCursor(7,0);lcd.write((uint8_t)5);} // SQW часов на 12 ногу
   if(digitalRead(12) == LOW){lcd.setCursor(8,0);lcd.write((uint8_t)6);}else{ lcd.setCursor(8,0);lcd.write((uint8_t)5);} // SQW часов на 12 ногу
 //  lcd.setCursor(8,0);lcd.write((uint8_t)8);
   lcd.setCursor(7,1);if(DateTime.second<10){lcd.print("0");}lcd.print(DateTime.second);
    }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
     if(millis()-times>5000&&millis()-times<6500){digit=t;
    if(w==1){lcd.clear();w=0;}w2=1;
    if(digit>=10){a[0]=digit/10;}else{a[0]=11;}
     a[1]=digit%10;
     
 for(i=0;i<2;i++){
      switch(i){
        case 0: e1=4,e2=5,e3=6;break;
        case 1: e1=8,e2=9,e3=10;break;}       
      switch(a[i]){
        case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
        case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
        case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
        case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
        case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
        case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
        case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
        case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
        case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
        case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
       case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;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(11,0);lcd.print(char(223));
   
    }

///////////////////////////////////////////////////////////////////////////////////////
    if(millis()-times>=6500&&millis()-times<8000){digit=h;
     if(w2==1){lcd.clear();w2=0;}w1=1;
     a[0]=digit/10;
     a[1]=digit%10;
     
 for(i=0;i<2;i++){
      switch(i){
        case 0: e1=4,e2=5,e3=6;break;
        case 1: e1=8,e2=9,e3=10;break;}       
      switch(a[i]){
        case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
        case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
        case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
        case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
        case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
        case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
        case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
        case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
        case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
        case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
       case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;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(11,0);lcd.print("%");
         
    }
   if(millis()-times>8000){times=millis();} 
   }// loop

Вот я сам пробовал впринципе пойдёт но у меня почему-то не мигают две точки секунды SQW на 12 ногу ардуины подключил

65

Re: Часы с будильником 1602

По коду все верно, должно работать, проверьте секундные импульсы с выхода sqw

66

Re: Часы с будильником 1602

Да всё заработало на про мини. Подскажите как вывести десятые градуса маленькой цифрой без точки рядом с большими цифрами градуса?

67

Re: Часы с будильником 1602

float h;

lcd.setCursor(1,14);lcd.print(".");lcd.print((h-(int)h)*10);

68

Re: Часы с будильником 1602

Не получается. А куда эту строчку вставлять надо?

69

Re: Часы с будильником 1602

int a[4],digit,sek_old,w,w1,w2,h,t;

заменить на :

int a[4],digit,sek_old,w,w1,w2;
float t,h;

для температуры после
lcd.setCursor(11,0);lcd.print(char(223));

добавить

lcd.setCursor(1,14);lcd.print(".");lcd.print((t-(int)t)*10);

для влажности после

lcd.setCursor(11,0);lcd.print("%");

добавить

lcd.setCursor(1,14);lcd.print(".");lcd.print((h-(int)h)*10);

70

Re: Часы с будильником 1602

Не получается и температура (десятые) бежит как бешеная то вниз то вверх
http://forum.rcl-radio.ru/uploads/images/2020/11/e4f6abb646b50ee6dd6e5d341a0c52fc.jpg

#include <Wire.h> 
#include <LiquidCrystal.h>  
#include <Thinary_AHT10.h>
#include <DS3231.h>
      AHT10Class AHT10;
      DS3231 clock;RTCDateTime DateTime;
      LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // Устанавливаем дисплей    
      byte v1[8] = {31,31,31,31,31,31,31,31};
      byte v2[8] = {31,31,31, 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, 0, 0, 0};
      byte v6[8] = { 0, 0,14,31,31,14, 0, 0}; //*
      byte v7[8] = { 0, 0, 0, 0, 0, 0,31,31};
      int a[4],digit,sek_old,w,w1,w2;
      float t,h;
      byte i,d1,d2,d3,d4,d5,d6,e1,e2,e3;
      unsigned long times;
      
   void setup(){ Wire.begin(); clock.begin(); Serial.begin(9600);  AHT10.begin(); 
    //clock.setDateTime(__DATE__, __TIME__);
    lcd.begin(16, 2);
      pinMode(10,INPUT); // SQW часов на 10 ногу
      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);
      clock.setOutput(DS3231_1HZ);
   }
   
   void loop(){
    //if(millis()-times>3000){
    h = AHT10.GetHumidity();// влажность
    t = AHT10.GetTemperature();// температура
    //}
    DateTime=clock.getDateTime(); 
     if(millis()-times<=5000){digit = DateTime.hour*100+DateTime.minute;
     if(w1==1){lcd.clear();w1=0;}w=1;
     if(digit>999){a[0]=digit/1000;}else{a[0]=11;}
     a[1]=digit/100%10;
     a[2]=digit/10%10;
     a[3]=digit%10%10;

     
 for(i=0;i<4;i++){
      switch(i){
        case 0: e1=0,e2=1,e3=2;break;
        case 1: e1=4,e2=5,e3=6;break;
        case 2: e1=9,e2=10,e3=11;break;
        case 3: e1=13,e2=14,e3=15;break;}       
      switch(a[i]){
        case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
        case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
        case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
        case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
        case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
        case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
        case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
        case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
        case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
        case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
       case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;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);}
      
   if(digitalRead(10) == HIGH){lcd.setCursor(7,0);lcd.write((uint8_t)6);}else{ lcd.setCursor(7,0);lcd.write((uint8_t)5);} // SQW часов на 10 ногу
   if(digitalRead(10) == LOW){lcd.setCursor(8,0);lcd.write((uint8_t)6);}else{ lcd.setCursor(8,0);lcd.write((uint8_t)5);} // SQW часов на 10 ногу
 //  lcd.setCursor(8,0);lcd.write((uint8_t)8);
   lcd.setCursor(7,1);if(DateTime.second<10){lcd.print("0");}lcd.print(DateTime.second);
    }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
     if(millis()-times>5000&&millis()-times<6500){digit=t;
    if(w==1){lcd.clear();w=0;}w2=1;
    if(digit>=10){a[0]=digit/10;}else{a[0]=11;}
     a[1]=digit%10;
     
 for(i=0;i<2;i++){
      switch(i){
        case 0: e1=4,e2=5,e3=6;break;
        case 1: e1=8,e2=9,e3=10;break;}       
      switch(a[i]){
        case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
        case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
        case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
        case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
        case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
        case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
        case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
        case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
        case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
        case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
       case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;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(11,0);lcd.print(char(223));lcd.setCursor(1,14);lcd.print(".");lcd.print((t-(int)t)*10);
    
    }

///////////////////////////////////////////////////////////////////////////////////////
    if(millis()-times>=6500&&millis()-times<8000){digit=h;
     if(w2==1){lcd.clear();w2=0;}w1=1;
     a[0]=digit/10;
     a[1]=digit%10;
     
 for(i=0;i<2;i++){
      switch(i){
        case 0: e1=4,e2=5,e3=6;break;
        case 1: e1=8,e2=9,e3=10;break;}       
      switch(a[i]){
        case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
        case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
        case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
        case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
        case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
        case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
        case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
        case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
        case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
        case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
       case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;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(11,0);lcd.print("%");
         
    }
   if(millis()-times>8000){times=millis();} 
   }// loop

71

Re: Часы с будильником 1602

lcd.setCursor(1,14);lcd.print(".");lcd.print((t-(int)t)*10);

lcd.setCursor(14,1);lcd.print(".");lcd.print((t-(int)t)*10,0);

////////////////////

lcd.setCursor(1,14);lcd.print(".");lcd.print((h-(int)h)*10);

lcd.setCursor(14,1);lcd.print(".");lcd.print((h-(int)h)*10,0);

72

Re: Часы с будильником 1602

Да помогло, а как передвинуть эту цифру маленькую после большой температуры без точки?

73

Re: Часы с будильником 1602

lcd.setCursor(15,1);cd.print((h-(int)h)*10,0);

74

Re: Часы с будильником 1602

Спасибо работает

75

Re: Часы с будильником 1602

Господа, как прикрутить сюда 2004 дисплей?