Re: Часы с будильником 1602
Всем Привет, Хочу узнать , кто-нибудь проверял в минус уходит ? У меня стоят по нулям показание с датчика.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Законченные проекты → Часы с будильником 1602
Всем Привет, Хочу узнать , кто-нибудь проверял в минус уходит ? У меня стоят по нулям показание с датчика.
Всем привет. Как писал выше, часы работают - как часы).
Назрел еще вопрос: возможно ли заменить кнопки на енкодер? Как это реалезировать в коде? Типа нажал: это сит, вправо - ап, влево - доун
Не вижу в этом смысла.
очень удобно, умные часы так построены (носимые)
Не вижу в этом смысла.
Здравствуйте! Хочу спросить про скетч на 23 листе, часы с dht11 ) крестик над секундомером какую роль выполняет ?
Здравствуйте! Хочу спросить про скетч на 23 листе, часы с dht11 ) крестик над секундомером какую роль выполняет ?
Какой крестик?
между часами и минутами по середине над секундомером.
Это большая точка, она должна мигать в такт секундам
У меня просто стоит не моргает. Можно его как то убрать ?
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);}
Спасибо! убрал две строчки и пропала точка
Здравствуйте! Пожалуйста помогите подключить датчик AHT10 вместо DHT11 он более точнее вроде. Пробовал сам заменить но увы. Да и он вроде может температуру показывать с десятыми как это реализовать в коде?
Переменная h должна быть типа float, сейчас она int.
Выводить большими цифрами все число не получится, например десятичный знак меленькой цифрой
выводить десятичный знак можно примерно так:
lcd.setCursor(1,14);lcd.print(".");lcd.print((h-(int)h)*10);
#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 ногу ардуины подключил
По коду все верно, должно работать, проверьте секундные импульсы с выхода sqw
Да всё заработало на про мини. Подскажите как вывести десятые градуса маленькой цифрой без точки рядом с большими цифрами градуса?
float h;
lcd.setCursor(1,14);lcd.print(".");lcd.print((h-(int)h)*10);
Не получается. А куда эту строчку вставлять надо?
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);
Не получается и температура (десятые) бежит как бешеная то вниз то вверх
#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
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);
Да помогло, а как передвинуть эту цифру маленькую после большой температуры без точки?
lcd.setCursor(15,1);cd.print((h-(int)h)*10,0);
Спасибо работает
Господа, как прикрутить сюда 2004 дисплей?
forum.rcl-radio.ru → Законченные проекты → Часы с будильником 1602
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|