القائمة الرئيسية

الصفحات

عمل مؤقت وطريقة استخدام LCD بواسطة Arduino

lcd arduino

سنتعرف من خلال هذا الموضوع كيف تستخدم Qapass LCD وكيف تعمل شفرة اردوينو في استخدام مؤقت لتمرير الكهرباء وقطعه مع إصدار رنين عند انتهاء الوقت المحدد .


اللوازم التي تحتاج اليها :

اللوازن التي سنحتاج اليها هي Qapass LCD ARDUINO من نوع LiquidCrystal-I2C ، وقطعة Tone  أو يمكن استخدام مكبر صوت صغير بدل من Tone ، وثلاث لامبات LED وزر بوتون push ، وستحتاج الى Rely يعمل على 5 فولت ومن الافضل عدم استخدام الخاص بالاردوينو إلا اذا كنت تعرف طريقة جعله يعمل فقط من خلال 2 الاسلاك ، وطبعا وجود اردوينو UNO ان امكن ويمكنك شراؤه من المواقع الصينية بثمن لا يتجاوز 10 دولار تقريبا .


تثبيت مكتبة LCD Liquid Crystal I2C :

أولا ستحتاج إلى تثبيت مكتبة lcd لكي تعمل معك الأكواد وذلك من خلال تحميل المكتبة من الرابط التالي وتأكد من التحميل بالضغط على Download ZIP :

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

بعد ذلك تفتح واجهة تمرير أكواد الأردوينو وتتبع طريقة تثبيت المكتبة الجديدة :



ضع الكود التالي ومرر الشفرة للتأكد من اشتغال شاشة LCD 

//-------Code Arduino-------

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup(){
lcd.begin();
lcd.backlight();
}
void loop(){
lcd.clear();
lcd.print("www.tooroq.com");

lcd.setCursor (0,1);
lcd.print("Hello World!");

delay(500);
}
//-------Code Arduino-------

الأمر lcd.clear() يقوم بمسح ما هو مطبوع حاليا على الشاشة .
الأمرlcd.print يطبع الجملة التي تريد .
الامر lcd.setCursor (0,1) يقوم بتحديد المكان الذي تريد الطباعة فيه فالصفر يعني الطباعة من بداية سطر الشاشة والواحد يعني انتقل للسطر الثاني .


الدائرة التي سنقوم ببنائها وسنشرح الأكواد بالتفصيل :

دائرة اردوينو

الدائرة أو الاختراع هذا يمكن استخدامه في عدة أمور، يمكنك جعله كمنبه أو تحديد وقت لتمرير الكهرباء وقطعه وهذا يصلح في عدة أمور ، مثل الذي يترك جهاز يشتغل ويريد أن يطفأه بعد مدة معينة والجميل في الأمر أنك تربطه من خلال USB وعند قطع الكهرباء سينطفأ حتى الآردوينو ، أو يمكن استخدام الدائرة في الإدارات أو في الفلاحة لأصحاب الري أو الطاقات الشمسية .
 والدائرة قابلة للتطوير ، يعني يمكنك جعل الكهرباء مثلا يمر عشر دقائق وينقطع عشر دقائق وهكذا وهذا يصلح للمحركات لعدم حرقها والضغط عليها في العمل .

وهذا شكل توضيحي بعد تركيب كل اللوازم التي ذكرناها في الدرس :

شرح بعض القطع بالدائرة ومن أين حصلت عليها :

القطعة التي بها الأزرار ولامبات الليد جئت بها من محرك أو دوار الدش القديم الذي كان يستخدم في تدوير صحن الريسيفر إلى الأقمار الإصطناعية الأخرى .
Rely الذي استخدمت هو رولي السيارات لأن الذي يعمل بـ 5 فولت قد يكون نادر الوجود إلا إذا استخدمت الخاص بالآردوينو ، ويمكنك استخدام الطريقة التي استخدمت في الصورة فعند الحصول على رولي السيارات افتحه وقم بتخفيف قوة التجبيد وسيعمل بـ 5 فولت دون الحاجة إلى 12 فولت .

عمل الدائرة :
عند الضغط على زر + سيتم زيادة 5 دقائق وطبعا إذا ضغطت زر - سينقص 5 دقائق ، وهناك ليد تحت كل زر بوتون إذا ضغطت يشتغل الليد للتأكد أنه يتم الضغط والزيادة وطبعا تظهر زيادة الدقائق على الشاشة .
وبمجرد تزيد 5 دقائق يبدأ العد العكسي ويمر الكهرباء في الرولي لتمرير كهرباء 220 فولت وعند الوصول إلى الصفر يشتغل الليد الأحمر ويتوقف تمرير الكهرباء إلى الرولي وعندها يتوقف مرور تيار الكهرباء 220 فولت .

الكود المستخدم في الدائرة :
//-------Code Arduino-------
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup(){
  lcd.begin();
  lcd.backlight();
   pinMode(7,OUTPUT); // tone
   pinMode(8,OUTPUT); // LED RED
   pinMode(9,OUTPUT); // LED LEFT
   pinMode(10, OUTPUT); // LED RITH
   pinMode(11, OUTPUT); // Rely

   Serial.begin(9600);
}

int x = 0 ;

void loop(){
  digitalWrite(9,LOW); 
  digitalWrite(10,LOW); 
  
 int sensorValue = analogRead(A0);
   if (sensorValue > 1002) {
    x = x + 305 ;
     digitalWrite(8,LOW); 
     digitalWrite(9,HIGH); 
     digitalWrite(11,HIGH);
     noTone(7) ;
  }
  
  if (sensorValue < 1) {
    x = x - 305 ;
     digitalWrite(8,LOW); 
     digitalWrite(10,HIGH); 
     noTone(7) ;     
  }


 int m = x / 60 ;
 int s = x % 60 ;
 
 if (x >= 0){  
   lcd.clear();
   lcd.print("www.tooroq.com");
   lcd.setCursor (1,1); 
   lcd.print( m );
   lcd.print( ":" );
   lcd.print( s );
   x-- ;
   delay(1000);
   
  }else{
     tone(7, 1000);
     digitalWrite(8,HIGH); 
     digitalWrite(11,LOW); 
     x = 0 ;
  }
 
}
//-------Code Arduino -------
شرح الكود :

سنشرح الأكواد فقط التي قد تظهر معقدة أو للإستفادة لمن أراد التطوير أو تغيير شيء ، وبالطبع الأكواد المستعملة في الأول أو داخل دالة setup()   فهي واضحة وهي لتجهيز المداخل التي سنستعمل في الآردوينو .

 int x = 0  أعطيت لإكس قيمة 0 وهي القيمة التي يبدأ بها الأردوينو بالثواني ويمكنك تغيير القيمة فإن وضعت 60 سيبدأ التنازل من ستون ثانية أو 120 يعني دقيقتين وهكذا .

 دالة LOOP  او دالة التكرار موجود بها الأكواد التي قد تضطر إلى تغييرها إن أردت 
digitalWrite(9,LOW) 
 digitalWrite(10,LOW) 
ستنطفأ الليدات التي تحت الأزرار عند تكرار الدالة كل مرة لأنها تشتغل بمجرد الضغط فقط .

 int sensorValue = analogRead(A0)
سلك A0 و سلك GND و 5V تستخدم هذه الأسلاك في المقاومة المتغيرة وأنا عملت مكانها زرين بوتون فإذ التقى A0 مع GND تهبط قيمة  sensorValue إلى الصفر وهي اقل قيمة واذا التقى A0 مع 5V تطلع قيمة sensorValue إلى 1024 وهي أعلى قيمة ولهذا وضعت الاكواد التالية :
if (sensorValue > 1002) {
x = x + 305 ;
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(11,HIGH);
noTone(7) ;
}
if (sensorValue < 1) {
x = x - 305 ;
digitalWrite(8,LOW);
digitalWrite(10,HIGH);
noTone(7) ;
}
if هي كلمة شرط في البرمجة فاذا ضغطت على الزيادة تطلع قيمة sensorValue وتزيد 300 على X التي اعطيناها قيمة من قبل وهذا يعني اني اضفت 5 دقائق ويمكنك وضع 600 والتي تعني عشر دقائق وهكذا ، وإذا ضغطت على زر الناقص تنقص كما شاهدت بالكود .
noTone(7) تعني أقف الرنة التي تصدر من Tone .

int m = x / 60
int s = x % 60
هذه الاكواد يفهمها لمن عمل في البرمجة وخصوصا جافا أو بي اتش بي فعلامة / تعني القسمة والناتج الذي نحصل عليه سيظهر بدون فاصلة لأني عرفت x من قبل ب int وإلا إذا اردت طباعة الفاصلة سنعرف بمتغير float بدل int .
مثلا إذا وضعت 9/4 والتي تعني 9 قسمة 4 سيكون التاتج 2  بدون ظهور الفاصبة او الباقي في متغير int أما float فسنحصل على الناتج 2.25 .
العلامة % تعني أعطنا القيمة المتبقية من القسمة فقط يعني إذا قسمت 10 على 3 ستحصل على الناتج 1 وهو العدد الباقي من القسمة ، وفعلنا هذا في البرمجة لنحصل على الدقائق والثواني كل واحد على حده بهذا الشكل 5:58  .

الأكواد الأخرى واضحة منها ما سيشغل الليد الأحمر وتشغيل صوت التون وأما الأمر delay(1000) فهو تأخر لمدة ثانية قبل تنفيد الأمر الموالي و1000 هي بالمليي ثانية فإن وضعت 500 فيعني توقف نصف ثانية .
shema timer arduino







هل اعجبك الموضوع :

تعليقات

التنقل السريع