Bogusław Kempny

Zwarcie/rozwarcie

×
Autor English
Początek HC-SR04 LCD Kamera fork() sms strfry() GPIO impulsy Klawiatura Brama GPIO PWM SG90 RFID Grafolog RCP Shutdown Temperatura ....











Teraz w nieskończonej pętli sprawdzamy stan czujnika bramy:
for (;;)
 {
  if(digitalRead(PIN_WYL)==0)   //brama zamknieta, styk czujnika zwarty
   czas_otw=CZAS; 
  else 
   czas_otw--; // brama otwarta, odliczamy kolejne sekundy otwarcia
  sleep(1); // sekunda opoznienia do kolejnego testu czujnika
  if (czas_otw==0) // licznik sekund otwarcia sie wyzerowal
   {
    alarm(); // brama za dlugo otwarta, zareaguj
    czas_otw=CZAS; // jesli brama mimo alarmu nie zostanie zamknieta, 
                   // po czasie CZAS ponownie uruchom alarm
   }
 } 
Funkcja alarm. Może robić cokolwiek, uruchomić siłownik zamykający bramę, wysłać sms, w naszym przykładzie uruchomi trzykrotnie sygnalizator dźwiękowy (optyczny) podłączony do pinu PIN_ALARM, na 3 sekundy, z przerwami 1 sekundowymi.

Oczywiście sygnalizatora nie możemy podłączyć bezpośrednio do pinu GPIO. W stanie jedynki logicznej będzie tam napięcie około 3,3V. Maksymalny prąd jaki możemy uzyskać z pojedynczego pinu to około 16 mA, a suma wszystkich prądów wypływających z pinów GPIO powinna być mniejsza niż 50 mA.
To niewiele, w dodatku bezpieczniej jest nie zbliżać się do tych granicznych wartości, więc nasz sygnalizator podłączymy na przykład za pośrednictwem tranzystora:

}
void alarm()
{ 
  digitalWrite(PIN_ALARM,HIGH);
  sleep(3);
  digitalWrite(PIN_ALARM,LOW);
  sleep(1);
  digitalWrite(PIN_ALARM,HIGH);
  sleep(3);
  digitalWrite(PIN_ALARM,LOW);
  sleep(1);
  digitalWrite(PIN_ALARM,HIGH);
  sleep(3);
  digitalWrite(PIN_ALARM,LOW);
  sleep(1);
}
I na koniec pytanie. Wiesz na czym nabazgrałem ten schemacik? To karta do perforowania. Ma już prawie pół wieku. Na takich kartach kodowało się programy i dane. Pojemność? 80 znaków 10 bitowych.