سنتعلم في هذا المقال كيفية بناء مشروع جديد من سلسلة دليل أردوينو والذي من خلاله سنتعرف على عناصر ومكونات إلكترونية جديدة وكيفية ربطها وتوصيلها مع لوحة الأردوينو أونو Arduino Uno لتنفيذ مشروع مفيد وظيفته قياس المسافة بين الحساس والحاجز الذي أمامه، ومن ثم عرضها على الشاشة بصيغة مناسبة، والذي يمكن استخدامه كمسطرة إلكترونية أو إضافته إلى أفكار عديدة، مثل استخدامه في أنظمة السيارات لمساعدة السائق على ركنها، أو تطبيقات الأبواب الذكية لفتحها وإغلاقها آليًا، أو قياس مستوى السوائل، وتطبيقات أخرى.
العناصر المستخدمة لمشروع بناء مسطرة إلكترونية باستخدام الأردوينو Arduino
سنستخدم مجموعة من العناصر الإلكترونية والأدوات وهي:
- لوحة أردوينو أونو Arduino Uno
- كابل البرمجة USB Cable
- لوحة توصيل التجارب Breadboard
- حساس الأمواج فوق الصوتية UltraSonic Sensor
- شاشة الكريستال السائلة Liquid Crystal Display
- مقاومة متغيرة Potentiometer
- مجموعة أسلاك توصيل من نوع Male to Male
سنتعرف في البداية على العناصر الإلكترونية الجديدة المستخدمة في هذا المشروع، وهي حساس الأمواج فوق الصوتية UltraSonic Sensor وشاشة الكريستال السائلة Liquid Crystal Display، وسنتعلم طريقة ربط كل منها على حدة مع الأردوينو Arduino، ومن ثم سنربط جميع العناصر مع بعضها لتنفيذ فكرة مشروعنا.
شاشة الكريستال السائلة Liquid Crystal Display
تعرفنا في المشاريع السابقة مثل مشروع تخمين عدد مرات وميض الليد باستخدام الأردوينو Arduino على أدوات وعناصر إلكترونية استخدمناها لعرض البيانات مثل نافذة الاتصال التسلسلية Serial Monitor المدمجة مع بيئة الأردوينو المتكاملة Arduino IDE والتي تُعَد أداةً مفيدةً لعرض البيانات المرسلة من لوحة الأردوينو Arduino على شاشة الحاسوب والتواصل معه، ولكن في بعض المشاريع يتطلب الأمر أن يكون الجهاز الذي نريد تصميمه متنقلًا ومنفصلًا عن الحاسوب، وقد نحتاج لعرض البيانات وقيم الحساسات للمستخدم دون اتصال الأردوينو Arduino مع الحاسوب.
في هذه الحالة، يأتي دور شاشات العرض مثل شاشة العرض ذات السبع أجزاء Seven Segment Display التي استخدمناها في مشروع لعبة تخمين الأرقام باستخدام الأردوينو Arduino ولكن تبقى هذه الشاشة محدودة لعرض الأرقام وبعض الأحرف فقط، ورغم بساطتها إلا أننا سنحتاج العديد من التوصيلات عند استخدام عدة خانات.
سنستخدم في هذا المشروع نوع جديد من الشاشات وهو شاشات الكريستال السائلة Liquid Crystal Displays والتي تعرف اختصارًا LCD، وتُعَد هذه الشاشة مثاليةً لعرض الرسائل والنصوص والقيم الرقمية للحساسات أو حتى الرموز الخاصة وإضافة بعض المؤثرات البصرية.
أنواع شاشة الكريستال السائلة LCD
تتوفر هذه الشاشة بعدة أبعاد مثل 1×8 و 1×16 و 2×16 و 4×20 وتتميز بأن جميعها لها نفس طريقة التوصيل مع لوحة الأردوينو Arduino، ولكن الحجم الأكثر انتشارًا واستخدامًا هو 2×16 حيث يمثل الرقم 16 عدد الأعمدة في الشاشة ويمثل الرقم 2 عدد الأسطر الموجودة في الشاشة، ويحتوي كل عمود على 5×8 بكسل ويمثل محرف واحد يمكن عرض حرف أو رقم أو رمز فيه، بالتالي أصبح لدينا 32 محرفًا في شاشة الكريستال السائلة LCD ذات الحجم 2×16، كما يوجد عدة ألوان لها مثل اللون الأبيض للنص مع خلفية زرقاء أو اللون الأسود للنص مع خلفية خضراء.
أقطاب شاشة الكريستال السائلة LCD
- قطب Vss: قطب التغذية السالب للشاشة والدائرة الرقمية التي بداخلها، ويوصل مع قطب الأرضي GND
- قطب Vdd: قطب التغذية الموجب للشاشة والدائرة الرقمية التي بداخلها، ويوصل مع مصدر تغذية 5 فولت
- قطب Vo: قطب التحكم بشدة تباين شاشة LCD، ويوصل مع قطب الخرج للمقاومة المتغيرة Potentiometer؛ أما الأقطاب الأخرى للمقاومة المتغيرة توصل مع قطب التغذية 5 فولت وقطب الأرضي GND، وبتغيير محور المقاومة المتغيرة سيؤدي لتغيير قيمة الجهد على القطب Vo، وبالتالي ستتغير شدة التباين في الشاشة
- قطب Rs: قطب تحديد نوع البيانات المرسلة للشاشة، إذا كانت حالة القطب 0 منطقي ستكون البيانات المرسلة للشاشة عبارة عن أوامر مثل مسح النصوص المعروضة على الشاشة أو تحديد مكان المؤشر في الشاشة؛ أما إذا كانت حالة القطب 1 منطقي، فستكون البيانات عبارة عن نصوص ستعرض على الشاشة
- قطب RW: قطب تحديد نمط العمل للشاشة
اقتباسإذا كانت حالة القطب 0 منطقية، فإن الشاشة ستعمل في نمط الكتابة أي أننا سنرسل بيانات للشاشة؛ أما إذا كانت حالة القطب 1 منطقي، فستعمل في نمط القراءة أو بمعنى آخر سنستقبل بيانات من الشاشة، ولكن النمط الأكثر استخدامًا هو نمط الكتابة على الشاشة لذلك سنوصل هذا القطب مع القطب الأرضي GND دائمًا
- قطب E: قطب تفعيل الكتابة في مسجلات الشاشة، فعند إرسال البيانات للشاشة يجب أن تتغير حالة هذا القطب من 1 منطقي إلى 0 منطقي لاستقبال البيانات
- أقطاب D0-D7: أقطاب نقل البيانات والأوامر إلى الشاشة ويمكن استخدام 4 أقطاب فقط أو 8 أقطاب، والنمط الأكثر استخدامًا عادةً هو 4 أقطاب فقط وذلك لتقليل التوصيلات
- قطب A: قطب التغذية الموجب الخاص بإضاءة خلفية الشاشة ويوصل مع القطب 5 فولت
- قطب C: قطب التغذية السالب الخاص بإضاءة خلفية الشاشة ويوصل مع القطب الأرضي GND
سننفذ تطبيقًا بسيطًا لتجربة شاشة الكريستال السائلة LCD مع لوحة الأردوينو Arduino من خلال عرض العبارة Hasoub Academy في السطر الأول، والعبارة !LCD Example في السطر الثاني على الشاشة، ومع إضافة بعض الحركة على الشاشة.
مخطط توصيل شاشة الكريستال السائلة LCD مع الأردوينو Arduino
لربط شاشة الكريستال السائلة LCD سنتبع الخطوات التالية:
- نضع الشاشة في لوحة توصيل التجارب BreadBoard عرضيًا
- نصل أقطاب التغذية في لوحة الأردوينو أونو Arduino Uno مع لوحة توصيل التجارب BreadBoard، إذ يوصل القطب 5v في لوحة الأردوينو مع المسرى الموجب للوحة التجارب، والقطب GND في لوحة الأردوينو مع المسرى السالب للوحة التجارب من خلال أسلاك التوصيل
- نصل قطب الشاشة ذو الرمز Vs مع المسرى السالب والقطب ذو الرمز Vdd مع المسرى الموجب للوحة التجارب BreadBoard، والتي تمثل أقطاب التغذية للدائرة الإلكترونية والرقمية للشاشة
- نصل قطب الشاشة ذو الرمز Vo مع قطب الخرج الخاص بالمقاومة المتغيرة الموجود في المنتصف، ونوصل باقي الأقطاب المتغيرة مع المسرى السالب والمسرى الموجب للوحة التجارب BreadBoard
- نصل قطب الشاشة ذي الرمز Rs مع القطب ذو الرقم 12 في لوحة الأردوينو أونو Arduino Uno
- نصل قطب الشاشة ذي الرمز RW مع المسرى السالب للوحة التجارب BreadBoard أو يمكن وصله مع قطب الشاشة ذو الرمز Vs لترتيب التوصيل أكثر
- نصل قطب الشاشة ذو الرمز E مع القطب ذو الرقم 11 في لوحة الأردوينو أونو Arduino Uno
- نصل أقطاب الشاشة الخاصة بالبيانات من D4-D7 على الترتيب مع الأقطاب ذات الأرقام من 7-4 في لوحة الأردوينو أونو Arduino Uno
- نصل قطب الشاشة ذو الرمز A مع المسرى الموجب والقطب ذو الرمز K مع المسرى السالب للوحة التجارب BreadBoard، والتي تمثل أقطاب التغذية لإضاءة خلفية الشاشة وفي حال عدم توصيلها ستعمل الشاشة ولكن بدون إضاءة
توضح الصورة التالية مخطط توصيل شاشة LCD مع لوحة الأردوينو أونو Arduino Uno:
الكود البرمجي الخاص بشاشة الكريستال السائلة LCD مع لوحة الأردوينو Arduino
لكتابة الكود البرمجي الخاص بشاشة LCD سنعتمد على المكتبة البرمجية LiquidCrystal المدمجة مع بيئة الأردوينو واستخدام التعليمات البرمجية الخاصة بها بشكل مباشر، فقط كل ما نحتاجه هو تضمين المكتبة في بداية الكود بالشكل التالي:
#include <LiquidCrystal.h>
في الخطوة التالية سننشئ متغيرًا خاصًا بالمكتبة البرمجية للشاشة من نوع LiquidCrystal
ونستطيع اختيار الاسم الذي نريده مثل lcd
، ومن خلال هذا المتغير نستطيع تحديد طريقة نقل البيانات بنمط نصف بايت عبر استخدام 4 أقطاب فقط، أو بايت كامل باستخدام 8 أقطاب.
غالبًا ما نستخدم نمط نصف بايت لتقليل التوصيلات، وسيأخذ هذا المتغير 6 وسطاء إجبارية وتمثل أرقام أقطاب الشاشة التي وصلناها مع لوحة الأردوينو بالترتيب التالي Rs ،E ،D4 ،D5 ،D6 ،D7 في حال استخدام نمط نصف بايت فقط، أما في حال استخدام نمط بايت كامل سيأخذ 10 وسطاء بالترتيب التالي Rs ،E ،D0 ،D1 ،D2 ،D3 ،D4 ،D5 ،D6 ،D7.
LiquidCrystal lcd(11, 10, 4, 5, 6, 7);
سنهيئ شاشة LCD في الدالة الرئيسية ()setup
من خلال الدالة ()lcd.begin
، والتي تأخذ وسيطين إجباريين هما عدد الأعمدة وعدد الأسطر الموجودة في الشاشة، بالإضافة إلى وسيط ثالث اختياري يمثل عدد البكسلات الموجودة في كل عمود والقيمة الإفتراضية له هي 8×5 بكسل.
نريد أن نطبع في بداية التشغيل رسالة ترحيبية Hello World لمرة واحدة فقط ولمدة ثانية واحدة، ومن ثم نمسح المحتوى الموجود على الشاشة، لذلك سننفذ هذا الأمر في الدالة الرئيسية، وللطباعة على الشاشة سنستخدم الدالة ()lcd.print
والتي تأخذ وسيطين: إجباري: وهو البيانات التي نريد طباعتها ويمكن أن تكون من نوع int
أو long
أو char
أو byte
أو string
اختياري: ويمثل صيغة البيانات Bin
أو Dec
أو Oct
أو Hex
.
وسنستخدم الدالة المدمجة ()delay
لعمل تأخير الزمني كما تعلمنا في المشاريع السابقة.
أما لمسح النص المعروض على الشاشة سنستخدم الدالة ()lcd.clear
والتي لا تأخذ أي وسيط:
void setup() { lcd.begin(16, 2); lcd.print("Hello World"); delay(1000); lcd.clear(); }
سنستخدم في الدالة التكرارية ()loop
الدالة ()lcd.setCursor
لتحريك مؤشر الكتابة للمكان الذي نريد، وتأخذ هذه الدالة وسيطين هما رقم العمود ورقم السطر، ونلاحظ أن عبارة "Hasoub Academy" مكونة من 16 محرف، بالتالي سنحرك مؤشر الكتابة إلى العمود الثاني ذي رقم 1 لأن الترقيم يبدأ من 0، والسطر الأول ذو الرقم 0 لتصبح العبارة في منتصف السطر الأول.
وبعد طباعة العبارة الأولى في السطر الأول، سنحرك مؤشر الكتابة إلى السطر الثاني ذو الرقم 1 بنفس الطريقة السابقة، وكذلك الأمر مع العمود الثالث ذي الرقم 2، لكي تكون محاذاة العبارة !LCD Example في منتصف الشاشة.
void loop() { lcd.setCursor(1, 0); lcd.print("Hasoub Academy"); lcd.setCursor(2, 1); lcd.print("LCD Example!"); }
يمكن إجراء بعض التعديلات في الدالة التكرارية السابقة لإضافة بعض المؤثرات الحركية على النص خلال عرضه على الشاشة، مثل تحريكه إلى اليمين أو اليسار بستمرار، وذلك من خلال الدالة ()lcd.scrollDisplayLeft
لتحريك النص من اليمين إلى اليسار بمقدار محرف واحد، والدالة ()lcd.scrollDisplayRight
لتحريك النص من اليسار إلى اليمين بمقدار محرف واحد في كل مرة، وبالتالي يصبح الكود بالشكل التالي:
void loop() { lcd.setCursor(1, 0); lcd.print("Hasoub Academy"); lcd.setCursor(2, 1); lcd.print("LCD Example!"); for (int positionCounter = 0; positionCounter <16; positionCounter ++) { lcd.scrollDisplayLeft (); // lcd.scrollDisplayRight(); delay (150); } }
يمكن الاطلاع أكثر على التوثيق الرسمي الخاص بمكتبة LiquidCrystal
لمزيد من المعلومات عنها، وماهي التوابع الأخرى الخاصة بها من خلال الموقع الرسمي لمنصة أردوينو Arduino من الرابط التالي.
حساس الأمواج فوق الصوتية UltraSonic Sensor
هو عبارة عن جهاز استشعار يتكون من مرسل Transmitter ومستقبل Receiver وبعض العناصر الإلكترونية والرقمية الأخرى. يُستخدم هذا الحساس لقياس المسافة بينه وبين الحاجز الذي أمامه ضمن المجال من 2 سم إلى 400 سم وبدقة 0.3 سم أو ما يعادل من 0.8 بوصة إلى 157 بوصة وبدقة 0.1 بوصة، ويُعَد هذا الحساس سهل الاستخدام ورخيص الثمن مقارنةً مع المجال والدقة التي يقدمها والتي تُعَد مناسبةً لكثير من المشاريع الإلكترونية.
مبدأ عمل حساس الأمواج فوق الصوتية UltraSonic Sensor
يعتمد في عمله أساسًا على الأمواج فوق الصوتية، فعند إعطاء أمر الإرسال على قطب Trig
، سترسل موجة فوق صوتية مكونة من ثماني نبضات عن طريق المرسل بتردد 40KHZ تنتقل عبر الهواء، وفي حال وجود جسم أو حاجز أمامها ستصطدم به وتنعكس إلى الحساس.
ونتيجة استقبال الموجة، ستتولد نبضة موجبة على قطب Echo
تمثل الزمن الذي استغرقته الموجة من لحظة إرسالها حتى عودتها وتتراوح بين 150 مايكرو ثانية و 25 مللي ثانية، ومن خلال قانون السرعة نستطيع حساب المسافة من خلال الزمن الذي أصبح لدينا. وكما نعلم، قيمة سرعة الصوت معروفة وهي 340m/s عند درجة حرارة 20 درجة مئوية وتختلف قليلًا عند تغير درجة الحرارة والرطوبة والضغط الجوي، وبالتالي يمكن حساب المسافة من خلال العلاقة التالية:
Distance = Speed x Time
أقطاب حساس الأمواج فوق الصوتية UltraSonic Sensor
- قطب Vcc: قطب التغذية الموجب ويوصل مع القطب 5v في لوحة الأردوينو Arduino
-
قطب Trig: عبارة عن قطب خرج وهو القطب المسؤول عن إرسال موجة فوق صوتية من خلال إعطائه إشارة
HIGH
لمدة 10µs -
قطب Echo: عبارة عن قطب دخل وهو القطب المسؤول عن إستقبال الموجة، حيث تتغير حالته إلى قيمة
HIGH
عند نهاية إرسال الموجة ويعود إلى حالةLOW
عند استقبال الموجة - قطب GND: قطب التغذية السالب ويوصل مع القطب GND في لوحة الأردوينو أونو Arduino
مواصفات حساس الأمواج فوق الصوتية UltraSonic Sensor
لا بد من توفر المواصفات الآتية في حساس الأمواج فوق الصوتية UltraSonic Sensor:
- جهد التغذية: 5 فولت
- تيار العمل: 15 مللي أمبير
- زاوية القياس الفعالة: 15 درجة
- مجال القياس: من 2 سم إلى 400 سم
- دقة القياس: 0.3 سم
- الأبعاد: 45 مم × 20 مم × 15 مم
سننفذ تطبيق بسيط باستخدام لوحة أردوينو Arduino وحساس الأمواج فوق الصوتية UltraSonic Sensor وسنتعلم كيفية أخذ القراءات من الحساس وتحويل هذه القيمة إلى المسافة وكيفية كتابة الكود البرمجي والتوصيل المناسب.
مخطط توصيل حساس الأمواج فوق الصوتية UltraSonic Sensor مع لوحة الأردوينو Arduino
سنتبع الخطوات التالية لتوصيل الحساس مع لوحة الأردوينو:
- نصل القطب الأول Vcc في الحساس مع القطب 5v في لوحة الأردوينو أونو
- نصل القطب الثاني Trig في الحساس مع القطب ذو الرقم 9 في لوحة الأردوينو أونو
- نصل القطب الثالث Echo في الحساس مع القطب ذو الرقم 8 في لوحة الأردوينو أونو
- نصل القطب الرابع GND في الحساس مع القطب GND في لوحة الأردوينو أونو
الكود البرمجي الخاص بحساس لأمواج فوق الصوتية UltraSonic Sensor مع لوحة الأردوينو Arduino
من الممكن استخدام مكتبات برمجية جاهزة نستطيع تحميلها من الإنترنت أو من بيئة الأردوينو البرمجية، ولكننا لن نستخدم هذه المكتبات حاليًا، لأن الكود الخاص بالحساس بسيط وسهل جدًا.
في البداية نحتاج لتعريف أرقام الأقطاب الموصولة مع الحساس Trig
وEcho
من خلال الماكرو define#
، بالإضافة إلى متغيرين من نوع عدد صحيح int
هما:
-
duration
سنخزن فيه قيمة الزمن التي سنحصل عليها من الحساس -
distance
سنخزن فيه قيمة المسافة
#define trigPin 9 #define echoPin 8 int duration = 0; int distance = 0;
سنضبط القطب trigPin
في الدالة الرئيسية ()setup
كقطب خرج OUTPUT
، والقطب echoPin
كقطب دخل INPUT
من خلال الدالة المدمجة ()pinMode
والتي تأخذ وسيطين هما رقم القطب ونوع القطب، إما خرج OUTPUT
أو دخل INPUT
.
كما سنفعل واجهة الاتصال التسلسلية Serial Communication من خلال الدالة المدمجة ()Serial.begin
التي تأخذ وسيطين على النحو الآتي:
-
إجباري: سرعة نقل البيانات Baud rate بمعدل بت في الثانية وسنختار القيمة
9600
-
اختياري: وهو خاص بضبط الإعدادات config الأخرى لواجهة الاتصال ويمكن تركه فارغًا حيث يأخذ الضبط الافتراضي
SERIAL_8N1
في هذه الحالة
void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); }
أما في الدالة التكرارية ()loop
، سنغير حالة القطب trigPin
إلى القيمة HIGH
لبدء عملية الإرسال من خلال الدالة المدمجة ()digitalWrite
التي تأخذ وسيطين هما رقم القطب وحالة أو قيمة القطب، وذلك بإعطاءه قيمة 1 منطقي أو HIGH
للتشغيل و 0 منطقي أو LOW
للإطفاء ولمدة 10µs من خلال الدالة المدمجة ()delayMicroseconds
التي تأخذ وسيطًا واحدًا هو قيمة التأخير بالمايكرو ثانية، ومن ثم سنعيد حالة القطب trigPin
إلى القيمة LOW
.
void loop() { digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
بعد انتهاء إرسال الموجة، سنقيس الزمن الذي يكون فيه القطب echoPin
في حالة HIGH
وتخزينه في المتغير duration
، وذلك من خلال استخدام الدالة المدمجة ()pulseIn
التي تأخذ ثلاثة وسطاء على النحو الآتي:
-
الوسيط
pin
: يمثل رقم القطب المراد حساب طول النبضة المولَّدة عليه -
الوسيط
value
: يمثل نوع النبضة المراد قراءتها لحساب طولها وتكون إمَّاHIGH
أوLOW
-
الوسيط
timeout
: يحدِّد المهلة الزمنية بالميكروثانية التي ستنتظر الدالة خلالها بدء النبضة، وتعيد هذه الدالة عدد يمثل طول النبضة المولدة على الرجلpin
بالميكروثانية، أو تعيد القيمة 0 إن لم تبدأ أيَّة نبضة عند الحافةvalue
قبل انتهاء المهلةtimeout
الزمنية.
duration = pulseIn(echoPin, HIGH);
لحساب المسافة سنستخدم العلاقة الرياضية التي ذكرناها سابقًا وهي:
Distance = Speed x Time
والتي تمثل قانون المسافة ولكن نحتاج لتحويل قيمة السرعة من 340m/s إلى 0.034cm/µs لكي تتناسب مع قيمة الزمن المقاس والحصول على المسافة بواحدة cm؛ بالإضافة لتقسيم الزمن على 2 لأنه يمثل زمن ذهاب وعودة الموجة، فتصبح العلاقة برمجيًا:
distance = 0.034 * (duration / 2);
الخطوة الأخيرة هي طباعة قيمة المسافة على نافذة الاتصال التسلسلية، وذلك باستخدام الدالة المدمجة ()Serial.print
والدالة ()Serial.println
التي سنمرر لها البيانات المراد طباعتها، وإضافة بعض التأخير الزمني لنستطيع قراءة القيم على نافذة Serial Monitor.
Serial.print("distance = "); Serial.println(distance); delay(500); }
مخطط توصيل مشروع بناء مسطرة إلكترونية باستخدام الأردوينو Arduino
توضح الصورة التالية التوصيل النهائي للمشروع، حيث أن خطوات التوصيل هي نفسها التي اتَّبعناها في تطبيق الشاشة والحساس معًا:
الكود البرمجي لمشروع بناء مسطرة إلكترونية باستخدام الأردوينو Arduino
سندمج الكود الخاص بشاشة LCD مع كود حساس الأمواج فوق الصوتية UltraSonic Sensor وعرض قيمة المسافة على الشاشة بدلًا من عرضها على نافذة الاتصال التسلسلية Serial Monitor فيكون الكود النهائي بالشكل التالي:
#include <LiquidCrystal.h> LiquidCrystal lcd(11, 10, 4, 5, 6, 7); #define trigPin 9 #define echoPin 8 int duration; int distance; void setup() { lcd.begin(16, 2); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); lcd.print("Hello World"); delay(1000); } void loop() { lcd.clear(); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * (0.0343 / 2); lcd.setCursor(0, 0); lcd.print("Digital Ruler"); lcd.setCursor(0, 1); lcd.print("Distance = "); lcd.print(distance); lcd.print("cm"); delay(500); }
محاكاة لمشروع بناء مسطرة إلكترونية باستخدام الأردوينو Arduino
سنتبع نفس الخطوات التي تعلمناها في مقال التحكم بتشغيل وإطفاء ليد LED باستخدام الأردوينو Arduino للوصول الى الصفحة الخاصة بمحاكاة مشروعك على موقع وكوي Wokwi.
سنضيف الآن العناصر الإلكترونية اللازمة للمشروع وهي: BreadBoard و LCD 16x2 و Potentiometer
بعد ذلك سنرتب العناصر على لوحة التجارب بالشكل الذي نراه مناسبًا، ثم نصل العناصر بعضها ببعض حسب مخطط التوصيل الذي عرضناه سابقًا. وعند الانتهاء من كل ما سبق، سنكتب الكود البرمجي في الجزء الخاص به ثم نشغل المحاكاة.
سنلاحظ أنه عند بداية تشغيل المشروع ستطبع العبارة Hello World على الشاشة في السطر الأول لمدة ثانية واحدة، بعد ذلك ستطبع العبارة Digital Ruler على الشاشة في السطر الأول دائمًا، وفي السطر الثاني سيطبع في بدايته = Distance ومن ثم قيمة المسافة وبجانبها الواحدة وهي سم cm.
نستطيع محاكاة تغيير المسافة من خلال النقر على الحساس أثناء تشغيل المشروع، فتظهر لنا نافذة في الأعلى تحتوي على شريط نستطيع تحريكه لتغيير قيمة المسافة كما يلي:
وعند تحريك الشريط المسؤول عن قيمة المسافة، سيحصل تحديث للقيمة المعروضة على الشاشة كل نصف ثانية باستمرار.
الخاتمة
بهذا نكون قد تعلمنا في هذا المقال كيفية إنشاء مسطرة إلكترونية باستخدام أردو ينو، كما وضحنا كيفية قياس المسافة من خلال حساس الأمواج فوق الصوتية Ultrasonic Sensor ولوحة الأردوينو Arduino، وتعرفنا على عنصر إلكتروني جديد وهو شاشة الكريستال السائلة LCD وأنواعها وكيفية عرض النصوص عليها وإضافة مؤثرات حركية، وفي النهاية استعرضنا خطوات محاكاة للمشروع من خلال منصة وكوي Wokwi.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.