الدرس 20/31: عرض مسافة الموجات فوق الصوتية على شاشة LCD1602
يعرض هذا المشروع كيفية دمج مستشعر المسافة بالموجات فوق الصوتية HC-SR04 مع شاشة LCD1602 التي تدعم I2C لإنشاء نظام قياس مسافة في الوقت الفعلي. في نهاية هذا الدليل، سيكون لديك جهاز يعمل بشكل مستمر على قياس وعرض المسافة إلى جسم ما بالسنتيمتر. هذه مهارة أساسية في إلكترونيات الأردوينو، حيث تجمع بين إدخال المستشعر والإخراج البصري.
يمكن استخدام هذا الإعداد العملي في مجموعة متنوعة من التطبيقات الواقعية، بما في ذلك:
- إنشاء مساعد ركن ذكي يساعدك على قياس المسافة إلى الحائط أو مركبة أخرى.
- بناء جهاز مراقبة بسيط لمستوى السائل في خزان عن طريق قياس المسافة من الأعلى إلى السطح.
- تطوير موزع معقم يدوي آلي أو سلة مهملات تعمل بدون لمس تفتح عندما يكون جسم ما قريبًا.
- بناء إنذار أمني أساسي يتم تفعيله عندما يدخل شخص ما إلى منطقة محددة.
الأجهزة والمكونات
لبناء هذا المشروع، ستحتاج إلى المكونات التالية:
- لوحة أردوينو (مثل Uno)
- شاشة LCD1602 مع وحدة واجهة I2C
- مستشعر المسافة بالموجات فوق الصوتية HC-SR04
- أسلاك توصيل
- لوحة تجارب (اختيارية، لتسهيل التوصيلات)
فهم شاشة LCD1602 و I2C
شاشة LCD1602 هي شاشة شائعة قادرة على عرض 16 حرفًا في كل سطر عبر سطرين. وحدة "I2C" الموجودة في الخلف هي ميزة كبيرة لأنها تقلل عدد الدبابيس المطلوبة للتحكم في الشاشة من 6 أو أكثر إلى دبوسين فقط للاتصال (SDA و SCL) ودبوسين للطاقة (VCC و GND). هذا التبسيط يجعل التوصيلات أكثر نظافة ويوفر دبابيس رقمية قيمة على لوحة الأردوينو الخاصة بك لأجهزة استشعار أخرى، مثل المستشعر بالموجات فوق الصوتية المستخدم في هذا المشروع. (في الفيديو عند 01:30)
تتميز وحدة I2C أيضًا بمقياس جهد صغير لضبط تباين الشاشة. إذا قمت بتشغيل الشاشة ولم تر شيئًا، فحاول تدوير هذا المسمار حتى يصبح النص مرئيًا. (في الفيديو عند 02:47)
دليل التوصيلات
توصيل المكونات أمر مباشر. تحتوي وحدة I2C الخاصة بشاشة LCD على أربعة دبابيس يجب توصيلها بلوحة الأردوينو. بالنسبة لمستشعر الموجات فوق الصوتية، يحتوي أيضًا على أربعة دبابيس.
فيما يلي تفصيل للتوصيلات:
وحدة LCD1602 I2C إلى الأردوينو:
- GND إلى الأردوينو GND
- VCC إلى الأردوينو 5V
- SDA إلى الأردوينو A4
- SCL إلى الأردوينو A5
مستشعر HC-SR04 بالموجات فوق الصوتية إلى الأردوينو:
- VCC إلى الأردوينو 5V
- Trig إلى الدبوس الرقمي 12 في الأردوينو
- Echo إلى الدبوس الرقمي 11 في الأردوينو
- GND إلى الأردوينو GND
مخطط التوصيل لهذا المشروع مشار إليه في الفيديو.
تثبيت المكتبات المطلوبة
يعتمد هذا المشروع على مكتبتين مهمتين. المكتبة الأولى، LiquidCrystal_I2C، مطلوبة للتحكم في شاشة LCD وهي غير مضمنة افتراضيًا في بيئة التطوير المتكاملة للأردوينو. يمكنك تنزيلها من الرابط المقدم في وصف الفيديو أو من موقع Robojax. (في الفيديو عند 06:16)
المكتبة الثانية، NewPing، تُستخدم للتفاعل مع مستشعر الموجات فوق الصوتية. إنها تبسط عملية إرسال نبضة وقراءة زمن الصدى. يمكن تثبيت كلتا المكتبتين عبر مدير المكتبات في بيئة التطوير المتكاملة للأردوينو بالانتقال إلى Sketch -> Include Library -> Manage Libraries والبحث عن أسمائهما.
شرح الكود
يجمع هذا الكود بين وظائف شاشة LCD ومستشعر الموجات فوق الصوتية. تم تنظيم الكود ليكون قابلًا للتكوين بسهولة وفقًا لإعداداتك المحددة.
في الجزء العلوي من الكود، ستجد المتغيرات الرئيسية التي قد تحتاج إلى تعديلها:
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 190 // Maximum distance we want to ping for (in centimeters).
- عنوان شاشة LCD (0x27): هذا هو عنوان I2C لوحدة شاشتك. تستخدم معظم الوحدات
0x27، ولكن بعضها قد يستخدم0x3F. إذا لم تظهر الشاشة أي شيء، فقد تحتاج إلى تشغيل كود فحص I2C للعثور على العنوان الصحيح وتحديث هذه القيمة. (في الفيديو عند 08:11) - TRIGGER_PIN و ECHO_PIN: يحددان الدبابيس الرقمية في الأردوينو المتصلة بدبابيس Trig و Echo الخاصة بمستشعر الموجات فوق الصوتية. إذا كنت تستخدم دبابيس مختلفة، فغيّر هذه التعريفات.
- MAX_DISTANCE: يحدد أقصى مسافة بالسنتيمتر سيقيسها المستشعر. يمكن لـ HC-SR04 قياس ما يصل إلى 400-500 سم، ولكن تعيين قيمة أقل يمكن أن يحسن دقة وموثوقية القراءات، خاصة للمسافات الأقصر.
في دالة loop()، ينفذ الكود الخطوات التالية:
- يستخدم دالة
sonar.ping_cm()لقياس المسافة وتخزينها في المتغيرdistance. - يقوم بمسح شاشة LCD ويطبع النص "Robojax.com" على السطر الأول.
- ثم يضبط المؤشر على السطر الثاني ويطبع "Distance: ".
- أخيرًا، ينقل المؤشر إلى الموضع 10 على السطر الثاني لطباعة قيمة
distanceالمقاسة متبوعة بـ "cm".
تتحكم delay(200) في نهاية الحلقة في عدد مرات أخذ المستشعر لقراءة جديدة وتحديث الشاشة.
عرض الكود
بمجرد رفع الكود إلى Arduino الخاص بك، ستضيء شاشة LCD وتبدأ في عرض المسافة. يمكنك اختبار الإعداد بتحريك يدك أو جسم ما بالقرب من مستشعر الموجات فوق الصوتية وإبعاده عنه. يجب أن يتحدث الرقم على الشاشة في الوقت الفعلي، مع عرض المسافة بالسنتيمتر. (في الفيديو عند 38:07)
مشاريع ذات صلة من هذا الفيديو
- الدرس 20/31: استخدام LCD1602 مع Arduino لعرض النص | Robojax
- الدرس 20/31: عرض درجة الحرارة والرطوبة من DHT11 على شاشة LCD
- الدرس 20/31: عرض الجهد على LCD1602
الفصول
- [00:00] مقدمة إلى LCD1602 ونظرة عامة على المشروع
- [01:30] شرح أجهزة LCD1602 ووحدة I2C
- [03:14] دبابيس LCD وتكوين عنوان I2C
- [05:28] مخطط توصيل الأسلاك لـ LCD1602
- [06:16] تثبيت مكتبة LCD المطلوبة
- [07:24] الكود الأساسي لطباعة النص على شاشة LCD
- [08:11] العثور على عنوان I2C لشاشة LCD الخاصة بك
- [11:10] أمثلة LCD: مؤشر وامض وأحرف مخصصة
- [18:51] مثال LCD: عرض تسلسلي ونص متحرك
- [24:36] عرض درجة حرارة ورطوبة DHT11 على شاشة LCD
- [33:00] عرض الجهد من مقياس الجهد على شاشة LCD
- [35:56] دمج كود مستشعر الموجات فوق الصوتية مع LCD
- [38:07] عرض توضيحي لقياس المسافة بالموجات فوق الصوتية
/*
This sketch reads the distance using the ultrasonic sensor and displays on LCD1602
Download and resource page https://robojax.com/RJT878
watch video https://www.youtube.com/watch?v=NXAswOc_2zg
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int displayChars =16;
const int displayRows =2;
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
int shomar =0;
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 190 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
int distance;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
Serial.begin(9600); // Open serial monitor at 9600 baud to see ping results.
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
}
void loop() {
distance = sonar.ping_cm();//get the distance in cm
lcd.clear();
lcd.print("Robojax.com");
lcd.setCursor (0,1);//set cursor to char 0 line 2
lcd.print("Distance: ");
lcd.setCursor (10,1);
lcd.print(distance);
lcd.print("cm");
delay(200);
}
الأشياء التي قد تحتاجها
-
أمازون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 في 1 مع Arduinoيوضح هذا المستند خطوة بخطوة تجميع سيارة SunFounder الذكية 3 في 1 مع Arduino
SunFounder_car_assembly_manual.pdf1.20 MB