// הגדרת מספרי הפינים שמחוברים לרכיבים #define magSensorPin 2 #define inLampRlyPin 4 #define outLampRlyPin 5 #define speakerRlyPin 6 #define motorIn1 8 #define motorIn2 9 // מצב החיישן המגנטי, 0 - סגור 1 - פתוח int magSensorState = 0; // האם נזרקה חסה מאז שנפתח הדלת, 0 זה לא 1 זה כ int laticeState = 0; void setup() { pinMode(magSensorPin, INPUT_PULLUP); pinMode(inLampRlyPin, OUTPUT); pinMode(outLampRlyPin, OUTPUT); pinMode(speakerRlyPin, OUTPUT); pinMode(motorIn1, OUTPUT); pinMode(motorIn2, OUTPUT); // עצור מנוע במצב התחלתי digitalWrite(motorIn1, LOW); digitalWrite(motorIn2, LOW); // נתק ממסר תאורה פנימית digitalWrite(inLampRlyPin, LOW); // סגור ממסר תאורה חיצונית digitalWrite(outLampRlyPin, HIGH); // נתק ממסר רמקול digitalWrite(speakerRlyPin, LOW); } void loop() { // קרא מצב חיישן מגנטי magSensorState = digitalRead(magSensorPin); // אם החיישן המגנטי פתוח - דלת פתוחה if (magSensorState == HIGH && laticeState == 0) { // המתן שלוש שניות עד שהדלת תפתח כולה delay(3000); // חבר ממסר תאורה פנימית digitalWrite(inLampRlyPin, HIGH); // נתק ממסר תאורה חיצונית digitalWrite(outLampRlyPin, LOW); // חבר ממסר רמקול digitalWrite(speakerRlyPin, HIGH); // הפעל מנוע למשך שני סיבובים digitalWrite(motorIn1, LOW); digitalWrite(motorIn2, HIGH); // השהייה למשך שני סיבובים delay(1200); // עצור מנוע אחרי שני סיבובים digitalWrite(motorIn1, LOW); digitalWrite(motorIn2, LOW); laticeState = 1; } // אם הדלת נשארה פתוחה אחרי זריקת החסה else if (magSensorState == HIGH && laticeState == 1) { // חבר ממסר תאורה פנימית digitalWrite(inLampRlyPin, HIGH); // נתק ממסר תאורה חיצונית digitalWrite(outLampRlyPin, LOW); // חבר ממסר רמקול digitalWrite(speakerRlyPin, HIGH); // עצור מנוע אחרי שני סיבובים digitalWrite(motorIn1, LOW); digitalWrite(motorIn2, LOW); } // אם החיישן המגנטי סגור - דלת סגורה else if (magSensorState == LOW) { // נתק ממסר תאורה פנימית digitalWrite(inLampRlyPin, LOW); // סגור ממסר תאורה חיצונית digitalWrite(outLampRlyPin, HIGH); // נתק ממסר רמקול digitalWrite(speakerRlyPin, LOW); // עצור מנוע במצב התחלתי digitalWrite(motorIn1, LOW); digitalWrite(motorIn2, LOW); laticeState = 0; } }