كود البحث

الدرس 20/31: عرض الجهد على شاشة LCD1602

الدرس 20/31: عرض الجهد على شاشة LCD1602

يعرض هذا المشروع كيفية بناء فولتميتر رقمي باستخدام أردوينو وشاشة LCD1602 مع واجهة I2C. من خلال قراءة الجهد التناظري من مقياس الجهد وعرضه على الشاشة، ستتعلم المهارات الأساسية للتحويل من التناظري إلى الرقمي، واتصال I2C، والتحكم في شاشة LCD. 

LCD_sunFounder

هذا المشروع هو خطوة أساسية رائعة للعديد من التطبيقات العملية. إليك بعض الأفكار التي يمكنك البناء عليها:

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

بنهاية هذا الدليل، سيكون لديك فهم واضح لكيفية توصيل المكونات، وتهيئة المكتبات اللازمة، وكتابة الكود لإنشاء شاشة الجهد الخاصة بك.

مقياس الجهد

مكونات الأجهزة

لبناء هذا المشروع، ستحتاج إلى المكونات التالية. تعتمد الدورة على مجموعة أردوينو 3 في 1 من SunFounder، والتي تتضمن جميع هذه الأجزاء.

  • لوحة أردوينو (مثل Uno)
  • شاشة LCD1602 مع وحدة I2C
  • مقياس جهد (يُنصح بـ 10kΩ)
  • أسلاك توصيل
  • لوحة تجارب

فهم شاشة LCD1602 ووحدة I2C

شاشة LCD1602 هي شاشة أبجدية رقمية شائعة تحتوي على 16 عمودًا وصفين. تتطلب شاشة LCD المتوازية القياسية العديد من الدبابيس الرقمية للتحكم. ومع ذلك، تأتي هذه الشاشة مع وحدة I2C مخصصة ملحقة بظهرها (في الفيديو عند 01:30). تعمل هذه الوحدة على تبسيط التوصيلات بشكل كبير، مما يقلل الاتصال إلى أربعة أسلاك فقط: VCC وGND وSDA وSCL. هذا ممكن لأن وحدة I2C تعمل كجسر، حيث تترجم إشارة I2C التسلسلية البسيطة إلى الإشارات المتوازية التي تحتاجها شاشة LCD.

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

دليل التوصيل

توصيل LCD1602 مع مقياس الجهد

توصيل شاشة LCD ومقياس الجهد بأردوينو أمر مباشر. تحتاج وحدة I2C إلى طاقة وخطي اتصال. يعمل مقياس الجهد كمقسم جهد متغير، مما يسمح لك بضبط الجهد عند دبوس المؤشر الخاص به.

إليك إعداد التوصيل التفصيلي:

  • وحدة I2C لشاشة LCD إلى أردوينو:
    • GND إلى أردوينو GND (في الفيديو عند 05:38).
    • VCC إلى أردوينو 5V (في الفيديو عند 05:47).
    • SDA إلى أردوينو A4 (في الفيديو عند 05:47).
    • SCL إلى أردوينو A5 (في الفيديو عند 05:57).
  • مقياس الجهد إلى أردوينو:
    • الدبوس الأيسر إلى أردوينو 5V (في الفيديو عند 33:39).
    • الدبوس الأوسط (المؤشر) إلى أردوينو A0 (في الفيديو عند 33:43).
    • الدبوس الأيمن إلى أردوينو GND (في الفيديو عند 33:43).

تثبيت المكتبة المطلوبة

يتطلب هذا المشروع مكتبة خارجية للتحكم في شاشة LCD عبر I2C. المكتبة المستخدمة في الفيديو هي مكتبة "Arduino Liquid Crystal I2C". يمكنك تنزيلها من الرابط المقدم على صفحة موارد Robojax أو من GitHub (في الفيديو عند 06:16).

لتثبيتها، قم بتنزيل المكتبة كملف ZIP. ثم، في بيئة التطوير المتكاملة لأردوينو (Arduino IDE)، انتقل إلى Sketch > Include Library > Add .ZIP Library... وحدد الملف الذي تم تنزيله (في الفيديو عند 06:41).

العثور على عنوان I2C لشاشة LCD الخاصة بك

قبل رفع الكود الرئيسي، من الضروري تحديد عنوان I2C لوحدة شاشة LCD الخاصة بك. يمكن أن يختلف هذا العنوان حسب الشركة المصنعة. يوضح الفيديو كيفية استخدام ماسح I2C للعثور عليه (في الفيديو عند 08:11).

يمكنك العثور على هذا الماسح بالانتقال إلى File > Examples > Wire > i2c_scanner. ارفع هذا الكود إلى أردوينو الخاص بك مع توصيل شاشة LCD، وافتح الشاشة التسلسلية (Serial Monitor). سيعرض العنوان، والذي غالبًا ما يكون 0x27 أو 0x3F. ستحتاج إلى استخدام هذا العنوان في الكود الرئيسي الخاص بك.

شرح الكود

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

1. تضمين المكتبات وكائن شاشة LCD

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

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// اضبط عنوان LCD على 0x27 لشاشة 16 أو 20 حرفًا وصفيين أو 4 صفوف
LiquidCrystal_I2C lcd(0x27, 16, 2);
  • #include <Wire.h>: هذه المكتبة مدمجة في الأردوينو وهي مطلوبة للاتصال عبر I2C.
  • #include <LiquidCrystal_I2C.h>: يتضمن هذا المكتبة التي قمنا بتثبيتها للتو، والتي توفر الدوال اللازمة للتحكم في شاشة LCD.
  • LiquidCrystal_I2C lcd(0x27, 16, 2);: هذا السطر ينشئ كائنًا باسم lcd. المعامل الأول، 0x27، هو عنوان I2C الذي وجدته سابقًا. المعاملان الثاني والثالث يحددان أبعاد شاشة LCD: 16 عمودًا وصفين. يجب عليك تغيير 0x27 إلى عنوانك المحدد إذا كان مختلفًا.

2. دوال الإعداد والحلقة

دالة setup() تهيئ شاشة LCD وتقوم بتشغيل الإضاءة الخلفية. دالة loop() تحتوي على المنطق الأساسي لقراءة الجهد وعرضه.

void setup()
{
  lcd.begin();
  lcd.backlight();
}

void loop()
{
  int potValue = analogRead(A0);
  float voltage = potValue * (5.0 / 1023.0);
  // ... (كود عرض شاشة LCD)
  delay(1000);
}
  • lcd.begin(): يقوم هذا بتهيئة واجهة شاشة LCD وتجهيزها للاستخدام.
  • lcd.backlight(): يقوم هذا بتشغيل الإضاءة الخلفية للشاشة، مما يجعل النص مرئيًا.
  • int potValue = analogRead(A0);: هذا يقرأ القيمة التناظرية الخام من الدبوس A0، المتصل بمنزلق مقياس الجهد. ستكون القيمة عددًا صحيحًا بين 0 و1023، تمثل الجهد من 0 فولت إلى 5 فولت.
  • float voltage = potValue * (5.0 / 1023.0);: هذه هي خطوة التحويل الحاسمة. تقوم بتحويل قيمة ADC الخام إلى قراءة جهد فعلية. تضرب الصيغة القيمة الخام في نسبة الجهد المرجعي (5.0 فولت) إلى أقصى قيمة ADC (1023). هذا ضروري لأن ADC لا يقرأ الجهد مباشرة؛ بل يقرأ رقمًا نسبيًا.

3. عرض الجهد

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

  lcd.clear();
  lcd.print("LCD1602 Tutorial");
  lcd.setCursor (0,1); // الانتقال إلى بداية السطر الثاني
  lcd.print("Voltage:");
  lcd.setCursor (9,1); // تعيين إلى السطر 2 الحرف 9
  lcd.print(voltage); 
  lcd.setCursor (13,1); // تعيين إلى السطر 2 الحرف 14
  lcd.print("V"); 
  • lcd.clear(): يمسح أي نص سابق من الشاشة.
  • lcd.print("LCD1602 Tutorial"): يطبع العنوان على السطر الأول.
  • lcd.setCursor (0,1): يضبط المؤشر على بداية السطر الثاني. المعامل الأول هو العمود (0-15)، والثاني هو الصف (0 للسطر الأول، 1 للسطر الثاني).
  • lcd.print(voltage): يطبع قيمة الجهد المحسوبة. سيتم طباعة المتغير float بمنزلتين عشريتين افتراضيًا.
  • lcd.setCursor (13,1): ينقل المؤشر إلى العمود 13 في السطر الثاني لوضع حرف "V" مباشرة بعد الرقم.

عرض توضيحي مباشر للمشروع

بمجرد رفع الكود، يجب أن تعرض شاشة LCD "LCD1602 Tutorial" على السطر الأول. على السطر الثاني، ستعرض "Voltage:" متبوعة بقراءة الجهد الحالية. أثناء تدوير مقبض مقياس الجهد، سترى الجهد المعروض يتغير في الوقت الفعلي، بدءًا من حوالي 0.00 فولت إلى 5.00 فولت (في الفيديو عند 35:25).

هذا المشروع مثال مثالي على كيفية أخذ إشارة تناظرية خام وتحويلها إلى قيمة واضحة وسهلة القراءة للإنسان. المهارات التي تعلمتها هنا يمكن تطبيقها مباشرة على أي مستشعر تناظري آخر قد تستخدمه في المستقبل.

يغطي الفيديو أيضًا موضوعات أخرى ذات صلة، مثل عرض النص، والتمرير، وإنشاء أحرف مخصصة على شاشة LCD.

مشاريع ذات صلة من هذا الفيديو

الفصول

  • [00:00] مقدمة إلى LCD1602 ونظرة عامة على المشروع
  • [01:30] شرح أجهزة LCD1602 ووحدة I2C
  • [04:06] ضبط عنوان I2C باستخدام العبورات
  • [05:28] مخطط توصيل الأسلاك لـ LCD1602
  • [07:31] شرح الكود لعرض النص الأساسي
  • [11:10] عرض مثال المؤشر الوامض
  • [13:46] إنشاء واستخدام الأحرف المخصصة
  • [18:51] استخدام مثال العرض التسلسلي
  • [23:16] تمرير النص على شاشة LCD
  • [26:13] عرض درجة الحرارة والرطوبة من DHT11
  • [33:00] قراءة وعرض الجهد من مقياس الجهد
  • [35:56] عرض المسافة من مستشعر الموجات فوق الصوتية

الصور

potentiometer
potentiometer
LCD1602_pot_wiring
LCD1602_pot_wiring
LCD_sunFounder
LCD_sunFounder
912-Lesson 20/31: Displaying voltage on LCD1602
اللغة: C++
/*
Lesson 20/31: Displaying voltage on LCD1602
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 or 20 chars and 2 or 4 lines display
LiquidCrystal_I2C lcd(0x27, 16, 2);

int count =700;
void setup()
{
  // Robojax code for LCD with I2C
	// initialize the LCD, 
	lcd.begin();
 
	// Turn on the blacklight and print a message.
	lcd.backlight();
  // Robojax code for LCD with I2C


}

void loop()
{
  int potValue = analogRead(A0);
  float voltage = potValue * (5.0 / 1023.0);
  //start of loop Robojax code for LCD with I2C
  lcd.clear();
  lcd.print("LCD1602 Tutorial");
  lcd.setCursor (0,1); // go to start of 2nd line
  lcd.print("Voltage:");

  lcd.setCursor (9,1); // set to line 2 char 9
  lcd.print(voltage); 

  lcd.setCursor (13,1); // set to line 2 char 14
  lcd.print("V"); 

  //lcd.setCursor (3,3); // set to line 4 character 4
  //lcd.print("Text in line 4"); 
        
  delay(1000);
  count++;
 //end of loopcode Robojax code for LCD with I2C
}

الأشياء التي قد تحتاجها

ملفات📁

مكتبات أردوينو (ملف مضغوط)

دليل المستخدم