Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino...

11
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]

Transcript of Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino...

Page 1: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 2: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 3: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 4: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 5: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 6: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 7: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 8: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 9: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 10: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]

Page 11: Übung 1: Auf Umgebung reagieren - icvr.ethz.ch · PDF fileComputer und Hardware: Arduino Übung Testen des Boards Zum Testen wird das Beispielprogramm „Blink“ auf das Board geladen.

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]