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é.
28.07.2015