الوصف
وحدة مستشعر الضوء بمقاومة ضوئية LDR
تستخدم هذه الوحدة مقاومة ضوئية (LDR) للاستجابة للضوء المحيط. وتحتوي على مقارن LM393 وتوفر خرجًا تناظريًا يتغير بحسب جهد المقسّم، وخرجًا رقميًا يمكن ضبط عتبته بالمقاومة المتغيرة الموجودة على اللوحة.
🔧 المواصفات المذكورة
- جهد التشغيل: 3.3–5 V DC
- الخرج التناظري (A0): يتغير مع مستوى الضوء المقاس
- الخرج الرقمي (D0): يبدّل حالته قرب العتبة المضبوطة؛ وقد تختلف قطبية HIGH/LOW بحسب تكوين الوحدة
- المقارن: LM393
- الأبعاد: 31 × 14 mm
- مؤشرات LED: مؤشر طاقة ومؤشر خرج (وفق القائمة)
- ثقب التثبيت: 3 mm
⚙️ طريقة العمل
تتغير مقاومة LDR مع شدة الإضاءة. وتكوّن مع مقاومات اللوحة مقسّمًا للجهد، لذلك يتغير خرج A0 مع الضوء المحيط. يقارن LM393 إشارة المقسّم بالعتبة المضبوطة عبر المقاومة المتغيرة ويغيّر حالة D0 عند تجاوزها. وقد يختلف اتجاه الإشارة التناظرية وسلوك HIGH/LOW الرقمي بحسب دارة اللوحة وضبطها.
💡 الاستخدامات
- نماذج أولية للإضاءة التلقائية
- إنذارات الضوء والظلام
- تجارب المنزل الذكي
- روبوتات تتبع الضوء أو اكتشافه
- مشاريع قياس الضوء والتحكم به
📌 أطراف التوصيل
- VCC: تغذية 3.3–5 V DC
- GND: الأرضي
- D0: خرج رقمي للمقارن بمستوى TTL
- A0: خرج تناظري من مقسّم الجهد
🔌 مثال Arduino Uno أساسي
صِل VCC وGND بتغذية الوحدة، وD0 بالطرف D2 في Arduino، وA0 بالطرف A0. نُبقي مثال الشيفرة الأصلي أدناه؛ واضبط المقاومة المتغيرة حسب بيئة الاستخدام.
const int analogPin = A0; // Broche analogique pour la photorésistance
const int digitalPin = 2; // Broche digitale pour la photorésistance
const int ledPin = 13; // Broche de la LED intégrée
void setup() {
Serial.begin(9600); // Initialiser la communication série
pinMode(digitalPin, INPUT); // Configurer la broche digitale comme entrée
pinMode(ledPin, OUTPUT); // Configurer la broche LED comme sortie
}
void loop() {
int analogValue = analogRead(analogPin); // Lire la valeur analogique
int digitalValue = digitalRead(digitalPin); // Lire la valeur digitale
Serial.print("Analog value: ");
Serial.print(analogValue); // Afficher la valeur analogique
Serial.print(" | Digital value: ");
Serial.println(digitalValue); // Afficher la valeur digitale
if (digitalValue == LOW) { // Si la sortie digitale est basse
digitalWrite(ledPin, HIGH); // Allumer la LED
} else {
digitalWrite(ledPin, LOW); // Éteindre la LED
}
delay(500); // Attendre 500 ms avant de refaire une lecture
}
شرح المثال الأساسي
تقرأ الشيفرة الخرجين التناظري والرقمي، وترسل القيم عبر الاتصال التسلسلي، وتتحكم في LED المدمج في Arduino بحسب حالة الخرج الرقمي.
مكونات المثال الأساسي
- Arduino Uno
- وحدة مستشعر ضوء LDR
- أسلاك توصيل
التوصيلات الموضحة في المثال
- VCC: 3.3 V أو 5 V من Arduino ضمن تصنيف الوحدة
- GND: GND في Arduino
- D0: D2 في Arduino
- A0: A0 في Arduino
📟 مثال متقدم: شاشة LCD عبر I2C
نُبقي مثال الشيفرة الأصلي للشاشة أدناه. يعرض القراءة التناظرية ومؤشرًا للضوء/الظلام، ويرسل القيم أيضًا عبر الاتصال التسلسلي.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int analogPin = A0; // Broche analogique pour la photorésistance
const int digitalPin = 2; // Broche digitale pour la photorésistance
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C 0x27, écran 16x2
void setup() {
lcd.begin(); // Initialiser l'écran LCD
lcd.backlight(); // Allumer le rétroéclairage de l'écran LCD
Serial.begin(9600); // Initialiser la communication série
pinMode(digitalPin, INPUT); // Configurer la broche digitale comme entrée
}
void loop() {
int analogValue = analogRead(analogPin); // Lire la valeur analogique
int digitalValue = digitalRead(digitalPin); // Lire la valeur digitale
lcd.setCursor(0, 0);
lcd.print("Luminosite: ");
lcd.print(analogValue); // Afficher la valeur analogique sur l'écran LCD
lcd.setCursor(0, 1);
lcd.print("Etat: ");
if (digitalValue == LOW) {
lcd.print("Clair");
} else {
lcd.print("Sombre");
}
Serial.print("Analog value: ");
Serial.print(analogValue); // Afficher la valeur analogique sur le moniteur série
Serial.print(" | Digital value: ");
Serial.println(digitalValue); // Afficher la valeur digitale sur le moniteur série
delay(500); // Attendre 500 ms avant de refaire une lecture
}
مكونات المثال المتقدم
- Arduino Uno
- وحدة مستشعر ضوء LDR
- شاشة 1602 I2C LCD
- أسلاك توصيل
التوصيلات الموضحة في المثال
- VCC / GND: تغذية الوحدة والأرضي المشترك
- D0: D2 في Arduino
- A0: A0 في Arduino
- SDA / SCL للشاشة: A4 / A5 في Uno
اضبط المقاومة المتغيرة مع مراقبة D0 لتحديد عتبة التبديل. استخدم A0 لقراءة مستوى ضوء متغير؛ واضبط العتبة عمليًا لأن الضوء المحيط وتفاوت المستشعر ودائرة اللوحة تؤثر في القيم.
📚 المكتبات
لا يحتاج المستشعر نفسه إلى مكتبة. يستخدم مثال الشاشة مكتبة Wire القياسية ومكتبة متوافقة مع LiquidCrystal_I2C يمكن تثبيتها من مدير المكتبات في Arduino IDE.









