الكود البرمجي
#include <LiquidCrystal.h> const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); #define buzzer 8 #define Gas A0 void setup() { Serial.begin(9600); lcd.begin(16,2); pinMode(buzzer,OUTPUT); lcd.setCursor(0, 0); lcd.print("Calibrating"); for(int i = 0; i <10; i++) { if (i==4) { lcd.setCursor(0, 1); lcd.print("."); } else lcd.print("."); delay(500); } lcd.setCursor(5,1); lcd.print("done"); delay(1000); lcd.clear() ; lcd.setCursor(1,0); lcd.print("SENSOR ACTIVE"); delay(1500); lcd.clear(); } void loop() { int gasSensor = analogRead(Gas); if (gasSensor > 300) { digitalWrite(buzzer,HIGH); lcd.setCursor(0, 0); lcd.print("Value: "); lcd.print(gasSensor); Serial.print(gasSensor); Serial.print("\t"); lcd.setCursor(0,1); Serial.println("Gas is Detected"); lcd.print("Gas is Detected"); delay(300); lcd.clear(); } else if (gasSensor < 300) { digitalWrite(buzzer,LOW); lcd.setCursor(0, 0); lcd.print("Value: "); lcd.print(gasSensor); Serial.print(gasSensor); Serial.print("\t"); lcd.setCursor(0,1); Serial.println("Gas not Detected"); lcd.print("Gas not Detected"); delay(300); }}
إذا كانت نسبة التسرب 300 فأكثر سينطلق جرس الإنذار؛ لتنبيه الأفراد المتواجدين في المكان بوجود تسرب وسيكون هناك توضيح لكمية التسرب على الشاشة الكرستالية.
هذا السطر يطلب من الأردوينو استعمال مكتبة الشاشة الكرستالية (حتى يستطيع الاردوينو استيعاب الأوامر الخاصة بالشاشة).
نستطيع تحميلها بتتبع المسار التالي:
Sketch > Include libraries > Manage libraries
ثم نكتب بخانة البحث Liquid crystal by Arduino
ثم نضغط على Install.
#include <LiquidCrystal.h>
هذه الأسطر توضح منافذ الاردوينو التي ستستخدمها للربط في هذا المشروع:
#define buzzer 8 #define Gas A0
بعد ذلك أعلنا عن المتغيرات اللازمة مثل المتغيرات الخاصة بالشاشة الكرستالية والتي تستخدمها المكتبات أيضًا:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
في الدالة ()setup قمنا بوضع الإعدادات اللازمة مثل تشغيل الشاشة الكرستالية وتهيئتها وبيان جاهزية الحساس لاختبار المكان:
void setup() { Serial.begin(9600); lcd.begin(16,2); pinMode(buzzer,OUTPUT); lcd.setCursor(0, 0); lcd.print("Calibrating"); for(int i = 0; i <10; i++) { if (i==4) { lcd.setCursor(0, 1); lcd.print("."); } else lcd.print("."); delay(500); } lcd.setCursor(5,1); lcd.print("done"); delay(1000); lcd.clear(); lcd.setCursor(1,0); lcd.print("SENSOR ACTIVE"); delay(1500); lcd.clear(); }
تبدأ عملية المعايرة واختبار جاهزية حساس الغاز.
ستظهر رسالة عند انتهاء عملية المعايرة (done).
تليها رسالة تبين جاهزية الحساس لاختبار المكان.
في الدالة ()loop يقوم الحساس بحساب نسبة الغاز الموجود في الهواء.
إذا كانت نسبة الغاز أكثر من 300 فسينطلق جرس الإنذار؛ لتنبيه الأفراد بوجود تسرب وسيتم طباعة نسبة التسرب على الشاشة.
إذا كانت نسبة الغاز أقل من 300 فسينطفئ جرس الإنذار ويُطمئن الأفراد بعدم وجود تسرب وسيتم طباعة نسبة الغاز الطبيعية المنتشرة في الهواء على الشاشة.
void loop() { int gasSensor = analogRead(Gas); if (gasSensor > 300) { digitalWrite(buzzer,HIGH); lcd.setCursor(0, 0); lcd.print("Value: "); lcd.print(gasSensor); Serial.print(gasSensor); Serial.print("\t"); lcd.setCursor(0,1); Serial.println("Gas is Detected"); lcd.print("Gas is Detected"); delay(300); lcd.clear(); } else if (gasSensor < 300) { digitalWrite(buzzer,LOW); lcd.setCursor(0, 0); lcd.print("Value: "); lcd.print(gasSensor); Serial.print(gasSensor); Serial.print("\t"); lcd.setCursor(0,1); Serial.println("Gas not Detected"); lcd.print("Gas not Detected"); delay(300); } }
هنا نسبة الغاز في المكان أكثر من 300.
هنا نسبة الغاز في المكان أقل من 300.