Skocz do zawartości

Zastąpienie klawiatury z kursu przyciskami


pluto15

Pomocna odpowiedź

Witam. Można jeszcze liczyć tutaj na pomoc czy już przedawnione:)?

W moim projekcie klawiaturę z zestawu chciałem zastąpić przyciskami ( zwykłe switche) i tu problem.. Wszystko jest okej ale gdy układ przechodzi w 3 stan nie ma mozliwosci wpisana pinu tylko od razu imitowany jest alarm, ktos moze ma radę jak to zrobic? A może całkowicie w innym kierunku pisać?

#define zazbrajanie 0
#define cyfra1 1
#define cyfra2 2
#define cyfra3 3
#define cyfra4 4
volatile int stanAlarmu = 1;
int pozycja = 1;


void setup() {
  pinMode(0, INPUT_PULLUP); //zazbrajanie alarmu
  pinMode(1, INPUT_PULLUP); // klawiatura
  pinMode(2, INPUT_PULLUP); // klawiatura
  pinMode(3, INPUT_PULLUP);  // klawiatura
  pinMode(4, INPUT_PULLUP);  // klawiatura
  pinMode(12, INPUT_PULLUP); //imitacja PIR
  pinMode(10, INPUT_PULLUP); //imitacja Kontraktonu
  pinMode(A2, OUTPUT); // diody sygnalizacyjne
  pinMode(A4, OUTPUT); // diody sygnalizacyjne
  pinMode(A3, OUTPUT); // diody sygnalizacyjne
}

void loop() {

  switch(stanAlarmu){
    case 1:  //stan czuwania
    if(digitalRead(zazbrajanie) == LOW) {   // jesli nacisniemy, uklad zaczyna pracowac
      for(int i = 0; i < 5; i++) {
  digitalWrite(A2, HIGH);
  digitalWrite(A4, HIGH);
  digitalWrite(A3, HIGH);
  delay(500);
  digitalWrite(A2, LOW);
  digitalWrite(A4, LOW);
  digitalWrite(A3, LOW);
  delay(500);
      }
      stanAlarmu = 2;  //po mignięciach przechodzimy w stan czuwania
    }
    break;

    case 2:  
  digitalWrite(A2, HIGH);  //sygnalizcja stanu czuwania
  digitalWrite(A4, HIGH);
  digitalWrite(A3, HIGH);
  if(digitalRead(12) == LOW) {   //czy PIR wykryl ruch?
    stanAlarmu = 4;   // jesli tak, włącz alarm
  } else if(digitalRead(10) == LOW) { //czy kontrakton otwarty?
    stanAlarmu = 3;  // jesli tak, daj możliwosc wpisania PIN
  }
  break;

  case 3:  // wpisywanie PIN
  if(digitalRead(cyfra1) == LOW && pozycja == 1) {
    pozycja++;
  } else if(digitalRead(cyfra2) == LOW && pozycja == 2) {
  pozycja++;
  } else if(digitalRead(cyfra3) == LOW && pozycja == 3) 
  pozycja++;
   else if(digitalRead(cyfra4) == LOW && pozycja == 4) {
 stanAlarmu = 1;
 pozycja = 1;
} else {
  stanAlarmu = 4;
  pozycja = 1;
}
break;
case 4:  // alarm
for(int i = 0; i < 8; i++) {
  digitalWrite(A2, LOW);
  digitalWrite(A4, HIGH);
  digitalWrite(A3, HIGH);
  delay(500);
  digitalWrite(A2, HIGH);
  digitalWrite(A4, LOW);
  digitalWrite(A3, LOW);
  delay(500);
}
break;
  }
}

 

Edytowano przez Gieneq
Link do komentarza
Share on other sites

6 godzin temu, pluto15 napisał:

Można jeszcze liczyć tutaj na pomoc czy już przedawnione:)?

Napisałeś to w dobrym dziale, zwykle szybkie pytania są rozwiązywane właśnie tam. Ale ten temat będzie chyba większy więc wydzieliłem go jako nowy temat.

A mógłbyś wrzucić zdjęcie tego układu?

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.