Sie sind auf Seite 1von 11

Computer und Hardware: Arduino bung

ARDUINO bung

Diese bung ermglicht 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 fr die Mikrokontroller Programmierung erstellt werden.

Bei Unklarheiten oder Fragen die Betreuer rufen.

Das Ziel ist die Bearbeitung der ersten 5 bungen.

Inhalt:
Einfhrung

BUNG 1: Serielle Schnittstelle

BUNG 2: Digitale Ausgnge (LED)

BUNG 3: Digitale Ausgnge (SOUND)

BUNG 4: Digitale Eingnge

BUNG 5: Analoge Eingnge

BUNG 6: Zusatzaufgabe (ARDUINO Synthesizer)

Seite 1 von 11
ICVR: www.icvr.ethz.ch
Ramon Hofer: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

Einfhrung
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 Neu Speichern Seriellen Monitor


Syntaxfehler finden Neuer Sketch ffnen
Maschinencode Debugging /
generieren Kommunikation

Stopp ffnen Board Upload


Stoppt die Examples oder Arduino Board
Serielle eigene Programmieren
Verbindung Sketches

Seite 2 von 11
ICVR: www.icvr.ethz.ch
Ramon Hofer: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

Testen des Boards


Zum Testen wird das Beispielprogramm Blink auf das Board geladen. Dafr unter
Open/Examples/Digital/Blink den Beispielsketch ffnen.

Danach den Sketch auf das Board laden (Durch Drcken 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: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

Wichtigste Sketch Funktionen:

Syntax Funktion

Seriellen Port initialisieren


Serial.begin (9600) Aufruf in setup()
Parameter: Geschwindigkeit 9600 bits/s
Serial.println (Text)
Serial.println (Variable) Variable / Text bertragen
Serial.print (Text) Mit oder ohne Zeilenvorschub
Serial.print (Variable)
Setzt Pin als Ausgang oder Eingang
pinMode (pinnumber, mode)
mode = INPUT / OUTPUT
Setzt einen digitalen Ausgang auf Wert
digitalWrite (pinnumber, wert)
wert = HIGH / LOW (5V/GND)
Liest einen Digitalen Eingang aus
int digitalRead (pinnumber)
Gibt den Wert als int zurck
Liest einen Analogen Eingang
int analogRead (pinnumber)
Gibt den Wert als int zurck

delay (Milisekunden) Wartet bis die Zeit in Milisekunden abgelaufen ist.

delayMicroseconds
Wartet bis die Zeit in Microsekunden abgelaufen ist.
(Mikrosekunden)

Seite 4 von 11
ICVR: www.icvr.ethz.ch
Ramon Hofer: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

C Programmiersyntax fr die wichtigsten Befehle

Bezeichnung Beispiel Erklrung

Kommentierungszeichen. Text auf der


Kommentare // Ein Kommentar
gleichen Line wird nicht als Code identifiziert.

Falls der Ausdruck wahr ist wird der Code


zwischen den Klammern ausgefhrt.
Als Vergleichsoperatoren knnen verwendet
if (conditionA < 500){
werden:
// Etwas machen
}
x == y (x ist gleich y)
Wenn dann
x != y (x ist nicht gleich y)
else {
x < y (x ist weniger y)
// Etwas anders machen
x > y (x ist grosser als y)
}
x <= y (x ist weniger oder gleich y)
x >= y (x ist grsser oder gleich y)

while(conditionA < 200){


Solange der Ausdruck wahr ist, wird die
// Etwas machen
Whrend Schleife Schleife ausgefhrt. Vergleichsoperatoren wie
}
oben werden verwendet.

x++; // x um eins erhhen


Erhhen, Erniedrigen Inkrementieren oder Dekrementieren
x-- ; // x um eins reduzieren

If (conditionA && conditionB){


// do something
Boolsche Operatoren:
}
&& beides muss wahr sein
If (conditionA || conditionB){
Boolsche Operatoren // do something
|| entweder das eine oder das andere muss
}
wahr sein
If (!conditionB){
! Das Gegenteil muss wahr sein
// do something
}
Mgliche Konstanten:
digitalWrite(ledPin, HIGH);
HIGH
LOW
pinMode(ledPin, OUTPUT);
ARDUINO Konstanten
INPUT
if (conditionA == true) {
OUTPUT
// Etwas machen
}
true
false

Int: ganze Zahlen von -32,768 bis 32,767


int i =0; Float: Fliesskomma von -3.4028235E+38 bis
float Zahl = 2.45; 3.4028235E+38 bis
Datentypen
int myArray[10]={9,3,2,4,3,2,7,8,9,11}; Arrays: Variablenliste von einem Typ mit
Elementen

Seite 5 von 11
ICVR: www.icvr.ethz.ch
Ramon Hofer: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
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: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

bung 2: Digitale Ausgnge (LED)

Die Ausgnge des Mikrokontrollers knnen 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 aufgelteten LED blinken.

Aufgaben:
2.1 Verndere 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: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

bung 3: Digitale Ausgnge (Sound)

Statt optischer Ausgaben ber LEDs knnen auch akustische Ausgaben erzeugt
werden. Dazu wird ein Lautsprecher an einen Ausgang des Mikrokontrollers angehngt
und schnell ein und ausgeschaltet. Dies erzeugt Krfte in der Spule des Lautsprechers.
Diese Krfte lassen die Membran im Lautsprecher hin und her schwingen und wir
hren 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 hhere
Frequenzen mglich. Beim richtigen Anschliessen des Lautsprechers ertnt ein
Ton.

3.2 Examples/Digital/Melody auf das Board laden. Einige Parameter verndern,


uploaden und nderungen anhren.

Seite 8 von 11
ICVR: www.icvr.ethz.ch
Ramon Hofer: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

bung 4: Digitale Eingnge

Digitale Eingnge knnen 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 anzuschlieen ist eine spezielle Schaltung
ntig, denn fr 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 fr 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 fr einen Pull Up Widerstand mit Taster
aufbauen und Testen. Die LED auf dem Board sollte beim Drcken leuchten.

4.2 Nun den Widerstand entfernen und schauen was mit der LED passiert.

4.3 ButtonSound
Den Sketch so anpassen, dass beim Drcken des Tasters ein Ton abgespielt wird
und ber die serielle Schnittstelle eine Meldung an den PC gesendet wird. Dazu
muss natrlich 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: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

bung 5: Analoge Eingnge

Bisher konnte nur zwischen 0V oder 5V (bzw. 0 oder 1) als Eingang unterschieden
werden. Es gibt nun aber am Arduino Board spezielle Eingnge, die auch
Zwischenwerte zwischen 0V und 5V auswerten knnen, 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 gewnschte
Spannung anliegt. Sie kann dann mit dem analogRead-Befehl ausgelesen werden.
Potentiometer eigenen sich besnders fr 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.
Natrlich mssen die 5 LEDs auch noch angeschlossen und im Sketch definiert
werden.

Seite 10 von 11
ICVR: www.icvr.ethz.ch
Ramon Hofer: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch
Computer und Hardware: Arduino bung

bung 6: Freiwilliger Zusatz, ARDUINO Synthesizer

Durch die Verwendung von Potis und Lautsprechern lsst sich schnell und einfach ein
Synthesizer herstellen. Mit einer geschickten Programmierung lassen sich schrge und
faszinierende Tonfolgen- und hhen erzeugen. Dies ist die Mglichkeit zum
experimentieren. Hier knnen 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
ICVR: www.icvr.ethz.ch
Ramon Hofer: hofer@inspire.ethz.ch
Bastian Migge: migge@inspire.ethz.ch
Andreas Kunz: kunz@inspire.ethz.ch