Hier mal die ersten Krabbel-Schritte mit einem Arduino Uno, vielleicht interessiert es ja den einen oder anderen.
Microcontroller hört sich ja immer ach so schrecklich schwierig an, deswegen hier mal ein funktionierendes mini howto..
Bei ebay (und auch anderswo) gibt es preiswert die Arduino Microcontroller boards. Kosta quanta für ein einsatzfertiges Arduino Uno Board mit ATmega328 (16MHz Takt) + zweizeiliges LCD 16x2 + USB-Kabel etwa 26,- ; verschiedene Anbieter - einfach mal nach Arduino googlen.
Also mal gekauft so ein Spielzeug, inklusive 16x2 Text-LCD 'LCD shield', welches einfach auf die Controller Platine gesteckt wird. Strom gibts vom USB oder separat von Steckernetzteil je nach Belieben, der Lötkolben darf für die ersten Schritte aus bleiben. Alles ist out-of-the-box einsatzbereit.
Ran damit an den PC, ab in den USB Port. Die Software ist open-source: http://www.arduino.cc/ , ebenso sind Schaltpläne und Layout der Leiterplatte open-source. Kein Installer, einfach ein zip. Also ein neuer Ordner in C:\Programme angelegt und rein damit. Die Software gibts frei für Linux, MAC und Windows, freie Wahl auch hier. Windows meldet neue Hardware gefunden (für jedes OS gibts Tips auf der arduino Seite..), kurz den Hardware Assistenten auf den Ordner 'driver' im Arduino Software Ordner verwiesen und siehe da ein Arduino ist als neuer virtueller COM-Port betriebsbereit.
Ebenso schön, die Software ist denkbar einfach:
- Programmierung in C, kein Assembler etc.
- perfekte Dokumentation
- der compiler ist der gcc, wer den kennt hat es umso leichter die Fehlermeldungen zu lesen, falls etwas nicht auf Anhieb klappt.
Okay soweit, erst mal die grundlegenden Einstellungen vornehmen. Im Menü TOOLS->SERIELLER PORT ein Häkchen beim neuen COM Port machen,
dann bei TOOLS->BOARD den Arduino Uno markieren. Jetzt noch bei TOOLS->PROGRAMMER 'Arduino as ISP' markieren und es kann losgehn.
Zeit für ein 'hello world' oder ähnliches auf dem Display. Falls jemand probieren möchte, hier als kommentierte copy&&paste Vorlage:
Der Button oben unter dem Menü mit dem Häkchen erzeugt ein Hex file aus dem C code, die box unten in der Arduino Software zeigt die Compiler Meldungen. Kein Fehler? Gut.
Der Button rechts daneben mit dem Pfeil nach rechts lädt die Firmware per USB zum Arduino. Draufgeklickt, 4sec gewartet und siehe da, das LCD begrüßt mit einer Textzeile und zählt in der zweiten Zeile die Sekunde hoch.
Klingt doch gar nicht so schwer, oder? ;-)
Microcontroller hört sich ja immer ach so schrecklich schwierig an, deswegen hier mal ein funktionierendes mini howto..
Bei ebay (und auch anderswo) gibt es preiswert die Arduino Microcontroller boards. Kosta quanta für ein einsatzfertiges Arduino Uno Board mit ATmega328 (16MHz Takt) + zweizeiliges LCD 16x2 + USB-Kabel etwa 26,- ; verschiedene Anbieter - einfach mal nach Arduino googlen.
Also mal gekauft so ein Spielzeug, inklusive 16x2 Text-LCD 'LCD shield', welches einfach auf die Controller Platine gesteckt wird. Strom gibts vom USB oder separat von Steckernetzteil je nach Belieben, der Lötkolben darf für die ersten Schritte aus bleiben. Alles ist out-of-the-box einsatzbereit.
Ran damit an den PC, ab in den USB Port. Die Software ist open-source: http://www.arduino.cc/ , ebenso sind Schaltpläne und Layout der Leiterplatte open-source. Kein Installer, einfach ein zip. Also ein neuer Ordner in C:\Programme angelegt und rein damit. Die Software gibts frei für Linux, MAC und Windows, freie Wahl auch hier. Windows meldet neue Hardware gefunden (für jedes OS gibts Tips auf der arduino Seite..), kurz den Hardware Assistenten auf den Ordner 'driver' im Arduino Software Ordner verwiesen und siehe da ein Arduino ist als neuer virtueller COM-Port betriebsbereit.
Ebenso schön, die Software ist denkbar einfach:
- Programmierung in C, kein Assembler etc.
- perfekte Dokumentation
- der compiler ist der gcc, wer den kennt hat es umso leichter die Fehlermeldungen zu lesen, falls etwas nicht auf Anhieb klappt.
Okay soweit, erst mal die grundlegenden Einstellungen vornehmen. Im Menü TOOLS->SERIELLER PORT ein Häkchen beim neuen COM Port machen,
dann bei TOOLS->BOARD den Arduino Uno markieren. Jetzt noch bei TOOLS->PROGRAMMER 'Arduino as ISP' markieren und es kann losgehn.
Zeit für ein 'hello world' oder ähnliches auf dem Display. Falls jemand probieren möchte, hier als kommentierte copy&&paste Vorlage:
Code:
/* die Arduino IDE hat bereits Unterstützung für Text-LCDs dabei.
* Die passende Library wird per '#include <LiquidCrystal.h>' eingebunden,
* das ist alles, was an Arbeit nötig ist.
*/
#include <LiquidCrystal.h>
/* SaintSmart LCD shield mit folgender Belegung. (Für andre LCD's einfach PINs anpassen.)
*
* RESET = Arduino Uno Board Pin 8
* ENABLE = Arduino Uno Board Pin 9
* R/W = GND
* D4 = Arduino Uno Board Pin D4
* D5 = Arduino Uno Board Pin D5
* D6 = Arduino Uno Board Pin D6
* D7 = Arduino Uno Board Pin D7
* Hinweis: alle Pins beziehen sich auf das Arduino Uno Board, nicht auf die Pins des ATmega328;
* Der auf GND liegende R/W Pin wird bei der Initialisierung des LCD weg gelassen.
*/
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
/* In der Arduino SW gibt es zwei Standard Routinen, 'setup()' wird einmalig nach dem Laden der FW
* ausgeführt, danach wird periodisch 'loop()' ausgeführt, solange der MC Strom hat.
*/
void setup() {
/* Initialisiere Display als Display mit 16Spalten und zwei Zeilen. */
lcd.begin(16, 2);
/* Schreibe Text an aktuelle Cursor Position; also hier Zeile 0 Spalte 0. */
lcd.print("Moin wirbel!");
}
/* die Arbeitsschleife des controllers. */
void loop() {
/* Setze den Cursor auf den Beginn (Spalte 0) der zweiten Zeile (Zeile 1).
* Hinweis: Text wird ab Cursorposition geschrieben.
*/
lcd.setCursor(0, 1);
/* gibt in zweiter Zeile die Anzahl der Sekunden seit dem Laden der Firmware aus. */
lcd.print(millis()/1000);
}
Der Button oben unter dem Menü mit dem Häkchen erzeugt ein Hex file aus dem C code, die box unten in der Arduino Software zeigt die Compiler Meldungen. Kein Fehler? Gut.
Der Button rechts daneben mit dem Pfeil nach rechts lädt die Firmware per USB zum Arduino. Draufgeklickt, 4sec gewartet und siehe da, das LCD begrüßt mit einer Textzeile und zählt in der zweiten Zeile die Sekunde hoch.
Klingt doch gar nicht so schwer, oder? ;-)