gabbyshimoni icon

or arieli

gabbyshimoni | PRO | 07/16/19 05:49:33 PM UTC | 0 ⭐ | 414 👁️ | Never ⏰ | []
C++ |

2.86 KB

|

None

|

0 👍

/

0 👎

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