hamik156

Házecí kostka s ATtiny

Elektronická házecí kostka patří mezi nejoblíbenější projekty, protože hotový produkt má i konkrétní využití ve hrách nebo situacích, kdy vám nahradí klasickou kostku – a jako první elektronický projekt má uspokojivý poměr „námaha/výsledek“.
My si na tomto projektu ukážeme pár vychytávek, a to jak v zapojení, tak v programu.

Autorem této verze je náš kamarád Vladimír Jiříček, který využil jednu z prototypovacích desek FIRSTboard a zapojení realizoval pomocí SMD diod a odstřižků drátků z odporů. ATtiny (verze 13, lépe 85) má pouze 5-6 použitelných pinů, což byl první drobný nedostatek, protože při připojení jedné LED diody na pin by nám PINy nestačily. Počet stavů, kterých potřebujeme dosáhnout není šest, ale sedm (v klasickém rozložení kostky při svítící šestce, jednička nesvítí) – my to však můžeme zachovat a vystačíme si i s dostupnými datovými linkami za použití drobného fígle. Na následujícím obrázku jsou čtyři použité kombinace svícení LEDek:

Jak vidíte, některé diody zapojíme ve dvojici (na obrázku varianta B, C a D).
Pak nám stačí čtyři datové linky A, B, C, D a jednotlivých stavů dosáhneme kombinací:
1 = A, 2 = B, 3 = A+B, 4 = B+C, 5 = A+B+C, 6 = B+C+D

LEDky spínáme k zemi, tlačítko také k zemi. Dvě současně svítící LED jsou zapojeny paralelně, každá se svým odporem, aby svítily i na 3 volty. Použili jsme vysocesvítivé LED a proto i odpor 1k (R) umožní jasný svit.

Na obrázku pak vidtíte finální testování – a ještě přiblížení zadní strany, která zobrazuje propojení diod k ATtiny.





 Nastavení portů:
 void setup() {
    pinMode(one,  OUTPUT); // A
    pinMode(two,  OUTPUT); // B
    pinMode(four, OUTPUT); // C
    pinMode(six,  OUTPUT); // D
    pinMode(button, INPUT_PULLUP);
    } 


Výstupu se Vladimír zhostil po svém - jednotlivá spínání realizuje důmyslným využitím zapojení a posíláním binárních dat na PORTB:

switch (combination) {
    case 1:   // 0b00000001 > svítí "1", dioda A
    case 2:   // 0b00000010 > svítí "2", dvojice B 
       PORTB = ~(combination); // (negace, protože spínáme do nuly)
       break; 
    case 3:  
    case 4:
    case 5:
       PORTB = ~(combination + 2);
       break;
    case 6:
       PORTB = ~(combination + 16); // svítí B, C, D
       break; 
...
}
 

Program, který slouží k otestování funkčnosti, je na našem githubu:
https://github.com/octopusengine/hamik_cz/blob/master/attiny/attiny-hamik156/attiny-dice-test/attiny-dice-test.ino
Konečnou variantu programu jsme zatím nepublikovali, pošlete nám svoji verzi. (Na mail honza.copak@gmail.com).
Na autory funkčních programů čeká drobná odměna (deska FIRSTboard a pár součástek k ní).