مقدمة
يساعد حساس مستوى الماء على قياس كمية الماء في حمامات السباحة والآبار والغواصات والسخانات وغسالات الملابس الأوتوماتيكية وتجمعات مياه الأمطار ويمكننا الاستفادة منه لصنع نظام لسقيا الطيور في الصيف نضعه على نوافذ ومداخل المنزل أو الحدائق أو الشوارع العامة، في هذا الدرس ستتعلم صنع نظام يساعدك على تحديد مستوى الماء باستخدام الاردوينو وحساس مستوى الماء.
المواد والأدوات
1× اردوينو اونو
1× 40 رأس دبوس
حساس مستوى الماء
يحتوي حساس مستوى الماء على سلسلة من عشرة خطوط نحاسية مكشوفة، خمسة منها خطوط كهربائية وخمس خطوط استشعارية.
هذه الخطوط متشابكة بحيث يكون هناك خط إحساس واحد بين كل خطين للطاقة.
عادةً ما تكون هذه الخطوط غير متصلة ولكن يتم تغطيتها بالماء عند غمرها فيه.
له 3 مداخل موضحة في الشكل التالي:
توصيل الدائرة
لمعرفة المزيد حول الشاشة الكرستالية يمكنك الرجوع للدرس التحكم بالشاشة الكرستالية LCD
لابد من تلحيم المنافذ مع الشاشة الكرستالية، للمزيد حول اللحام يمكنك الرجوع للدرس تعلم كيفية التلحيم – تلحيم القطع باللوحة الإلكترونية
الكود البرمجي
ارفع كود نظام تحديد مستوى الماء على لوحة الاردوينو باستخدام برنامج اردوينو IDE.
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int resval = 0; // holds the value int respin = A5; // sensor pin used void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("WATER LEVEL: "); } void loop() { // set the cursor to column 0, line 1 lcd.setCursor(0, 1); resval = analogRead(respin); //Read data from analog pin and store it to resval variable if (resval<=20) { lcd.println("Empty "); } else if (resval>20 && resval<=350) { lcd.println("Low "); } else if (resval>350 && resval<=400) { lcd.println("Medium "); } else if (resval>400){ lcd.println("High "); } delay(1000); }
شرح الكود البرمجي
هذا السطر يستدعي مكتبة الشاشة الكرستالية.
نستطيع تحميلها بتتبع المسار التالي:
Sketch > Include libraries > Manage libraries
ثم نكتب بخانة البحث Liquid crystal by Arduino
ثم نضغط على Install.
#include <LiquidCrystal.h>
بعد ذلك عرفنا المتغيرات اللازمة مثل المتغيرات الخاصة بمنافذ الشاشة الكرستالية التي تم توصيلها مع الاردوينو .
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
عرفنا المتغير resval عند قيمة ابتدائية تساوي صفر وعرفنا المتغير respin يمثل قيمة قراءة المدخل التناظري A5.
int resval = 0; // holds the value int respin = A5; // sensor pin used
في دالة ()setup، التي ستبدأ عند بدء التشغيل، تتم تهيئة الشاشة وتشغيل الإضاءة الخلفية وطباعة النص “WATER LEVEL: “.
void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("WATER LEVEL: "); }
في الدالة ()loop، سيتم حساب كمية الماء المحيطة بحساس مستوى الماء.
إذا كانت أقل أو تساوي 20 سينبطع على الشاشة مستوى الماء فارغ، هنا عليك تعبئة العلبة بالماء من جديد.
إذا كانت بين 20 و350 سينطبع على الشاشة مستوى الماء منخفض.
إذا كانت أكبر من 350 وأقل من 400 سينطبع على الشاشة مستوى الماء متوسط.
إذا كانت أكبر من 400 سينطبع على الشاشة مستوى الماء مرتفع.
void loop() { // set the cursor to column 0, line 1 lcd.setCursor(0, 1); resval = analogRead(respin); //Read data from analog pin and store it to resval variable if (resval<=20) { lcd.println("Empty "); } else if (resval>20 && resval<=350) { lcd.println("Low "); } else if (resval>350 && resval<=400) { lcd.println("Medium "); } else if (resval>400){ lcd.println("High "); } delay(1000); }
يمكنك اختبار نظام تحديد مستوى الماء.
لا تنسَ فصل وحدة الطاقة بعد الانتهاء من استخدام النظام.