في الآونة الأخيرة ، بدأت في دراسة برمجة متحكم Arduino. بعد أن أكملت العديد من التمارين الأساسية (المصابيح الوامضة ، والعمل مع المدخلات المنفصلة والتناظرية ، وعرض المعلومات على شاشة LCD ، وما إلى ذلك) ، أردت أن أصنع نوعًا من الأجهزة المفيدة للمنزل.قررت أن أجعل مقياس درجة الحرارة والرطوبة في الغرفة ، مع إشارة إلى المعلمات على شاشة LCD. لقد صنعت أيضًا إضاءة خلفية متكيفة للشاشة ، والتي تغير السطوع اعتمادًا على مستوى الإضاءة في الغرفة. هذا يسمح لك بتقليل استهلاك الطاقة للجهاز ، وبالتالي زيادة عمر البطارية.في المشروع ، استخدمت المكونات التالية:1. لوحة Arduino Uno
2. شاشة LCD1602 مع وحدة دعم بروتوكول I2C. من أجل تقليل عدد الأسلاك وتبسيط توصيل الشاشة ، قررت توصيله عبر بروتوكول I2C ، لذلك قمت بلحام وحدة تحويل خاصة بشاشة LCD.
"3. مستشعر درجة الحرارة والرطوبة DHT11. يسمح لك بتحديد الرطوبة من 20-80٪ ودرجة الحرارة من 0-50 درجة مئوية. يحتوي المستشعر على 4 مخرجات ، ولكن يتم استخدام 3 فقط. يجب تثبيت المقاوم 10kΩ بين خرج الطاقة ومخرج البيانات. I لقد استخدمت مستشعرًا جاهزًا مثبتًا على اللوحة مع المقاوم متصل ، بحيث يمكنك توصيله بأمان بلوحة Arduino.
"4. مقاومة ضوئية. وهي متصلة بلوحة Arduino مع سحب إلى GND ، من خلال المقاوم 10kΩ.
مخطط الاتصال على النحو التالي:
يتم توصيل المقاوم الضوئي إلى المدخلات التناظرية A0 للوحة Arduino. يتم توصيل خط بيانات مستشعر DHT11 بدبوس منفصل 2 ، ويتم توصيل دبوس الطاقة بـ + 5V Arduino ، على التوالي ، ويتم توصيل دبوس GND في أرض لوحة Arduino. يتم توصيل شاشة LCD بطاقة اللوحة ، ودبوس SDA متصل بـ A4 ، ودبوس SCL إلى A5. يتم توصيل خط التحكم في سطوع الإضاءة الخلفية بالطرف 9 ، حيث يتم إنشاء إشارة PWM.أدناه هو رمز المصدر:#include "DHT.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
int LD;
#define DHTPIN 2
#define LED 9
#define FOTO 0
DHT dht(DHTPIN, DHT11);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
pinMode(LED, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
}
int light(int svet)
{
if (svet<25)
{
return 255;
}
if(svet>1020)
{
return 2;
}
else
{
int L=(int)(-0.2*svet+261.262);
return L;
}
}
void loop() {
int f = analogRead(FOTO);
LD=light(f);
delay(2000);
analogWrite(LED, LD);
float h=dht.readHumidity();
float t=dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("Temp ");
lcd.print(t);
lcd.setCursor(0,1);
lcd.print("Hum ");
lcd.print(h);
}
بعد تجميع هذا الرمز ، نحصل على مثل هذا الجهاز العامل:
في المستقبل أخطط لجعل بعض الأجهزة أكثر إثارة للاهتمام وأكثر تعقيدًا على Arduino.قمت أيضًا بعمل فيديو حيث عرضت كيف يعمل الجهاز: