Wochenend-Projekt: elektronischer Würfel v1.01

Das Krippenlicht muss warten. Nachdem mein Board so gut funktioniert hat, wollte ich ein lange von mir geplantes Projekt starten, – einen elektronischen Würfel. Das Programm und die Platine sind recht trivial und meinen Elektronik- und Programmierkenntnissen entsprechend. Aber er funktioniert! Das Programm in seiner ursprünglichen Form war mit einer Switch() Auswahl, welche ich aber den ganzen Samstag nicht zum laufen bekommen habe. Sogar der Debugger von meinem Entwicklungsstudio ist mit Programmfehler ausgestiegen, so dass das ich den Debugger im Windows immer wieder neu starten musste. Am Abend hatte ich die Nase voll, weil ich weder den Fehler finden konnte noch mit dem Debugger irgend etwas herausfinden konnte. Ich setzte mich mit einem Arbeitskollegen in Verbindung (der beruflich embedded Code schreibt) und zusammen konnten wir die Fehler mit dem Switch() nicht finden. So dann haben wir das Problem mit vielen IF() Anweisungen gelöst.

Kurze Erklärung:
In einer Endlosschleife wird bei jedem Durchlauf ein Zähler (i) um Eins (i++) erhöht und ein Input abgefragt. Wenn der Zähler 5 hat (Augenzahl 0 bis 5 sind 6) wird der Zähler auf 0 gesetzt. Wenn es einen Input gibt (Switch gedrückt) Wird der Zähler i ausgewertet und je nachdem welchen Wert i beim drücken des Switches hatte die dementsprechenden LEDs eingeschaltet. Der Zufallsgenerator ist sozusagen der Mensch, der den Switch drückt, – weil er nicht wissen kann wie hoch i in dem Moment des Drückens ist.

Weitere Anmerkung:
ich hatte als Widerstände nur 330 Ohm und habe diese genommen. Da auf manchen Ausgängen zwei LEDs sind, wären hier niedriger Widerstände besser um das Leuchten der LEDs gleichmäßiger zu bekommen. Als Batterie kann von 3,3Volt bis 5 Volt genommen werden (ich habe 4,5v (3xAA)).

 

Bild von der Schaltung:

El. Würfel

 

[pastacode lang=“c“ manual=“%2F*%0A%20*%20Attiny13_Wuerfel_v1_01.c%0A%20*%0A%20*%20Created%3A%2004.03.2018%2009%3A57%3A00%0A%20*%20Author%20%3A%20Bernd%0A%20*%2F%20%0A%0A%23include%20%3Cavr%2Fio.h%3E%0A%23include%20%3Cutil%2Fdelay.h%3E%0A%0A%0A%0Aint%20main(void)%0A%7B%0A%09DDRB%20%3D%200b00010111%3B%20%2F%2F%20Datenrichtungsbit%201%20%3D%20Ausgang%0A%09PORTB%20%3D0b00001000%3B%20%2F%2F%20Pullup%20Wiederstand%201%20%3D%20Ein%20(f%C3%BCr%20Eingang)%0A%20%20%0A%09int%20i%3D0%3B%20%2F%2F%20einfacher%20Z%C3%A4hler%20f%C3%BCr%20W%C3%BCrfel%20Augenanzahl%0A%09%0Awhile%20(1)%7B%20%2F%2F%20Endlos%20Schleife%0A%0A%09%09if(PINB%20!%3D%200b00001000)%20%2F%2F%20Abfrage%20ob%20Switch%20gedr%C3%BCckt%20%0A%09%09%09%7B%0A%09%09%09%09%0A%09%09%09%09%20_delay_ms(60)%3B%09%20%2F%2F%20kurze%20Pause%0A%09%09%09%09%09%09%09%09%0A%09%09%09%09if%20(i%3D%3D0)%09%2F%2F%20i%20Auswerten%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%201%20–%3E%20i%3D0%0A%09%09%09%09%09%09PORTB%20%3D0b00000001%3B%0A%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D1)%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%202%20–%3E%20i%3D1%0A%09%09%09%09%09%09PORTB%20%3D0b00000100%3B%0A%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D2)%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%203%20–%3E%20i%3D2%0A%09%09%09%09%09%09PORTB%20%3D0b00000101%3B%0A%09%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D3)%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%204%20–%3E%20i%3D3%0A%09%09%09%09%09%09PORTB%20%3D0b00010100%3B%0A%09%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D4)%0A%09%09%09%09%7B%0A%09%09%09%09%09%09%2F%2F%20Zahl%205%20–%3E%20i%3D4%0A%09%09%09%09%09%09PORTB%20%3D0b00010101%3B%0A%09%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09if%20(i%3D%3D5)%0A%09%09%09%09%7B%0A%09%09%09%09%09%2F%2FZahl%206%20–%3E%20i%3D5%0A%09%09%09%09%09PORTB%20%3D0b00010110%3B%0A%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09_delay_ms(1000)%3B%20%2F%2F%20kurze%20Pause%2C%20damit%20W%C3%BCrfel%20angezeigt%20wird%0A%09%09%09PORTB%20%3D0b00001000%3B%20%2F%2F%20nach%20Pause%20alle%20LEDs%20wieder%20ausschalten%0A%09%09%09%0A%09%09%09%0A%0A%09%09%09%7D%09%0A%09%09i%2B%2B%3B%09%2F%2F%20bei%20jedem%20Schleifendurchlauf%20i%20Erh%C3%B6hen%20%0A%09%09if%20(i%3D%3D6)%20%2F%2F%20Wenn%20i%20%3D%206%20dann%20i%20wieder%20auf%200%20setzen%0A%09%09%09%7B%0A%09%09%09%20i%3D0%3B%20%0A%09%09%09%7D%0A%09%0A%20%20%20%20%7D%0A%09return%20(0)%3B%0A%7D%0A%0A%0A“ message=“Source zu AtTiny13_Wuerfel_v1_01″ highlight=““ provider=“manual“/]

Dieser Beitrag wurde unter Elektronik, Microcontroller, Wochenend Projekte veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar