اردوينو – الدرس الثالث عشر – عرض درجة الحرارة والاضاءة على الشاشة (الجزء الثاني)

مبتدئ

image_pdf

الكود البرمجي

الكود البرمجي لهذا الدرس يعتمد على الكود البرمجي للدرس الثاني عشر، وقمنا باضافة بعض الاسطر لنتمكن من عرض درجة الحرارة والاضاءة على شاشة LCD

#include <LiquidCrystal.h> 
 
int tempPin = 0;
int lightPin = 1;
 
//                BS  E  D4 D5  D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
 
void setup()
{
  lcd.begin(16, 2);
}
 
void loop()
{
  // Display Temperature in C
  int tempReading = analogRead(tempPin);
  float tempVolts = tempReading * 5.0 / 1024.0;
  float tempC = (tempVolts - 0.5) * 100.0;
  float tempF = tempC * 9.0 / 5.0 + 32.0;
  //         ----------------
  lcd.print("Temp         F  ");
  lcd.setCursor(6, 0);
  lcd.print(tempF);
 
  // Display Light on second row
  int lightReading = analogRead(lightPin);
  lcd.setCursor(0, 1);
  //         ----------------
  lcd.print("Light           ");  
  lcd.setCursor(6, 1);
  lcd.print(lightReading);
  delay(500);
}

في السطر التالي قمنا بوضع تعليق ‘comment’ لمعرفة التوصيلات ما بين منافذ الاردوينو ورؤوس شاشة الـLCD

//                BS  E  D4 D5  D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

هذا يسهل عملية التعديل واستخدام منافذ اخرى من اختيارك اذا رغبت لاحقاً.

في دالة setup هنالك امرين علينا القيام بها ، الأول علينا تحويل القيمة التناظرية analog لمستشعر الحرارة إلى مقياس حرارة صحيح ، والثاني هو اظهارها على شاشة الـLCD

أولا لنلقي نظرة على طريقة تحويل واحتساب درجة الحرارة:

  int tempReading = analogRead(tempPin);
  float tempVolts = tempReading * 5.0 / 1024.0;
  float tempC = (tempVolts - 0.5) * 100.0;
  float tempF = tempC * 9.0 / 5.0 + 32.0;

قمنا بالسطر الأول بقراءة القيمة التناظرية من مستشعر الحرارة وتخزين القيمة في tempReading
السطر الثاني قمنا بضرب قيمة tempReading في 5 ثم القسمة على 1024 وتخزين الناتج في tempVolts وهي قيمة الجهد ( مابين 0 و 5 )
السطر الثالث  قمنا بطرح 0.5 من قيمة tempVolts  (الجهد) ثم ضربها في 100 وتخزين القيمة في tempC وذلك لتحويل الجهد إلى درجة الحرارة C
السطر الرابع قمنا بضرب قيمة tempC (درجة حرارة C) في 9 ثم قسمتها على 5 ثم جمعها+32 وتخزين القيمة في tempF وذلك لتحويل درجة الحرارة C إلى درجة حرارة F

عرض القراءات على شاشة LCD قد تكون صعبة وذلك لاستمرار تغير قيم القراءات وعدد خانات القراءة مما يجعل خانات القراءة القديمة تذهب يسار الشاشة.

لحل هذه المشكلة ، كل ماعليك فعله هو طباعة السطر كاملاً في كل مره  ، داخل دالة  loop.

  //         ----------------
  lcd.print("Temp         F  ");
  lcd.setCursor(6, 0);
  lcd.print(tempF);

سطر التعليق ‘comment’ وضع لاجلك حتى تعرف عدد الخانات 16 التي يمكن اظهارها في شاشة LCD في حال رغبت في بتغيير الجمل التي ترغب وضعها اسفلها.

لملء الفراغات ، قم بتحديد موضع المؤشر حيث بداية الخانة التي ترغب بإظهارها على الشاشة.

قمنا بعمل نفس الطريقة مع مستشعر الاضاءة ‘photocell’ ، لايوجد مقياس لدرجة سطوع الضوء لذلك قمنا بإظهار القراءة التناظرية analogRead التي حصلنا عليها من المستشعر مباشرة على الشاشة.

بعد رفع الكود على الاردوينو ستتمكن من عرض عرض درجة الحرارة والاضاءة.

X
تم إضافة المنتج إلى السلة بنجاح