تمثيل المسافة باستخدام الاردوينو وواجهة المستخدم الرسومية

مبتدئ

image_pdf

الكود البرمجي للتحقق من قراءة المدخلات

في البداية سنقوم برفع كود برمجي لمحاكاة مشروع تمثيل المسافة باستخدام الاردوينو وواجهة المستخدم الرسومية والتحقق من أن الحساس يعطي قراءات صحيحة، ويتم طباعة الأوامر على شاشة الاتصال التسلسلي.

ارفع الكود التالي إلى لوحة الاردوينو عن طريق (Arduino DE) وافتح شاشة الاتصال التسلسلي.

#define Trigger 2
#define Echo 3
int timetaken, dist;
int sendv;

void setup() {
 Serial.begin (9600);
  pinMode(Trigger, OUTPUT);
  pinMode(Echo, INPUT);
}
void loop() {
  timetaken=dist=0; //initialize the variable to zero before calculation

 //request the US to send a wave
  digitalWrite(Trigger, HIGH);
  digitalWrite(Trigger, LOW);

  timetaken = pulseIn(Echo, HIGH); //calculate the time taken for the wave to return
  dist = (timetaken/2) / 2.91; //formulae to calculate the distance using time taken
  if (dist <= 200 && dist > 0)//send the value to python only if it ranhes from 0-20 cm
  sendv = dist;

 Serial.println(sendv);
 delay(200);

}

شرح الكود البرمجي

هذه الأسطر توضح منافذ الاردوينو التي ستستخدمها لربط منافذ حساس الموجات فوق الصوتية Trigger مع المنفذ الرقمي 2 و Echo مع المنفذ الرقمي 3.

#define Trigger 2
#define Echo 3

هنا عرّفنا المتغير timetaken ويقوم بحساب الوقت اللازم لرجوع الموجه لحساس الموجات فوق البنفسجية والمتغير dist يقوم بحساب المسافة وآخر متغير هو sendv يقوم بإرسال القيمة للبايثون.

int timetaken, dist;
int sendv;

في الدالة ()setup ستتم قراءة البيانات بواسطة حساس الموجات فوق الصوتية منفذ Trigger للمدخلات ومنفذ Echo للمخرجات وستنطبع القراءة على شاشة الاتصال التسلسلي.

void setup() 
{
 Serial.begin (9600);
  pinMode(Trigger, OUTPUT);
  pinMode(Echo, INPUT);
}

في الدالة ()loop ستكون القيمة الافتراضية صفر لمتغير المسافة ومتغير الوقت اللازم. (ما لم يقوم المستخدم بتنفيذ إجراء على حساس الموجات فوق الصوتية)

void loop() {
  timetaken=dist=0; //initialize the variable to zero before calculation

بعد ذلك سيتم تحديث البيانات المقروءة من حساس الموجات فوق الصوتية عن طريق المتغير Trigger.

digitalWrite(Trigger, HIGH);
  digitalWrite(Trigger, LOW);

المتغير timetaken سيقوم بحساب الوقت اللازم لرجوع الموجه المأخوذة من الحساس عن طريق المتغير Echo.

timetaken = pulseIn(Echo, HIGH); //calculate the time taken for the wave to return

المتغير dist سيقوم بتحديث المسافة المقروءة من حساس الموجات فوق الصوتية بالاعتماد على متغير timetaken.

  dist = (timetaken/2) / 2.91; //formulae to calculate the distance using time taken

إذا كانت المسافة المقروءة أصغر من أو تساوي 200 وأكبر من 0 سيتم إرسال القيمة للبايثون. (أي بين 0-20 سم)

  if (dist <= 200 && dist > 0)//send the value to python only if it ranhes from 0-20 cm

أخيرًا ستتم طباعة المسافة على شاشة الاتصال التسلسلي.

 Serial.println(sendv);

X
Product added to the cart