ARDUINO Übung Diese Übung ermöglicht einen kurzen Einblick in die Welt der Mikrokontrollerprogrammierung. Es sollen im Folgenden die Anleitungen befolgt werden und die entsprechenden elektrotechnischen Schaltungen zusammengebaut und die Programme für die Mikrokontroller Programmierung erstellt werden. Bei Unklarheiten oder Fragen die Betreuer rufen. Das Ziel ist die Bearbeitung der ersten 5 Übungen. Inhalt: Einführung ÜBUNG 1: ÜBUNG 2: ÜBUNG 3: ÜBUNG 4: ÜBUNG 5: ÜBUNG 6: Serielle Schnittstelle Digitale Ausgänge (LED) Digitale Ausgänge (SOUND) Digitale Eingänge Analoge Eingänge Zusatzaufgabe (ARDUINO Synthesizer) Seite 1 von 11
Einführung Die Arduino Entwicklungsumgebung wird mit einem Doppelklick auf das Arduino Logo gestartet. Alle Unterlagen liegen ebenfalls auf der ICVR Homepage unter: http://www.icvr.ethz.ch/education/material/mp_uebung Das Arduino Board muss an das USB-Kabel angeschlossen werden. Nachfolgend die zentralen Bedienelemente. ARDUINO IDE (Integrated Development Environment) Bedienelemente und ARDUINO Board Kompilieren Syntaxfehler finden Maschinencode generieren Neu Neuer Sketch Speichern Seriellen Monitor öffnen Debugging / Kommunikation Stopp Stoppt die Serielle Verbindung Öffnen Examples oder eigene Sketches Board Upload Arduino Board Programmieren Seite 2 von 11
Testen des Boards Zum Testen wird das Beispielprogramm Blink auf das Board geladen. Dafür unter Open/Examples/Digital/Blink den Beispielsketch öffnen. Danach den Sketch auf das Board laden (Durch Drücken des Upload Buttons wird der Sketch kompiliert und danach auf das Board geladen). Die LED auf dem Board sollte nun ca. jede Sekunde Aufblinken. Seite 3 von 11
Wichtigste Sketch Funktionen: Syntax Serial.begin (9600) Serial.println ( Text ) Serial.println (Variable) Serial.print ( Text ) Serial.print (Variable) pinmode (pinnumber, mode) digitalwrite (pinnumber, wert) int digitalread (pinnumber) int analogread (pinnumber) delay (Milisekunden) delaymicroseconds (Mikrosekunden) Funktion Seriellen Port initialisieren Aufruf in setup() Parameter: Geschwindigkeit 9600 bits/s Variable / Text übertragen Mit oder ohne Zeilenvorschub Setzt Pin als Ausgang oder Eingang mode = INPUT / OUTPUT Setzt einen digitalen Ausgang auf Wert wert = HIGH / LOW (5V/GND) Liest einen Digitalen Eingang aus Gibt den Wert als int zurück Liest einen Analogen Eingang Gibt den Wert als int zurück Wartet bis die Zeit in Milisekunden abgelaufen ist. Wartet bis die Zeit in Microsekunden abgelaufen ist. Seite 4 von 11
C Programmiersyntax für die wichtigsten Befehle Bezeichnung Beispiel Erklärung Kommentare // Ein Kommentar Kommentierungszeichen. Text auf der gleichen Line wird nicht als Code identifiziert. Wenn dann Während Schleife if (conditiona < 500){ // Etwas machen else { // Etwas anders machen while(conditiona < 200){ // Etwas machen Falls der Ausdruck wahr ist wird der Code zwischen den Klammern ausgeführt. Als Vergleichsoperatoren können verwendet werden: x == y (x ist gleich y) x!= y (x ist nicht gleich y) x < y (x ist weniger y) x > y (x ist grosser als y) x <= y (x ist weniger oder gleich y) x >= y (x ist grösser oder gleich y) Solange der Ausdruck wahr ist, wird die Schleife ausgeführt. Vergleichsoperatoren wie oben werden verwendet. Erhöhen, Erniedrigen Boolsche Operatoren ARDUINO Konstanten Datentypen x++; // x um eins erhöhen x-- ; // x um eins reduzieren If (conditiona && conditionb){ // do something If (conditiona conditionb){ // do something If (!conditionb){ // do something digitalwrite(ledpin, HIGH); pinmode(ledpin, OUTPUT); if (conditiona == true) { // Etwas machen int i =0; float Zahl = 2.45; int myarray[10]={9,3,2,4,3,2,7,8,9,11; Inkrementieren oder Dekrementieren Boolsche Operatoren: && beides muss wahr sein entweder das eine oder das andere muss wahr sein! Das Gegenteil muss wahr sein Mögliche Konstanten: HIGH LOW INPUT OUTPUT true false Int: ganze Zahlen von -32,768 bis 32,767 Float: Fliesskomma von -3.4028235E+38 bis 3.4028235E+38 bis Arrays: Variablenliste von einem Typ mit Elementen Seite 5 von 11
Übung 1: Serielle Schnittstelle 1. Sketch Examples/Communication/TalkSerial öffnen. 2. Sketch aufs Board laden 3. Seriellen Monitor öffnen und den Output des Mikrokontrollers anschauen. Die Übertragung kann an den LEDs auf dem Board mitverfolgt werden. (TX: Transmit line active, RX: Receive line active) Seriellen Monitor öffnen Output vom Mikrokontroller Seite 6 von 11
Übung 2: Digitale Ausgänge (LED) Die Ausgänge des Mikrokontrollers können zur Steuerung von elektronischen Bauteilen verwendet werden. Hier wird nun eine LED an einen Ausgang angeschlossen. 1. Nochmals Sketch Examples/Digital/Blink öffnen. 2. Sketch aufs Board laden 3. LED und Widerstand (!!!) an das Board anschliessen. Die LED sollte gleichzeitig mit der aufgelöteten LED blinken. Aufgaben: 2.1 Verändere die Blinkfrequenz im Sketch 2.2 BlinkandSend Schreibe bei jedem Blinken Blinky auf den seriellen Port und kontrolliere das gleichzeitige Senden und Blinken über den seriellen Monitor. 2.3 BlinkTwice Passe den Sketch so an, dass die LED zwei mal kurz blinkt und danach eine Sekunde abgeschaltet ist, danach wieder zwei mal blinkt, etc. Seite 7 von 11
Übung 3: Digitale Ausgänge (Sound) Statt optischer Ausgaben über LEDs können auch akustische Ausgaben erzeugt werden. Dazu wird ein Lautsprecher an einen Ausgang des Mikrokontrollers angehängt und schnell ein und ausgeschaltet. Dies erzeugt Kräfte in der Spule des Lautsprechers. Diese Kräfte lassen die Membran im Lautsprecher hin und her schwingen und wir hören die entsprechende Frequenz der Membranschwingung als Ton. Aufgaben: 3.1 Den Blink Sketch anpassen, indem das Delay(milisekunden) durch ein DelayMicroseconds(microsekunden) ersetzt wird. Damit sind höhere Frequenzen möglich. Beim richtigen Anschliessen des Lautsprechers ertönt ein Ton. 3.2 Examples/Digital/Melody auf das Board laden. Einige Parameter verändern, uploaden und Änderungen anhören. Seite 8 von 11
Übung 4: Digitale Eingänge Digitale Eingänge können zwischen Null oder Eins, bzw. zwischen 0 und 5 Volt unterscheiden. Liegt an einem Eingang 5V so liest der entsprechende Arduino Befehl 1, liegt 0V an, liest er 0. Um nun einen Taster anzuschließen ist eine spezielle Schaltung nötig, denn für einen optimalen Betrieb an einem Eingang ist es erforderlich, dass dieser Eingang immer auf einem definierten Spannungsniveau liegt. In unserem Fall also 0V oder 5V. Es muss mit einem sogenannten Pull up bzw. Pull down Widerstand sichergestellt werden, dass immer eine definierte Spannung am Mikrokontrollereingang anliegt. Die Schaltung für einen Pull Up sieht folgendermassen aus: Aufgaben: 4.1 Examples/Digital/Button Sketch öffnen und auf das Board laden. Auf dem Board die entsprechende Schaltung für einen Pull Up Widerstand mit Taster aufbauen und Testen. Die LED auf dem Board sollte beim Drücken leuchten. 4.2 Nun den Widerstand entfernen und schauen was mit der LED passiert. 4.3 ButtonSound Den Sketch so anpassen, dass beim Drücken des Tasters ein Ton abgespielt wird und über die serielle Schnittstelle eine Meldung an den PC gesendet wird. Dazu muss natürlich auch die Soundausgabe richtig konfiguriert und der Lautsprecher an den richtigen Pin angeschlossen werden. Seite 9 von 11
Übung 5: Analoge Eingänge Bisher konnte nur zwischen 0V oder 5V (bzw. 0 oder 1) als Eingang unterschieden werden. Es gibt nun aber am Arduino Board spezielle Eingänge, die auch Zwischenwerte zwischen 0V und 5V auswerten können, zb. 1.4V oder 2.7V. Diese Spannungen werden in speziellen Analog-Digital-Wandler Schaltkreisen intern zu digitalen Werten zwischen 0 und 1024 umgesetzt. Um diese Funktion zu nutzen muss man am entsprechenden Eingang einfach sicherstellen, dass die gewünschte Spannung anliegt. Sie kann dann mit dem analogread-befehl ausgelesen werden. Potentiometer eigenen sich besnders für diese Aufgabe, da sie einen sogenannten Spannungsteiler sozusagen gratis beinhalten. Im Folgenden der Anschluss an das Arduino Board. Aufgaben: 5.1 Examples/Analog/AnalogInput Sketch öffnen und auf das Board laden. Das Potentiometer richtig anschliessen und sehen was beim Drehen passiert. 5.2 PotiAmpel Den Sketch so anpassen, dass je nach Stellung eine andere von 5 LEDs leuchtet. Natürlich müssen die 5 LEDs auch noch angeschlossen und im Sketch definiert werden. Seite 10 von 11
Übung 6: Freiwilliger Zusatz, ARDUINO Synthesizer Durch die Verwendung von Potis und Lautsprechern lässt sich schnell und einfach ein Synthesizer herstellen. Mit einer geschickten Programmierung lassen sich schräge und faszinierende Tonfolgen- und höhen erzeugen. Dies ist die Möglichkeit zum experimentieren. Hier können alle Ideen ausprobiert werden. Es gibt keine Anforderungen Links & Hilfe: ARDUINO: www.arduino.cc ARDUINO TUTORIALS: http://arduino.cc/en/tutorial/homepage LADYADA TUTORIALS: http://www.ladyada.net/learn/arduino/index.html OUTPUT Projekte: http://www.arduino.cc/playground/main/interfacingwithhardware#output INPUT Projekte: http://www.arduino.cc/playground/main/interfacingwithhardware#input INFOS zu Physical Computing: http://itp.nyu.edu/physcomp/tutorials/tutorials Seite 11 von 11