Ein AVR Microcontroller basierter elektronischer Würfel

ArticleCategory: [Choose a category, do not translate this]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

AboutTheAuthor:[A small biography about the author]

Guido likes Linux because it is a really good system to develop your own hardware.

Abstract:[Here you write a little summary]

Reisen ins Weltall klingt sehr aufregend, aber jetzt sind wir hier in unserem Raumschiff und es gibt ca. 10 Quadratmeter für 5 Leute. Es dauert noch eine Woche bis wir die erste Raumstation erreicht haben. Ich habe meinen mp3 Player mitgenommen, aber nach so vielen Reisetagen habe ich jeden Song schon zigmal gehört.

James hat es besser gemacht. Er hat einen elektronischen Würfel bei shop.tuxgraphics.org gekauft, weil normale Würfel wegen der fehlenden Gravitationskraft nicht funktionieren....

Laß uns spielen ;-).

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Der elektronische Würfel

Ein Würfel ist essentiell nur eine spezielle Anzeige für Zahlen von 1 bis 6.

Warum ist ein echter Würfel ein Zufallszahlengenerator? Wenn deine Hand perfekte Präzisionsmechanik besitzen würde und du die Geschwindigkeit und Position genau steuern könntest, dann wäre ein echter Würfel wahrscheinlich deterministisch. In anderen Worten, derjenige, der den Würfel rollt, ist derjenige, der für die Zufälligkeit sorgt.

Wenn du dir den Code für unseren elektronischen Würfel anschaust, wirst du feststellen, dass es sich einfach nur um einen Zähler handelt. Er zählt hoch, während du einen Knopf drückst. Warum ist dies ein perfekter Würfel? Es ist ein Würfel, weil Mikrocontroller ihre Operationen in μs durchführen und Menschen nicht in der Lage sind, Druckknöpfe und Zeit mit der Präzision von μ-Sekunden zu kontrollieren. Auch wenn du den Druckknopf nur für eine kurze Zeit gedrückt hälst, läuft der Zähler des Mikrocontrollers ungefähr 56mal oder 80mal oder 102mal... durch die Schleife. Es ist unmöglich, es genau zu steuern. Es ist zufällig.

[the electronic dice]
7 LEDs mit Widerständen, einem Mikrocontroller, einem Druckknopf und einem Batteriekasten.

Der E-dice als ein nettes AVR Projekt

Der E-Würfel ist ein einfaches, aber nützliches AVR Anfängerprojekt.

[circuit diagram]
Der Schaltplan


Laßt uns den Code anschauen. Dies ist der Hauptteil des Codes. Der vollständige Quellcode steht am Ende des Artikels zum Herunterladen zur Verfügung:
        unsigned char i=0;
        initLEDports();
        DDRB &= ~(1<<PINB0); // input line
        PORTB|= (1<<PINB0); // internal pullup resistor on

        while (1) {
                if (bit_is_clear(PINB,PINB0)){
                        // button pressed, switch off the LEDs and count
                        allLEDsOff();
                        i++;
                        i %= 6; // numbers from 0 to 5
                }else{
                        // no button press. display result:
                        displayNumber(i);
                }
        }
Was man hier lernen kann, ist, wie man überprüft, ob ein Knopf gedrückt wurde. Der Knopf ist zwischen Pin PB0 und GND (Erde) verbunden. Nach dem Initialisieren der LED Verbindungen als Ausgang (initLEDports) schreiben wir eine Null in das data direction register (Datenrichtungsregister) auf die Position, die für PB0 verantwortlich ist. Dies führt dazu, dass der Pin zu einem digitalen Eingang wird. Es gibt auch die Möglichkeit, einen internen Widerstand, der den Eingang auf 5V zieht, anzuschalten, so daß der Eingang einen definierten Zustand hat, wenn nichts angeschlossen ist. Jetzt kommen wir zu einer Endlosschleife (while(1)) und überprüfen die ganze Zeit den Zustand des Schalters (Knopfes). bit_is_clear(PINB,PINB0) liest die Eingangszeile und überprüft, ob 0V entdeckt werden. Dies ist der Fall, wenn der Knopf gedrückt wird.

i++; und i %= 6; ist der Zähler, der bis 5 hochzählt und dann von Neuem bei Null beginnt. Der restliche Code beschäftigt sich mit der speziellen LED-Anzeige.

Einfach, aber es läuft sehr gut... und es funktioniert so gar ohne Gravitationskraft.

[First tests, it's a 5]
Erste Tests, ich habe eine 5 gewürfelt!


Viel Spaß und fröhliches Löten!

Referenzen