Stmievač LED pásika s dvomi PIR senzormi

Zápisník experimentátora

Hierarchy: Stmievač LED pásika pomocou ATtiny85

Stmievače už úspešne fungujú na viacerých miestach. Tento mesiac som mal možnosť nasadiť dva nové stmievače. Prvý bol klasický jednosenzorový s programom nastaveným na 45 s intervaly. To je verzia, ktorá sa nakonies ustálila na skoro všetkých miestach použitia. Verzia kódu je 1.3 a popis ku konštrukcii stmievača je zatiaľ na týchto stránkach.

Na druhý boli kladené špeciálne požiadavky. Mal byť schopný používať dva PIR senzory. A ovládať mal schodiskové osvetlenie. Keďže na doske sú k dispozícií tri konektory, z ktorých je bežne pripojený iba jeden, bolo potrebné urobiť v programe malú modifikáciu. Priame čítanie signálu z PIR senzora je nahradené funkciou, ktorá zabezpečuje čítanie oboch senzorov. Takto je možné reagovať na pohyb na oboch miestach a zažínať svetlo. Podstatné časti programu sú v nasledovnej ukážke. Verzia kódu je 1.3a.

const int dig1 = 1;
const int dig2 = 3;

// ATMEL ATTINY85
//
//                  +-\/-+
//      (D 5) PB5  1|    |8  Vcc
// dig2 (D 3) PB3  2|    |7  PB2 (D 2)
//      (D 4) PB4  3|    |6  PB1 (D 1) dig1
//            GND  4|    |5  PB0 (D 0) led
//                  +----+

///
/// Signal on pin 1 or 2
///
int HasSignal()
{
if(digitalRead(dig1))
  return true;
if(digitalRead(dig2))
  return true;
return false;
}

///
///  Wait until digital pin is OFF + hold_value
///
void LightHold() {
...
while(millis()<dig_last)
  {
  int p=HasSignal();
  if(p) // still ON
    {
    ...
    }
  }
...
}

Pri vývoji som objavil aj to, že napriek vizuálnej podobnosti existuje niekoľko verzií PIR senzorov. Predtým som mal v rukách také, ktoré dávali signál 3,3 V. Teraz mám také, ktoré dávajú 5 V. A že keď senzor nefunguje, treba dať dolu šošovku a skontrolovať, či sú naozaj všetky konektory priletované.



Download

28.07.2015


Menu