التخطي إلى المحتوى الرئيسي

الكود المستخدم





الكود:-






شرح الكود:-


#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
}}