سلسلة مشاريع الأردوينو للمبتدئين ( المشروع عـــ19ـــدد ) : ساعة بشاشة عرض LCD و منبه مع عرض لدرجات الحرارة و الرطوبة بالغرفة
المطلوب :
1- عرض التوقيت و التاريخ
2- عرض توقيت المنبه المنبه
3- عرض درجة الحرارة و الرطوبة
4- امكانية ظبط ساعة المنبه و الدقائق
5- استعمال 2 زر جرسا لزيادة و تخفيض الساعات و الدقائق عند تعديل المنبه
6- بيان كل العمليات عن طريق عرض ريانات على الشاشة
القطع المطلوبة
1- اردوينو اونوا
2- شاشة عرض LCD 16*2
3- قاطع
4- حساس حرارة ورطوبة DHT11
5- 4 زرجرس
6- 1 ليد
7- منبه
المخطط على البروتس
الكود
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
int alarm_H=0;
int alarm_M=0;
#include
#include
RTC_DS1307 RTC;
#include
const int rs = A1, en = A0, d4 = A2, d5 = A3, d6 = 13, d7 = 12;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
dht.begin();
lcd.begin(16, 2);
lcd.setCursor(4, 0);
lcd.print("Initialising");
delay(100);
lcd.clear();
lcd.print("Weeelkooom");
delay(100);
lcd.clear();
lcd.print("Salem BEN MOUSSA");
lcd.setCursor(4, 2);
lcd.print("\\ARDOUINO\\");
delay(200);
lcd.clear();
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,INPUT_PULLUP);
pinMode(9,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
pinMode(5,INPUT_PULLUP);
pinMode(2,INPUT);
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
digitalWrite(10,HIGH);
}
void loop() {
if (digitalRead(5) == HIGH){
lcd.clear();
DateTime now = RTC.now();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("TIME:");
lcd.print(now.hour(), DEC);
lcd.print('-');
lcd.print(now.minute(), DEC);
lcd.print('-');
lcd.print(now.second(), DEC);
lcd.setCursor(0, 1);
lcd.print("DATE:");
lcd.print(now.year(), DEC);
lcd.print('-');
lcd.print(now.month(), DEC);
lcd.print('-');
lcd.print(now.day(), DEC);
delay(1000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("alarm_TIME");
lcd.setCursor(6,1);
lcd.print(alarm_H);
lcd.print(":");
lcd.print(alarm_M);
delay(1000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t) ) {
lcd.clear();
lcd.println(F("Failed to read from DHT sensor!"));
return;
}
lcd.clear();
lcd.setCursor(2,0);
lcd.print("H(%): ");
lcd.print(h);
lcd.setCursor(2,1);
lcd.print("T(C): ");
lcd.print(t);
delay(1000);
if ( now.hour() == alarm_H && now.minute() == alarm_M )
{
// lcd.noBacklight();
DateTime now = RTC.now();
digitalWrite(11,HIGH);
digitalWrite(10,HIGH);
delay(10);
digitalWrite(10,LOW);
delay(10);
}
else {
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
}
}
else {
lcd.clear();
lcd.setCursor(2,0);
lcd.print("set_alarm");
lcd.setCursor(3,1);
lcd.print("H: ");
lcd.print(alarm_H);
lcd.setCursor(8,1);
lcd.print("M: ");
lcd.print(alarm_M);
delay(100);
if (digitalRead(9) == LOW){
alarm_H=alarm_H;
if (alarm_H < 24){
alarm_H++;
delay(100);}
else {
lcd.print("alarm_H<=24");
alarm_H=0;
delay(200);
}
}
else if (digitalRead(8) == LOW){
alarm_H=alarm_H;
if (alarm_H > 0){
alarm_H--;
delay(100);}
else {
lcd.clear();
lcd.setCursor(2,0);
lcd.print("set_B_UP");
alarm_H=0;
delay(200);
}
}
else if (digitalRead(7) == LOW){
alarm_M=alarm_M;
if (alarm_M < 60){
alarm_M++;
delay(100);}
else {
lcd.print("alarm_M<=60");
delay(200);
alarm_M=0;
}
}
else if (digitalRead(6) == LOW){
alarm_M=alarm_M;
if (alarm_M > 0){
alarm_M--;
delay(100);}
else {
lcd.clear();
lcd.setCursor(2,0);
lcd.print("set_B_UP");
delay(200);
alarm_M=0;
}
}
}
}
فهرس سلسلة مشاريع أردوينو للمبتدئين
http://salembenmoussa.blogspot.com/2020/05/blog-post_17.html
ليست هناك تعليقات:
إرسال تعليق