الدرس 20/31: عرض الجهد على شاشة LCD1602
يعرض هذا المشروع كيفية بناء فولتميتر رقمي باستخدام أردوينو وشاشة LCD1602 مع واجهة I2C. من خلال قراءة الجهد التناظري من مقياس الجهد وعرضه على الشاشة، ستتعلم المهارات الأساسية للتحويل من التناظري إلى الرقمي، واتصال I2C، والتحكم في شاشة LCD.
هذا المشروع هو خطوة أساسية رائعة للعديد من التطبيقات العملية. إليك بعض الأفكار التي يمكنك البناء عليها:
- بناء جهاز مراقبة جهد بطارية محمول لمشاريعك.
- إنشاء مصدر طاقة بسيط مع قراءة جهد مرئية.
- مراقبة خرج لوحة شمسية أو أي مصدر جهد متغير آخر.
- عرض القيمة من أي مستشعر تناظري، مثل المقاومة الضوئية (LDR)، كرقم قابل للقراءة.
بنهاية هذا الدليل، سيكون لديك فهم واضح لكيفية توصيل المكونات، وتهيئة المكتبات اللازمة، وكتابة الكود لإنشاء شاشة الجهد الخاصة بك.
مكونات الأجهزة
لبناء هذا المشروع، ستحتاج إلى المكونات التالية. تعتمد الدورة على مجموعة أردوينو 3 في 1 من SunFounder، والتي تتضمن جميع هذه الأجزاء.
- لوحة أردوينو (مثل Uno)
- شاشة LCD1602 مع وحدة I2C
- مقياس جهد (يُنصح بـ 10kΩ)
- أسلاك توصيل
- لوحة تجارب
فهم شاشة LCD1602 ووحدة I2C
شاشة LCD1602 هي شاشة أبجدية رقمية شائعة تحتوي على 16 عمودًا وصفين. تتطلب شاشة LCD المتوازية القياسية العديد من الدبابيس الرقمية للتحكم. ومع ذلك، تأتي هذه الشاشة مع وحدة I2C مخصصة ملحقة بظهرها (في الفيديو عند 01:30). تعمل هذه الوحدة على تبسيط التوصيلات بشكل كبير، مما يقلل الاتصال إلى أربعة أسلاك فقط: VCC وGND وSDA وSCL. هذا ممكن لأن وحدة I2C تعمل كجسر، حيث تترجم إشارة I2C التسلسلية البسيطة إلى الإشارات المتوازية التي تحتاجها شاشة LCD.
يستخدم هذا المشروع واجهة I2C، وهي بروتوكول اتصال يسمح لأردوينو الخاص بك بالتحدث إلى أجهزة متعددة باستخدام سلكين فقط. هذه مهارة أساسية لتوصيل العديد من أنواع المستشعرات والشاشات.
دليل التوصيل
توصيل شاشة 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.
مشاريع ذات صلة من هذا الفيديو
- الدرس 20/31: استخدام LCD1602 مع الأردوينو لعرض النص | Robojax
- الدرس 20/31: عرض درجة الحرارة والرطوبة من DHT11 على شاشة 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] عرض المسافة من مستشعر الموجات فوق الصوتية
/*
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
}
الأشياء التي قد تحتاجها
-
أمازونSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
أمازون
-
أمازون
-
أمازون
-
أمازون
الموارد والمراجع
-
توثيقوثائق لمجموعة SunFounder 3 في 1 لإنترنت الأشياء/السيارات الذكية/التعلمdocs.sunfounder.com
-
خارجياشترِ مجموعة التعلم الذكية 3 في 1 من سن فاونديرsunfounder.com
ملفات📁
مكتبات أردوينو (ملف مضغوط)
-
شفرة المصدر لمجموعة تعلم السيارة الذكية 3 في 1 من صن فاوندر
3in1-kit-main-v2.zip12.80 MB
دليل المستخدم
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB