الكود
#include <LiquidCrystal.h> // the LCD Library #include <NewPing.h> // the Ultrasonic Library #define TRIG 3 // Pin-3 of Arduino Connected to Trig Pin of Ultrasonic #define ECHO 2 // Pin-4 of Arduino Connected to Echo Pin of Ultrasonic #define MAX_DISTANCE 100 // Max. Distance the Sensor Can Measure, Required for the Library NewPing sonar(TRIG, ECHO, MAX_DISTANCE); // Ultrasonic Variable LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // LCD Variable unsigned int duration; // Variable Used To Store The Measured Distance void setup() { pinMode(TRIG,OUTPUT); // Set Trig Pin of Arduino As Output pinMode(ECHO, INPUT); // Set Echo Pin of Arduino As Input lcd.begin(16,2); // To Setup and Start the LCD lcd.clear(); // To Clear the LCD } void loop() { duration = sonar.ping(); // Send ping, get ping time in microseconds (uS). duration = duration / 2 / 29.4; // Explained Below lcd.print("Ping: "); // to Print " Ping: " on the LCD lcd.print(duration); // next to it print the Calculated Value lcd.print(" cm"); // on lcd we will see " Ping: 30 cm " delay(1000); // min. delay between pings is 29 msec lcd.clear(); // to clear the LCD for the Next Round }
شرح الكود :
في البداية قم بإدراج المكتبات المستخدمة في البرنامج, هنا سيتم استخدام مكتبة الشاشة LCD و مكتبة حساس الموجات فوق الصوتية Ultrasonic.
نقوم بتعريف أسماء منافذ الاردوينو التي تم توصيلها مع الحساس :
#define TRIG 3
ننشىء المتغيرات اللازمة للمكتبات المستخدمة :
أولا، نقوم بتعريف المتغير الخاص بمكتبة الشاشة LCD، وإعداده إعتمادا على كيفية توصيله مع الأردوينو :
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
ثم نقوم بتعريف المتغير الخاص بمكتبة Ultrasonic، وتحديد منافذ الأردوينو المتصل معها :
NewPing sonar(TRIG, ECHO, MAX_DISTANCE);
نقوم بتهيئة الشاشة LCD للعمل عن طريق الامر :
lcd.begin(16,2);
يقوم الكود بتشغيل الحساس و حساب المسافة ثم يتم عرضها على الشاشة :
void loop() { duration = sonar.ping(); // Send ping, get ping time in microseconds (uS). duration = duration / 2 / 29.4; // Explained Below lcd.print("Ping: "); // to Print " Ping: " on the LCD lcd.print(duration); // next to it print the Calculated Value lcd.print(" cm"); // on lcd we will see " Ping: 30 cm " delay(1000); // min. delay between pings is 29 msec lcd.clear(); // to clear the LCD for the Next Round }
في البداية، نقوم بإستخدام الدالة ()sonar.ping لنحصل على قيمة الوقت الذي استغرقته موجات الـUltrasonic لتصدم بكائن و تعود الى الحساس مرة اخرى. ثم نقوم بعمل حسابات بسيطة على هذة القيمة سيتم شرحها لاحقا بعد ذلك قمنا بعرض هذة الحسابات على شاشة LCD.
-
الحسابات الخاصة بعمل حساس الموجات فوق الصوتية:
يقوم الحساس بارسال موجات فوق صوتية و عند اصطدامها بحائل ترتد مرة اخرى فيمكن للاردوينو حساب الوقت الذى استغرقته الموجات للذهاب و العودة لذلك لابد من القسمة على 2 لاننا نريد حساب المسافة و هذا يعتمد على وقت الذهاب فقط.
سرعه الصوت في الهواء في الحالة العادية تقريبا 340 متر لكل ثانية فيكون الوقت المستهلك لعبور 1 سم هو :
100 للتحويل من متر الى سم , و 10^6 للتحويل من ثانية الى مايكروثانية .