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]
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]
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.
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.
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.
Erste Tests, ich habe eine 5 gewürfelt!
Viel Spaß und fröhliches Löten!
Referenzen