المقدمة
في الدرس السابق تعلمنا تصنيع معقم بالمنزل في هذا الدرس تعلم كيف، يمكننا استخدام حساس المسافة للتعقيم بدون مسك العبوة،
![](https://geeksvalley.com/wp-content/uploads/2020/03/ezgif.com-video-to-gif-9-168x300.gif)
القطع المطلوبة
![](https://geeksvalley.com/wp-content/uploads/2020/03/Arduino_Uno_-_R3-300x300.jpg)
![us-sanitizer-without-touch](https://geeksvalley.com/wp-content/uploads/2019/06/arduino-usb-lead-blue-300x300.jpg)
![us-sanitizer-without-touch](https://geeksvalley.com/wp-content/uploads/2020/03/hc-sr04-cheap-ultrasonic-sensor-181-83-B-300x229.jpg)
حساس مسافة (ultrasonic sensor)
![us-sanitizer-without-touch](https://geeksvalley.com/wp-content/uploads/2020/03/Dr74MICJHngPrFx4Z673g4vPLfHUmDDlYExXr80j-300x300.jpeg)
(TowerPro MG946R Servo )محرك سيرفو
![us-sanitizer-without-touch](https://geeksvalley.com/wp-content/uploads/2020/03/small-size-breadboard-170-colors-300x300.jpg)
لوح تجارب صغير (Small size breadboard)
![us-sanitizer-without-touch](https://geeksvalley.com/wp-content/uploads/2020/03/Female-Male-Jumper-Wires-300x225.jpg)
(Jumper Wires Female/male )اسلاك توصيل أنثى/ذكر
![us-sanitizer-without-touch](https://geeksvalley.com/wp-content/uploads/2020/03/male-male-300x225.jpg)
(Jumper Wires Male/Male) اسلاك توصيل ذكر/ذكر
توصيل الدائرة :
قم بتوصيل الدارة كما هو موضح بالصورة التالية :
![servo_sanitizer](https://geeksvalley.com/wp-content/uploads/2020/03/download-300x195.png)
الكود البرمجي :
#include <Servo.h> Servo myservo; const int trigPin = 10; const int echoPin = 11; long duration; int distance; void setup() { myservo.attach(9); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance= duration*0.034/2; if (distance < 5) { myservo.write(110); } else { myservo.write(35); }}
شرح الكود البرمجي :
في البداية قمنا بادراج مكتبة السيرفو ثم قمنا بتسمية منافذ الأردوينو المستخدمة في المشروع و تعريف المتغيرات
#include <Servo.h> Servo myservo; const int trigPin = 10; const int echoPin = 11; long duration; int distance;
في دالة setup تعريف المنفذ الذي سيتحكم بمحرك السيرفو ،
و تعريف منافذ حساس المسافة
myservo.attach(9); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
يقوم الكود بتشغيل الحساس و حساب المسافة
void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance= duration*0.034/2;
فقط اذا كانت المسافة أقل من 5سم يتحرك السيرفو بمقدار 110درجة
if (distance < 5) { myservo.write(110); } else { myservo.write(35); } }