الكود:-
تحميل الكود:- هـــــــــــــــــنـــــــــــــــا
شرح الكود:-
#include<SoftwareSerial.h> //مكتبة GSM
#define trigPin 12 //تعريف المنفذ 12 الخاص بحساس الموجة الفوق الصوتية للإرسال
#define echoPin 13 //تعريف المنفذ 13 الخاص بحساس الموجة الفوق الصوتية للإستقبال
#define piezoPin 11 //تعريف المنفذ 11 الخاص بالرنين
int inputPin1 = 10; //تعريف منفذ 10 الخاص بالزر
int val; //تعريف متغير
SoftwareSerial mySerial(2, 3); //تعريف المنافذ الخاصة بـــGSM
int normalDistance;//تعريف المسافة حساس الموجة الفوق الصوتية
boolean triggered = false;
long duration, distance;// طول المدة الزمنية
void setup() //تعريف المداخل والمخارج
{
mySerial.begin(9600); //فتح الاتصال التسلسي بمعدل 9600
delay(100); //تاخير زمني
pinMode(trigPin, OUTPUT); //تعريف منفذ الأرسال للحساس الموجة الفوق الصوتية خرج
pinMode(echoPin, INPUT); //تعريف منفذ الأستقبال لحساس الموج الفوق الصوتية دخل
pinMode(piezoPin, OUTPUT); //تعريف منفذ الرنين خرج
pinMode(inputPin1, INPUT); //تعريف منفذ الزر دخل
digitalWrite(piezoPin, HIGH); //إرسل للمنفذ الرقمي رجل 11 HIGH
long duration, distance;// طول المدة الزمنية
while (millis() < 5000)// عندما طول المدة الزمنية أقل من 5 متر
{
digitalWrite(piezoPin, HIGH); //إرسل للمنفذ الرقمي رجل 11 HIGH
digitalWrite(trigPin, LOW); //إرسل للمنفذ الرقمي رجل 12 LOW
delayMicroseconds(2); //توقف زمني
digitalWrite(trigPin, HIGH); //إرسل للمنفذ الرقمي رجل 12 HIGH
delayMicroseconds(10);//توقف زمني
digitalWrite(trigPin, LOW);//إرسل للمنفذ الرقمي رجل 12 LOW
duration = pulseIn(echoPin, HIGH); //الزمن يساوي النبضة .. إذا الأستقبال HIGH
distance= duration*0.034/2; //معادلة المسافة
normalDistance = distance;
digitalWrite(piezoPin, LOW); //أرسل للمنفذ الرقمي رجل 11 LOW
} }
void loop() //دالة التكرار
{
val = digitalRead(inputPin1); // قيمة المتغير تساوي قراءة المنفذ الرقمي 10
digitalWrite(trigPin, LOW); //أرسل للمنفذ الرقمي رجل 12 LOW
delayMicroseconds(2); //توقف زمني
digitalWrite(trigPin, HIGH); //أرسل للمنفذ الرقمي رجل 12 HIGH
delayMicroseconds(10); //توقف زمني
digitalWrite(trigPin, LOW); //أرسل للمنفذ الرقمي رجل 12 LOW
duration = pulseIn(echoPin, HIGH); //الزمن يساوي النبضة .. إذا الأستقبال HIGH
distance= duration*0.034/2; //معادلة المسافة في المدة الزمنية
if (distance <= 5 && distance >= 0) // شرط إذا كانت القيمة المسافة أكبر أو يساوي 5 أو أصغر أويساوي0
{
triggered = true; //الأرسال يساوي صحيح
}
else
{
triggered = false; //الأرسال يساوي خاطئ
}
if (triggered)
{
tone(piezoPin, 50); //نغمة الرنين تساوي 50
delay(50); //تاخير زمني
tone(piezoPin, 5000); //نغمة الرنين تساوي 5000
delay(500); //تاخير زمني
mySerial.println("ATD +XXXXXXXX;\r"); // إمر الأتصال الخاص بــ GSM
delay(1000); //تاخير زمني
}{
if (val == HIGH) //شرط إذا كانت قيمة المتغير تساوي HIGH
tone(piezoPin, 0); //نغمة الرنين تساوي 0
}}