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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.