// הגדרת מספרי הפינים שמחוברים לרכיבים
#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;
}
}
Comments