الكود البرمجي
قم برفع الكود البرمجي التالي على لوحة الاردوينو
#include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); #define sensorPin1 9 #define sensorPin2 10 #define led 8 int sensorState1 = 0; int sensorState2 = 0; int count=0; void setup() { pinMode (sensorPin1, INPUT_PULLUP); pinMode (sensorPin2, INPUT_PULLUP); pinMode(led, OUTPUT); lcd.begin(16,2); lcd.setCursor(4,0); lcd.print("COUNTER"); lcd.setCursor(0,1); lcd.print("No Visitors "); delay(200); } void loop() { sensorState1 = digitalRead(sensorPin1); sensorState2 = digitalRead(sensorPin2); if(sensorState1 == LOW){ count++; delay(500); } if(sensorState2 == LOW){ count--; delay(500); } if(count<=0) { digitalWrite(led, LOW); lcd.setCursor(0,1); lcd.print("No visitors "); } else if (count>0 ){ digitalWrite(led, HIGH); lcd.setCursor(0,1); lcd.print("Visitors: "); lcd.setCursor(12,1); lcd.print(count); lcd.setCursor(13,1); lcd.print(" "); } }
شرح الكود البرمجي
بالبداية نقوم باستدعاء مكتبة الشاشة الكرستالية LiquidCrystal و نعرف منافذ الشاشة و منافذ حساس تجنب العوائق و الليد
#include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); #define sensorPin1 9 #define sensorPin2 10 #define led 8
ننشئ متغير لحالة الحساس الأول و الثاني بقيمة ابتدائية 0
int sensorState1 = 0; int sensorState2 = 0;
ننشئ متغير يمثل قيمة عدد الأفراد الموجودين بالغرفة
int count=0;
في دالة (void setup) نعرف منافذ الادخال و منافذ الاخراج للقطع المستخدمة ونقوم بتهيئة الشاشة
void setup() { pinMode (sensorPin1, INPUT_PULLUP); pinMode (sensorPin2, INPUT_PULLUP); pinMode(led, OUTPUT); lcd.begin(16,2); lcd.setCursor(4,0); lcd.print("COUNTER"); lcd.setCursor(0,1); lcd.print("No Visitors "); delay(200); }
في دالة ال(void loop) نقوم بقراءة اشارة الدخل من الحساس
void loop() { sensorState1 = digitalRead(sensorPin1); sensorState2 = digitalRead(sensorPin2); if(sensorState1 == LOW){ count++; delay(500); } if(sensorState2 == LOW){ count--; delay(500); }
اذا كانت قيمة متغير عدد أفراد الغرفة (count) أقل أو يساوي 0 يتم ايقاف تشغيل الاضاءة و يتم طباعة “No Visitors” على الشاشة الكرستالية
if(count<=0) { digitalWrite(led, LOW); lcd.setCursor(0,1); lcd.print("No visitors "); }
اذا كانت قيمة متغير عدد أفراد الغرفة (count) وطباعة عدد أفراد الغرفة على الشاشة الكرستالية أكبر من 0 يتم تشغيل الاضاءة
else (count>0 ){ digitalWrite(led, HIGH); lcd.setCursor(0,1); lcd.print("Visitors: "); lcd.setCursor(12,1); lcd.print(count); lcd.setCursor(13,1); lcd.print(" "); } }