في هذا المشروع سنتعلم كيفية استخدام الأردوينو لعمل جهاز بسيط يستخدم لإختبار حالة البطارية.
المكونات المطلوبة
البطارية Battery
البطارية احد اهم الوسائل للحصول على جهد كهربائي لتشغيل مختلف الأجهزة. وهي عبارة عن وعاء يحتوي على مواد كيميائية تتفاعل مع بعضها لتوليد سيل من الإلكترونات. ومع مرور الوقت والإستخدام يقل هذا التفاعل الكيميائي مما يؤدي إلى قلة الشحنات الكهربائية وبالتالي انتاج فولتية اقل.
كي نتعرف على حالة البطارية، سنقوم بقياس جهدها لمعرفة ما إذا كانت البطارية ضعيفة أم متوسطة أم جيدة الشحن.
توصيل الدارة
قم بتوصيل الدارة كما هو مبين بالشكل التالي :
تم توصيل البطارية مع الاردوينو كما هو موضح بالجدول التالي .
البطارية | الاردوينو |
الاحمر | A0 |
الاسود | Ground |
سيقوم الأردوينو بقياس جهد البطارية ومقارنته مع قيم محددة، واعتمادا على جهد البطارية سيتم إضاءة واحد من LEDs. على سبيل المثال إذا كانت البطارية جيدة سيتم إضاءة الـ LED الاخضر، وإذا كانت ضعيفة يضيء الأحمر، وإذا كانت متوسطة يضيء الأصفر.
الكود البرمجي
// new indicator #define gled 2 // ok indicator #define yled 4 // old indicator #define rled 6 int analogVal = 0; float voltage = 0; void setup() { // put your setup code here, to run once: pinMode(gled, OUTPUT); pinMode(yled, OUTPUT); pinMode(rled, OUTPUT); } void loop() { // put your main code here, to run repeatedly: analogVal = analogRead(0); voltage = 0.0048*analogVal; if(voltage > 1.6) { digitalWrite(gled, HIGH); delay(2000); digitalWrite(gled, LOW); delay(1000); } else if(voltage < 1.6 && voltage > 1.4) { digitalWrite(yled, HIGH); delay(2000); digitalWrite(yled, LOW); delay(1000); } else if(voltage <= 1.4) { digitalWrite(rled, HIGH); delay(2000); digitalWrite(rled, LOW); delay(1000); } }
شرح الكود :
في البداية، نقوم بتسمية منافذ الاردوينو التي تم توصيلها مع القطع الالكترونية. ثم يتم الإعلان عن المتغيرات التي سنحتاجها في البرنامج. سيتم استخدام المتغير analogVal لتسجيل قراءة الأردوينو للبطارية. والمتغير voltage لتسجيل جهد البطارية الفعلي بعد تحويلها إلى قيمة الجهد الفعلي.
// new indicator #define gled 2 // ok indicator #define yled 4 // old indicator #define rled 6 int analogVal = 0; float voltage = 0;
في الدالة ()setup، نقوم بإعداد الـ LEDs كمخرج.
void setup() { // put your setup code here, to run once: pinMode(gled, OUTPUT); pinMode(yled, OUTPUT); pinMode(rled, OUTPUT); }
في الدالة ()loop، نقوم بقراءة قيمة جهد البطارية ثم تحويلها إلى قيمة الجهد الفعلية.
analogVal = analogRead(0); voltage = 0.0048*analogVal;
ثم نقوم بعملية المقارنه للجهد بقيم معينة، وإعتمادا على هذا الجهد يتم إضاءة الـ LED الذي يعبر عن حالة البطارية.
if(voltage > 1.6) { digitalWrite(gled, HIGH); delay(2000); digitalWrite(gled, LOW); delay(1000); } else if(voltage < 1.6 && voltage > 1.4) { digitalWrite(yled, HIGH); delay(2000); digitalWrite(yled, LOW); delay(1000); } else if(voltage <= 1.4) { digitalWrite(rled, HIGH); delay(2000); digitalWrite(rled, LOW); delay(1000); }