// הגדרת מנוע סרוו לתנועות הפחדה #include Servo handsServo; #define srvPin 10 // משתנים לחיישן אולטראסוני #define trigPin 8 #define echoPin 9 long duration, distance; // נורות חיווי על מצב הפעלה #define powerOnLed 3 #define yonaLed 4 // משתנים של מפסקי גבול סוף מסילה #define startLSPin 5 #define endLSPin 6 int startLSValue = 0; int endLSValue = 0; //משתנים למנוע רכב רובוטי #define motorPin1 11 #define motorPin2 12 // משתנה לחיבור הזמזם #define buzPin 7 // משתנה כיוון הנסיעה int dir = 0; // 0- back or stop, 1 - froward void setup() { Serial.begin(9600); handsServo.attach(srvPin); // מצב התחלתי של זרועות הדחליל handsServo.write(0); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(powerOnLed, OUTPUT); // הדלק נורה כאשר יש מתח במערכת digitalWrite(powerOnLed, HIGH); pinMode(yonaLed, OUTPUT); // מצב התחלתי לא זוהתה יונה digitalWrite(yonaLed, LOW); pinMode(startLSPin, INPUT); pinMode(endLSPin, INPUT); pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration / 2 / 29.1; if (distance < 100) { //זוהתה יונה במרחק של פחות ממטר אחד endLSValue = digitalRead(endLSPin); // כל עוד הרכב לא היגיע לקצה המסילה תבצע את הפעולות הבאות while (endLSValue == LOW) { // הפעל מנועים בנסיעה קדימה digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); // הפעל זמזם להבריח יונים tone(buzPin, 4000); // הדלק נורת זיהוי יונה digitalWrite(yonaLed, HIGH); // הפעל מנוע ידי דחליל הלוך וחזור handsServo.write(90); delay(200); handsServo.write(00); delay(200); // קרא מפסקי גבול כדי לוודא שהרכב נמצא בתחילת המסילה endLSValue = digitalRead(endLSPin); } // עצור מנועים עם ההגעה לקצה המסילה digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); startLSValue = digitalRead(startLSPin); // כל עוד הרובוט לא שב עד קצה המסילה תבצע את הפעולות הבאות while (startLSValue == LOW) { // הפעל מנועים בנסיעה לאחור digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); // השתק זמזם noTone(buzPin); // כבה יונה חיווי על המסילה digitalWrite(yonaLed, LOW); // עצור ידי דחליל handsServo.write(0); delay(200); // קרא מפסקי גבול כדי לוודא שהרכב נמצא בתחילת המסילה startLSValue = digitalRead(startLSPin); } // עצור מנועים עם ההגעה לקצה המסילה digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); } else { digitalWrite(yonaLed, LOW); } }