الكود
#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 للتحويل من ثانية الى مايكروثانية .

