Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino...
-
Upload
truongminh -
Category
Documents
-
view
215 -
download
1
Transcript of Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino...
Computer und Hardware: Arduino Übung
ARDUINO Übung Diese Übung ermöglicht einen kurzen Einblick in die Welt der Mikrokontroller-programmierung. 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: Serielle Schnittstelle ÜBUNG 2: Digitale Ausgänge (LED) ÜBUNG 3: Digitale Ausgänge (SOUND) ÜBUNG 4: Digitale Eingänge ÜBUNG 5: Analoge Eingänge ÜBUNG 6: Zusatzaufgabe (ARDUINO Synthesizer)
Seite 1 von 11 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
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
Stopp Stoppt die Serielle Verbindung
Neu Neuer Sketch
Öffnen Examples oder eigene Sketches
Speichern
Board Upload Arduino Board Programmieren
Seriellen Monitor öffnen Debugging / Kommunikation
Seite 2 von 11 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
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 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
Wichtigste Sketch Funktionen:
Syntax Funktion
Serial.begin (9600) Seriellen Port initialisieren Aufruf in setup() Parameter: Geschwindigkeit 9600 bits/s
Serial.println („Text“) Serial.println (Variable) Serial.print („Text“) Serial.print (Variable)
Variable / Text übertragen Mit oder ohne Zeilenvorschub
pinMode (pinnumber, mode) Setzt Pin als Ausgang oder Eingang mode = INPUT / OUTPUT
digitalWrite (pinnumber, wert) Setzt einen digitalen Ausgang auf Wert wert = HIGH / LOW (5V/GND)
int digitalRead (pinnumber) Liest einen Digitalen Eingang aus Gibt den Wert als int zurück
int analogRead (pinnumber) Liest einen Analogen Eingang Gibt den Wert als int zurück
delay (Milisekunden) Wartet bis die Zeit in Milisekunden abgelaufen ist.
delayMicroseconds (Mikrosekunden) Wartet bis die Zeit in Microsekunden abgelaufen ist.
Seite 4 von 11 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
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
if (conditionA < 500){ // Etwas machen } else { // Etwas anders 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)
Während Schleife
while(conditionA < 200){ // Etwas machen }
Solange der Ausdruck wahr ist, wird die Schleife ausgeführt. Vergleichsoperatoren wie oben werden verwendet.
Erhöhen, Erniedrigen x++; // x um eins erhöhen x-- ; // x um eins reduzieren Inkrementieren oder Dekrementieren
Boolsche Operatoren
If (conditionA && conditionB){ // do something } If (conditionA || conditionB){ // do something } If (!conditionB){ // do something }
Boolsche Operatoren: && beides muss wahr sein || entweder das eine oder das andere muss wahr sein ! Das Gegenteil muss wahr sein
ARDUINO Konstanten
digitalWrite(ledPin, HIGH); pinMode(ledPin, OUTPUT); if (conditionA == true) { // Etwas machen }
Mögliche Konstanten: HIGH LOW INPUT OUTPUT true false
Datentypen
int i =0; float Zahl = 2.45; int myArray[10]={9,3,2,4,3,2,7,8,9,11};
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 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
Ü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 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
Ü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 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
Ü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 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
Ü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 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
Ü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 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]
Computer und Hardware: Arduino Übung
Ü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.ccARDUINO TUTORIALS: http://arduino.cc/en/Tutorial/HomePageLADYADA TUTORIALS: http://www.ladyada.net/learn/arduino/index.html OUTPUT Projekte: http://www.arduino.cc/playground/Main/InterfacingWithHardware#OutputINPUT Projekte: http://www.arduino.cc/playground/Main/InterfacingWithHardware#Input INFOS zu Physical Computing: http://itp.nyu.edu/physcomp/Tutorials/Tutorials
Seite 11 von 11 ICVR: www.icvr.ethz.ch Ramon Hofer: [email protected] Bastian Migge: [email protected] Andreas Kunz: [email protected]