J. Gräber 2013. Seite -1- Seite -2-



Ähnliche Dokumente
file://c:\documents and Settings\kfzhans.BUERO1\Local Settings\Temp\ e...

Zeichen bei Zahlen entschlüsseln

Physik-Übung * Jahrgangsstufe 9 * Der Transistor Blatt 1

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Primzahlen und RSA-Verschlüsselung

Sensorkit X36. KY-001 Temperatur Sensor Modul. KY-002 Erschütterungs-Schalter Modul. KY-003 Hall Magnetfeld-Sensor Modul. KY-004 Taster-Modul

Einführung in das Programmieren in der Sekundarstufe 1. mit einem Arduino und der Physical-Computing-Plattform

Projekt 2HEA 2005/06 Formelzettel Elektrotechnik

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Das Experimentierbrettchen (Aufbau, Messpunkte): A B + 9V

ARDUINO Übung. Inhalt:

Erste Gehversuche mit ARDUINO #2 (DL6OAA) Verwendete Unterlagen:

ELEXBO A-Car-Engineering

Highspeedaufnahmen mit dem Arduino Uno Board

Registrierung am Elterninformationssysytem: ClaXss Infoline

Übungen zu C++ Kapitel 1

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Programmierkurs Java

Daten verarbeiten. Binärzahlen

Mediator 9 - Lernprogramm

Um überhaupt produktiv arbeiten zu können, sind eine Reihe grundlegender Vorbereitungen notwendig:

1 Vom Problem zum Programm

Professionelle Seminare im Bereich MS-Office

Comic Life 2.x. Fortbildung zum Mediencurriculum

Informatik 1 Tutorial

2. Negative Dualzahlen darstellen

ACDSee 2009 Tutorials: Rote-Augen-Korrektur

Bilder zum Upload verkleinern

Kurzeinführung LABTALK

Kara-Programmierung AUFGABENSTELLUNG LERNPARCOURS. Abb. 1: Programmfenster. Welt neu erstellen; öffnen; erneut öffnen; speichern; speichern unter

Fachhochschule Bielefeld Fachbereich Elektrotechnik. Versuchsbericht für das elektronische Praktikum. Praktikum Nr. 2. Thema: Widerstände und Dioden

Elektrischer Widerstand

Mehrere PDF-Dokumente zu einem zusammenfügen

Wir arbeiten mit Zufallszahlen

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

icloud nicht neu, aber doch irgendwie anders

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Facharbeit Informatik. Thema:

TP 6: Windenergie. 1 Versuchsaufbau. TP 6: Windenergie -TP 6.1- Zweck der Versuche:...

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Urlaubsregel in David

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Computeria Solothurn

Geneboost Best.- Nr Aufbau Der Stromverstärker ist in ein Isoliergehäuse eingebaut. Er wird vom Netz (230 V/50 Hz, ohne Erdung) gespeist.

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Aufgabe 1 Berechne den Gesamtwiderstand dieses einfachen Netzwerkes. Lösung Innerhalb dieser Schaltung sind alle Widerstände in Reihe geschaltet.

Excel Funktionen durch eigene Funktionen erweitern.

Anleitung über den Umgang mit Schildern

Die Größe von Flächen vergleichen

Lernwerkstatt 9 privat- Freischaltung

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Entladen und Aufladen eines Kondensators über einen ohmschen Widerstand

Einführung in die C++ Programmierung für Ingenieure

Wir übertragen Daten mit Licht

Datensicherung. Beschreibung der Datensicherung

Wie halte ich Ordnung auf meiner Festplatte?

Was meinen die Leute eigentlich mit: Grexit?

Praktikum Nr. 3. Fachhochschule Bielefeld Fachbereich Elektrotechnik. Versuchsbericht für das elektronische Praktikum

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Projekt Nr. 15: Einen elektronischen Würfel erstellen

Schulberichtssystem. Inhaltsverzeichnis

Computeria Rorschach Mit Excel Diagramme erstellen

Aufgaben Wechselstromwiderstände

Algorithmische Kryptographie

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

2. Word-Dokumente verwalten

Installationsanleitung CLX.PayMaker Home

3. LINEARE GLEICHUNGSSYSTEME

Erstellen von x-y-diagrammen in OpenOffice.calc

C:\WINNT\System32 ist der Pfad der zur Datei calc.exe führt. Diese Datei enthält das Rechner - Programm. Klicke jetzt auf Abbrechen.

Gimp Kurzanleitung. Offizielle Gimp Seite:

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

3. Verpackungskünstler. Berechnungen am Quader, Umgang mit Termen, räumliche Vorstellung

Umwandelung einer Physikalischen Größe in eine Elektrische

Computerarithmetik ( )

Text-Zahlen-Formatieren

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Übung 1. Explorer. Paint. Paint. Explorer

Erste Schritte und Bedienungshinweise mit chiptan (ausführliche Anleitung)

Physik & Musik. Stimmgabeln. 1 Auftrag

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Informatik I Tutorial

Übungen Programmieren 1 Felix Rohrer. Übungen

Berechnungen in Access Teil I

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Repetitionsaufgaben Wurzelgleichungen

Serien- mit oder ohne Anhang

Dossier: Rechnungen und Lieferscheine in Word

Einführung in. Logische Schaltungen

1 Dein TI nspire CAS kann fast alles

Installationsanleitung CLX.PayMaker Office

Transkript:

Arduino J. Gräber 2013 Seite -1- Seite -2-

Inhaltsverzeichnis Tabellarischer Überblick Bauelemente (mit Schaltzeichen) und Befehle Kapitel Nr. 1 & Einführung LED Neue Bauelemente 2 Wechselschalter Schaltzeichen Neue Befehle pinmode digitalwrite delay digitalread if (else) vergleichende Operatoren int Kapitel Nr. Neue Bauelemente Schaltzeichen Neue Befehle 10 Serial.read 11 Lautsprecher tone 12 Reflexoptokoppler 3 Taster 4 Potentiometer 5 LDR Fotowiderstand analogread Rechenoperatoren Serial.begin Serial.print / Serial.println 6 analogwrite 13 Servo 14 Temperatursensor LM35 Servo-Befehle map 7 for 8 L293D Motosteuer IC 9 Unterprogramme und definierte Funktionen Seite -3- Seite -4-

Vorbemerkung Zum Aufbau dieser Anleitung: Installation Auswahl des Arduino-Boards Nach einer kurzen Vorstellung der Hard- und Software werden die neuen elektronischen Bauelemente und Befehle schrittweise eingeführt. So besteht der praktische Teil immer aus dem Aufbau: o Neue Bauelemente o Neue Befehle o Aufgabe o weitere Aufgaben Das Erlernen der Programmiersprache stützt sich dabei auf die zahlreichen Beispielprogramme (Sketches), die bereits hinterlegt sind. Danach soll aktiv mit den neuen Befehlen umgegangen werden, um weitere Aufgaben zu lösen. Dabei werden früher erlernte Befehle immer wieder aufgegriffen. Nach diesem Kurs sollten die Schülerinnen und Schüler in der Lage sein, selbständig ein Projekt mit dem Arduino durchzuführen. Auswahl des Seriellen Ports: Links Arduino Homepage: http://www.arduino.cc/ Tutorials: http://www.kriwanek.de/arduino/wie-beginnen.html http://www.arduino-tutorial.de/einfuhrung/ http://popovic.info/html/arduino/arduinouno_1.html http://www.netzmafia.de/skripten/hardware/arduino/arduino_programmierhandbuch. pdf (Arduino Handbuch) Video-Tutorials: http://www.arduino-tutorial.de/category/videoworkshop/ http://mr.intermediadesign.de/tag/arduino/ http://maxtechtv.de/category/arduino/beginner/ Normalerweise wird der Arduino über den Seriellen Port mit der höchsten Nummer verbunden. Ansonsten bitte im Gerätemanager (Systemsteuerung) nachschauen Projekte: http://www.maxpie.de/projekt_arduino.htm Seite -5- Seite -6-

Einführung Die Hardware 1 Die Software Sketch überprüfen Sketch upload Sketch neu Sketch öffnen Sketch speichern Das Grundprinzip eines Mikrocontrollers Beispielprogramme (Sketches) Um Leuchtdioden leuchten zu lassen oder Motoren zu steuern, erzeugt ein Mikrocontroller an seinen Pins (Anschlüssen) verschiedene Spannungen. Digitale Pins: Sie haben entweder den Zustand HIGH oder LOW. Es liegen dann entweder 0V oder 5V an. Analoge Pins: Ihr Spannungswert kann zwischen 0V und 5V liegen. Über die Pins können auch Spannungswerte eingelesen werden. Damit kann man z.b. überprüfen, ob ein Schalter geöffnet ist oder geschlossen, ob viel Licht auf eine Photozelle fällt oder wenig. Auch hier gibt es die Unterscheidung zwischen digitalen Pins (Entweder HIGH oder LOW) und den analogen Pins (Spannungswerte zwischen 0V und 5V). Seite -7- Seite -8-

Einführung Ein Programm wird allgemein mit Sketch bezeichnet. Alle Sketches haben den gleichen Aufbau: Dieser Programmteil wird einmal durchlaufen! (Setzen von Pinmode oder Start der seriellen Kommunikation) 2 Neue Befehle: int led = 13; Die Variable led wird mit dem (Integer-) Wert 13 belegt. pinmode(led, OUTPUT) Da die Variable led mit dem Wert 13 belegt wurde, wird PIN13 als OUTPUT deklariert. D.h. er kann die Werte HIGH (5V) und LOW (0V) annehmen und damit eine Leuchtdiode ansteuern. digitalwrite(led, HIGH) PIN13 wird HIGH (5V) gesetzt. Beispielprogramm für eine blinkende LED: Dieser Programmteil wird unendlich oft durchlaufen! Hier befindet sich das eigentliche Programm, der so genannte Programmcode. delay(1000) Bis zur Verarbeitung des nächsten Befehls wartet der Arduino 1000 ms. Info Datentypen: byte Byte speichert einen 8-bit numerischen, ganzzahligen Wert ohne Dezimalkomma. Der Wert kann zwischen 0 und 255 sein. byte y = 180; // deklariert y als einen 'byte' Datentyp int Integer ist der meist verwendete Datentyp für die Speicherung von ganzzahligen Werten ohne Dezimalkomma. Sein Wert hat 16 Bit und reicht von -32.767 bis 32.768. int x = 1500; // deklariert y als einen 'integer' Datentyp Bemerkung: Integer Variablen werden bei Überschreiten der Limits 'überrollen'. Zum Beispiel wenn x = 32767 und eine Anweisung addiert 1 zu x, x = x + 1 oder x++, wird 'x' dabei 'überrollen' und den Wert -32,768 annehmen. long Datentyp für lange Integer mit erweiterer Größe, ohne Dezimalkomma, gespeichert in einem 32-bit Wert in einem Spektrum von -2,147,483,648 bis 2,147,483,647. long z = 9000; // deklariert z als einen 'long' Datentyp float Ein Datentyp für Fliesskomma Werte oder Nummern mit Nachkommastelle. Fliesskomma Nummern haben eine bessere Auflösung als Integer und werden als 32-bit Wert mit einem Spektrum von -3.4028235E+38 bis 3.4028235E+38. float pi = 3.14; // deklariert pi als einen 'float' Datentyp Seite -9- Seite -10-

Neue Bauelemente: LED, Steckplatine Neue Befehle: - Ziel: Eine bzw. mehrer LED zum Leuchten bringen Aufgabe A1.1: Schließe eine rote LED am Pin 13 Achte auf die Polung (siehe Info) Öffne im Ordner Sketches den Sketch A011_Blink Übertrage den Sketch auf den Arduino. Beobachte die eingebaute LED. 1 Aufgabe A1.2 : Ändere den Sketch A011_Blink so ab, dass die LED 3 Sekunden lang leuchtet und 1 Sekunde lang dunkel bleibt. Speichere den neuen Sketch im Ordner Sketches unter A012_Blink2_(xx) ab. xx = Dein Name. Aufgabe A1.3 : Baue eine Schaltung auf, bei der abwechselnd eine rote und gelbe LED blinkt. Verwende dazu eine Steckplatine. Vorwiderstände nicht vergessen! Ändere den Sketch A011_Blink entsprechend ab. Speichere den neuen Sketch unter A013_Blink_2LED_(xx) ab. Steckbeispiel für 2 LEDs: INFO: LED Auf dem Arduinoboard befindet sich an Pin 13 eine eingebaute LED. Man hätte auf eine zusätzliche LED wie in der Aufgabe A1.1 verzichten können. Wird an einem anderen Pin eine LED angeschlossen muss ein Vorwiderstand von 220 Ohm verwendet werden. (Dieser ist bei Pin 13 bereits mit eingebaut) Info: Steckplatine Die seitlichen Kontakte (blau bzw. rot umrandet) sind in der Regel über die ganze Länge leitend miteinander verbunden. Ansonsten sind die 5er-Reihen (schwarz umrandet) leitend miteinander verbunden. Aufgabe A1.4: Baue eine Ampelschaltung aus einer roten, gelben und grünen LED auf. Schreibe den Sketch. Übertrage das Programm. Speichere den Sketch unter dem Namen A014_Ampel_(xx) ab. Seite -11- Seite -12-

2 Neue Bauelemente: Wechselschalter Neue Befehle: const digitalread if (else) Ziel: Eine LED mit einem Wechselschalter an- und ausschalten. Aufgabe A2.1: Baue die Schaltung wie in der Abbildung auf. Öffne den Sketch A021_LED_mit_Schalter. Starte den Sketch. Verändere die Schalterstellung und beobachte die LED. Neue Befehle: const Der Wert dieser Variablen bleibt konstant und kann auch später nicht verändert werden. INFO: Wechselschalter Bei dem Wechselschalter in dieser Abbildung liegen die beiden äußeren Kontakte auf 5V bzw. 0V. Je nach Schalterstellung ist der Mittenkontakt mit einem der beiden äußeren Kontakte verbunden. Damit ist der Zustand von Pin10 eindeutig festgelegt. Es liegen entweder 5V (HIGH) oder 0V (LOW) an. digitalread(buttonpin) Liest den Zustand (HIGH oder LOW) eines Pins aus. (Hier Pin 10) if (else) Mit diesem Befehl wird abgefragt, ob ein Aussage wahr ist. In diesem Fall, ob ein Pin im Zustand HIGH ist. Ist die Aussage nicht wahr geht das Programm zu dem Teil else weiter. Vergleichende Operatoren Bemerkung: Nicht alle Schalter sind so aufgebaut, dass der Mittenkontakt auch in der Mitte ist. Seite -13- Pin 0V 5V Seite -14-

2 Aufgabe A2.2: Schließe eine weitere LED an. Ändere den Sketch so ab, dass bei gedrücktem Schalter LED1 leuchtet und bei geöffnetem Schalter LED2 leuchtet. Speichere den Sketch unter dem Namen A022_2LED_mit_Schalter_(xx). Tipp: Übersicht beim Programmieren a) Kommentare (//) und Block Kommentare (/*... */) Kommentare sind Textbereiche die vom Programm ignoriert werden. Sie werden für längere Beschreibungen oder Kommentare verwendet und helfen anderen Autoren Programmteile zu verstehen. Einzeilige Kommentare fangen mit // an. Blockkommentare fangen mit /* an und enden mit */ und umfassen mehrere Zeilen. b) Einrücken Durch Einrücken in den Befehlszeilen wird der Sketch übersichtlicher gestaltet. So wird z.b. jede Zeile die zu void setup gehört um 2 Zeichen eingerückt. Seite -15- Seite -16-

Neue Bauelemente: Taster Neue Befehle: - Ziel: Eine LED soll leuchten, wenn ein (einfacher) Taster gedrückt wird. Aufgabe A3.1: Baue die Schaltung wie in der Abbildung auf. Lies den Abschnitt INFO: Der Spannungsteiler durch. Öffne und starte den Sketch A031_LED_mit_Taster. (Dieser Sketch entspricht dem Sketch A02_LED_mit_Schalter ) 3 Interessanter wird es, wenn man die beiden Verbindungen vom Pin zu 5V bzw. vom Pin zu 0V jeweils mit Widerständen erzeugt (Siehe Abbildung Seite -13-). So entsteht kein Kurzschluss, da nur ein schwacher Strom durch die beiden Widerstände fließt. Diese Schaltung bezeichnet man als Spannungsteiler mit einem Mittelkontakt. Der Pull-Up-Widerstand R up und der Pull-Down-Widerstand R down teilen sich die Gesamtspannung entsprechend ihrer Anteile am Gesamtwiderstand in die Spannung Uup und Udown auf. Das Potential am Port des Mikrocontrollers entspricht U down und lässt sich aus den Widerstandswerten und der Gesamtspannung berechnen: Mit Hilfe eines Spannungsteilers kann man damit auch normale Taster oder Schalter an den Eingängen eines Mikrocontrollers einsetzen. Setzt als Pull- Up-Widerstand einen Widerstand von 10 kω ein, an Stelle des Pull-Down- Widerstands einen Schalter bzw. Taster. Er hat in geöffnetem Zustand einen Widerstand von nahezu unendlich (über 100 MΩ), im geschlossenen Zustand einen Widerstand von unter 1Ω. Im geschlossenen Zustand liegen damit am Pin 0V an (LOW), im geöffneten Zustand 5V (HIGH). INFO: Der Spannungsteiler Aufgabe A3.2: Berechne das Potential am Mittelkontakt (also U down ) für R up =10 kω und R down = 10 kω. Berechne das Potential am Mittelkontakt (also U down ) für R up =8 kω und R down = 2 kω. Berechne das Potential am Mittelkontakt (also U down ) für R up =10 kω und für den Fall dass der Taster geöffnet bzw. geschlossen ist. Was geschieht, wenn man einen Eingangspin sowohl an ein Potential von 5V als auch an ein Potential von 0V anschließt? Wird der Pin dann HIGH oder LOW sein? Wenn man einen Pin ganz direkt sowohl mit 5V als auch mit 0V verbindet, erzeugt man einen Kurzschluss. Das ist keine gute Idee: Der Spannungsregler wird überhitzen und sich hoffentlich rechtzeitig abschalten, bevor etwas kaputt geht. Aufgabe A3.3: Vertausche den Taster und den 10 kω-widerstand (s. Abb.) Wie ändert sich das Verhalten der Schaltung? Seite -17- Seite -18-

4 Neue Bauelemente: Potentiometer Neue Befehle: analogread Serial.begin(9600) Serial.print / Serial.println Rechenoperatoren Ziel: Ein Potentiometer wird an einem analogen Eingang angeschlossen. Der anliegende Wert wird ausgelesen und über die serielle Verbindung an den Computer zurückgesendet. Bemerkung: Der Arduino muss in diesem Fall mit dem Computer verbunden bleiben. Alternativ kann später ein LCD-Display eingesetzt werden. Aufgabe A4.1: Baue die Schaltung wie in der Abbildung auf Öffne den Sketch A041_Poti. Starte das Programm. Öffne den seriellen Monitor (STRG+UMSCHALT+M). Verändere die Stellung des Potentiometers und beobachte die Werte im Fenster des seriellen Monitors. Neue Befehle: analogread(pin) Liest den Wert eines festgelegten analogen Pins aus. Die resultierenden Integer Werte haben ein Spektrum von 0 bis 1023. Bemerkung: Analoge Pins müssen im Gegensatz zu digitalen nicht zuerst als Eingang oder Ausgang deklariert werden. Serial.begin(9600) Öffnet den seriellen Port und setzt die Datenrate auf 9600 bps. Serial.print / Serial.println Sendet eine Nachricht oder einen Wert an den seriellen Monitor. Serial.print("Das ist eine Nachricht ohne Zeilenumbruch"); Serial.println("Das ist eine Nachricht mit Zeilenumbruch am Ende"); Serial.print(sensorValue); Sendet den Wert der Variable sensorvalue. Seite -19- Seite -20-

Aufgabe A4.2: Rechne die ausgelesenen Werte so um, dass sie den Werten der am analogen Eingang anliegenden Spannung entsprechen. Ändere den Sketch so ab, dass auf dem seriellen Monitor der Spannungswert ausgegeben wird, wie z.b.: Die Spannung beträgt: 2,1 V Speichere den Sketch unter dem Namen A042_Poti_Spannung_(xx) ab. 4 INFO: Rechenoperatoren Arithmetische Operatoren umfassen Addition, Subtraktion, Multiplikation und Division. Sie geben die Summe, Differenz, das Produkt oder den Quotienten zweier Operatoren zurück. y = y + 3; x = x - 7; i = j * 6; r = r / 5; Die Operation wird unter Beibehaltung der Datentypen durchgeführt. 9 / 4 wird so zum Beispiel zu 2 und nicht 2,25, da 9 und 4 Integer sind und keine Nachkommastellen unterstützen. Dies bedeutet auch, dass die Operation überlaufen kann wenn das Resultat größer ist als der Datentyp zulässt. Wenn die Operanden unterschiedliche Datentypen haben wird der größere Typ verwendet. Hat zum Beispiel eine der Nummern (Operanden) den Datentyp 'float' und der andere 'int', so wir Fliesskomma Mathematik zur Berechnung verwendet. Bemerkung: Wähle variable Größen die groß genug sind um die Werte der Ergebnisse zu speichern. Sei Dir bewusst an welcher Stelle die Werte überlaufen und auch was in der Gegenrichtung passiert. z.b. bei (0-1) oder (0 - - 32768). Für Berechnungen die Brüche ergeben sollten immer 'float' Variablen genutzt werden. Allerdings mit dem Bewusstsein der Nachteile: Großer Speicherbedarf und langsame Geschwindigkeit der Berechnungen. Nutze den Form Operator z.b. (int)myfloat um einen Variablen Typen spontan in einen anderen zu verwandeln. Zum Beispiel wird mit i = (int)3.6 die Variable i auf den Wert 3 setzen. Gemischte Zuweisungen Gemischte Zuweisungen kombinieren eine arithmetische Operation mit einer Variablen Zuweisung. Diese werden üblicherweise in Schleifen gefunden, die wir später noch genauer Beschreiben werden. Die gängigsten gemischten Zuweisungen umfassen: x ++ // identisch mit x = x + 1, oder Erhöhung von x um +1 x -- // identisch mit x = x - 1, oder Verminderung von x um -1 x += y // identisch mit x = x + y, oder Erhöhung von x um +y x -= y // identisch mit x = x - y, oder Verminderung von x um -y x *= y // identisch mit x = x * y, oder Multiplikation von x mit y x /= y // identisch mit x = x / y, oder Division von x mit y Bemerkung: Zum Beispiel führt x *= 3 zur Verdreifachung des alten Wertes von 'x' und weist der Variablen 'x' des Ergebnis der Kalkulation zu. Seite -21- Seite -22-

Neue Bauelemente: LDR (Light Dependent Resistor) Lichtsensor Neue Befehle: - Ziel: Eine LED soll leuchten, wenn ein LDR abgedunkelt wird. Aufgabe 5.1: Baue die Schaltung wie in der Abbildung, jedoch ohne LED und Vorwiderstand, auf. Öffne den Sketch A051_LDR Starte den Sketch. Öffne den seriellen Monitor. Dunkle mit deiner Hand den LDR ab und beobachte dabei die Werte auf dem seriellen Monitor. 5 Aufgabe 5.2: Ergänze die Schaltung durch die rote LED mit Vorwiderstand. Ändere den Sketch so ab (Befehl IF und ELSE), dass die LED ab einem bestimmten Schwellenwert anfängt zu leuchten. Speichere den Sketch unter dem Namen A052_LDR_(xx) ab. Aufgabe 5.3: Füge eine grüne LED mit Vorwiderstand hinzu. Ändere den Sketch so ab, dass nur die rote LED oberhalb eines bestimmten Schwellenwerts leuchtet und die grüne LED nur unterhalb des Schwellenwerts leuchtet. Speichere den Sketch unter dem Namen A053_LDR_2LED_(xx) ab. Info: LDR Ein Fotowiderstand ist ein Halbleiter, dessen Widerstandswert lichtabhängig ist. Ein LDR besteht aus zwei Kupferkämmen, die auf einer isolierten Unterlage (weiß) aufgebracht sind. Dazwischen liegt das Halbleitermaterial in Form eines gewundenen Bandes (rot). Fällt das Licht (Photonen) auf das lichtempfindliche Halbleitermaterial, dann werden die Elektronen aus ihren Kristallen herausgelöst (Paarbildung). Der LDR wird leitfähiger, das heißt, sein Widerstandswert wird kleiner. Je mehr Licht auf das Bauteil fällt, desto kleiner wird der Widerstand. Seite -23- Seite -24-

6 Neue Bauelemente: - Neue Befehle: analogwrite Ziel: Eine LED soll mit einem LDR gedimmt werden. Aufgabe 6.1: Baue die Schaltung wie in der Abbildung auf. Öffne und starte den Sketch A061_LDR_Dimmen Verändere die Stellung des Potentiometers und beobachte dabei die LED. Notiere deine Beobachtungen. INFO: PWM (PulsWeitenModulation) Ein digitaler Pin kennt die beiden Zustände HIGH und LOW. Dann liegen an diesem Pin entweder 0V oder 5V an. Einige der digitalen Pins auf dem Arduino-Board sind mit PWM (oder ~ ) gekennzeichnet. Mit dem Befehl analogwrite(pin, value) kann man an diesen Pins eine pseudo-analoge Spannung erzeugen: Der Befehl analogwrite(11, 0) generiert eine gleichmäßige Spannung von 0 Volt an Pin11, der Befehl analogwrite(11, 255) generiert eine gleichmäßige Spannung von 5 Volt an Pin11. Für Werte zwischen 0 und 255 wechselt der Pin sehr schnell zwischen 0 und 5 Volt - je höher der Wert, desto länger ist der Pin HIGH (5 Volt). Der Befehl analogwrite(11, 127) führt dazu, dass die Ausgangsspannung zur Hälfte der Zeit auf HIGH steht und zur anderen Hälfte auf LOW. Bei analogwrite(11, 192) 192 misst die Spannung am Pin zu einer Viertel der Zeit 0 Volt und zu Dreivierteln die vollen 5 Volt. Weil dies eine hardwarebasierte Funktion ist, läuft die konstante Welle unabhängig vom Programm bis zur nächsten Änderung des Zustandes per analogwrite (bzw. einem Aufruf von digitalread oder digitalwrite am selben Pin). Aufgabe 6.2: Ersetze in der Schaltung das Potentiometer durch einen Spannungsteiler aus einem 10 kω Widerstand und einem LDR. (Siehe Praktikum 5) Starte den Sketch. Öffne den seriellen Monitor. Dunkle den LDR mit der Hand ab und beobachte die LED. Notiere deine Beobachtungen. Seite -25- Seite -26-

Neue Bauelemente: - Neue Befehle: For (Schleife) Ziel: Eine LED soll ein- und ausfaden, d.h. langsam heller und dunkler werden. Aufgabe 7.1: Baue die Schaltung wie in der Abbildung auf. Öffne den Sketch A071_LDR_Faden Starte den Sketch. 7 Neuer Befehl: for Die for-schleife wird verwendet um einen Block von Anweisungen in geschweiften Klammern eine festgelegt Anzahl von Wiederholungen durchlaufen zu lassen. Es gibt im Header der for-schleife drei Elemente, getrennt durch Semikolon ';'. for (Initialisierung; Bedingung; Ausdruck/Anweisung) { dosomething; } 1. Die Initialisierung einer lokalen Variablen, einem ansteigenden oder absteigenden Zähler. 2. Bei jedem Durchlaufen der Schleife wird die Bedingung an der zweiten Stelle getestet. (siehe vergleichende Operatoren Seite 12) 3. Wenn die Bedingung wahr ist läuft die Schleife weiter und die folgenden Ausdrücke und Anweisungen werden ausgeführt und die Bedingung wird erneut überprüft. Ist die Bedingung nicht mehr wahr so endet die Schleife. Das folgende Beispiel startet mit einem Integer Wert 'i' bei 0, die Bedingung testet ob der Wert noch kleiner als 20 ist und wenn dies wahr ist so wird 'i' um einen Wert erhöht und die Anweisungen innerhalb der geschweiften Klammern werden ausgeführt: Aufgabe 7.2: Ergänze zwei weitere LEDs Ändere den Sketch so ab, dass eine LED nach der anderen hell und dunkel wird. Speichere den Sketch unter dem Namen A072_3LED_Faden_(xx) ab. Aufgabe 7.3: Ergänze einen Taster. Ändere den Sketch so ab, dass der Taster gedrückt werden muss, damit die nächste (erste) LED hell wird. Speichere den Sketch unter A072_3LED_Faden_Taster_(xx) ab. Seite -27- Seite -28-

Neue Bauelemente: L293D (Motorsteuerungs IC) Neue Befehle: - 8 Aufgabe 8.1: Baue die Schaltung wie in der Abbildung auf. Öffne den Sketch A081_Motorsteuerung. Starte den Sketch. Ziel: Ein oder zwei Gleichstrommotoren sollen angesteuert werden. INFO: Motorsteuerung für 1 Motor: Ein einfacher Elektromotor hat zwei Anschlüsse. Wenn eine Spannung anliegt, dreht sich der Motor in die eine Richtung, kehrt man die Spannung um, dreht sich der Motor in die andere Richtung. Welches Pin man dazu wo am L293D anschließen muss und wie man die Drehrichtung vom Mikrocontroller aus steuern kann, wird hier erklärt: Pinbelegung Bedeutung und Belegung L293D 4,5,12,13 Erdung (0V) 16 Energieversorgung des IC (5V) 1 Enable-Pin des IC. Ist dieses mit 5V verbunden, sind die Motor- Pins 3 und 6 aktiv. 8 Energieversorgung des Motors. Der Minus-Pol der Energieversorgung muss mit Erde (0V) verbunden sein, also z.b. mit Pin4. 3 und 6 Anschluss des Motors 2 und 7 Anschluss an die Pins 2 und 3 des Arduino. Pin2: HIGH Pin3: LOW Motor dreht sich Pin2: LOW Pin3: LOW Motor dreht sich nicht Pin2: LOW Pin3: HIGH Motor dreht sich umgekehrt Pin2: HIGH Pin3: HIgH Motor dreht sich nicht Seite -29- Aufgabe 8.2: Ändere den Sketch A081_Motorsteuerung so ab, dass sich der Motor 3 mal hintereinander (Befehl: for) jeweils 2 Sekunden in eine Richtung und nach einer Pause von 1 Sekunde 2 Sekunden in die andere Richtung dreht. Speichere den Sketch unter dem Namen A082_Motorsteuerung_(xx) ab. Seite -30-

INFO: Motorsteuerung für 2 Motoren: 8 Pinbelegung Bedeutung und Belegung L293D 4,5,12,13 Erdung (0V) 16 Energieversorgung des IC (5V) 1 und 9 Enable-Pin des IC. Ist dieses mit 5V verbunden, sind die Motor- Pins 3 und 6 bzw. 11 und 14 aktiv. 8 Energieversorgung des Motors. Der Minus-Pol der Energieversorgung muss Erde (0V) verbunden sein (Siehe Schaltung) 3 und 6 Anschluss Motor 1 11 und 14 Anschluss Motor 2 2 und 7 Anschluss an die Pins 2 und 3 des Arduino. 10 und 15 Anschluss an die Pins 4 und 5 des Arduino. Aufgabe 8.3: Ändere den Sketch A081_Motorsteuerung so ab, dass sich die Motoren zunächst in die gleiche Richtung, in die umgekehrte Richtung und anschließend in verschiedene Richtungen drehen. (Pause 1 Sekunde) Erzeuge eine Ausgabe auf den seriellen Monitor, die über die Drehrichtung der einzelnen Motoren informiert. Zeichne den Schaltplan Aufgabe 8.4: Um die Geschwindigkeit der Motoren steuern zu können kann man die beiden enable Pins 1 und 9 des L293D an einen PWM-Ausgang des ARDUINO anschließen. Damit lässt sich die Leistung des L293D drosseln, indem man ihn z.b. nur 50% der Zeit aktiviert. Erweitere deine Schaltung. Ändere den Sketch A083_Motorsteuerung2_(xx) entsprechend ab und speichere ihn unter dem Namen A084_Motorsteuerung2_PWM_(xx) ab. Aufgabe 8.5: Jetzt wird s richtig kompliziert Regle die Geschwindigkeit der Motoren mit Hilfe eines Potis. Erzeuge eine Ausgabe auf dem seriellen Monitor, die die Leistung der Motoren in Prozent angibt. Speichere den Sketch unter dem Namen A085_Motorsteuerung2_PWM_(xx) ab. Seite -31- Seite -32-

Neue Bauelemente: - 9 1. Beispiel: Motorsteuerung Neue Befehle: Unterprogramme und selbst definierte Funktionen Ziel: Sketches einfacher und übersichtlicher gestalten. Sketches lassen sich einfacher und übersichtlicher gestalten, wenn immer wieder auftretende Programmteile in Unterprogrammen ausgelagert werden und mit nur einem Befehl aufgerufen werden. Dabei bilden die beiden Programmteile und die Grundstruktur eines Sketches. Entsprechend lassen sich weitere Unterprogramme erstellen. Das Unterprogramm vorwaerts wird aufgerufen. Allgemeine Form eines Unterprogramms: Rückgabetyp: Gibt den Datentyp des Werts an, der zurückgegeben wird. (Siehe Beispiel 3) Wird kein Wert zurückgegeben, dann wird hier der Befehl void verwendet. (Siehe Beispiel 1 und 2) Funktionsname: Frei wählbarer Namen des Unterprogramms bzw. der Funktion. Paramaterliste Hier stehen die Werte, die an das Unterprogramm übergeben werden. Die Parameterliste kann auch leer bleiben (Siehe Beispiel 1) Seite -33- Seite -34-

9 2. Beispiel: Motorsteuerung (mit Übergabe von Werten) 3. Beispiel: Multiplikation zweier Werte (mit Rückgabe des Ergebnisses) Die Funktion multipliziere wird aufgerufen und die beiden Werte werden mit übergeben. Das Ergebnis wird in der Variablen produkt abgelegt. x ist eine lokale Variable und nur gültig innerhalb des Unterprogramms. Die Funktion multipliziere kann auch direkt aufgerufen werden. Aufgabe A9.1: Schreibe den Sketch A081_Motorsteuerung_(xx) bzw. A082_Motorsteuerung_(xx) neu mit Hilfe von Unterprogrammen. Speichere den Sketch unter A091_Motorsteuerung_(xx) bzw. A092_Motorsteuerung_(xx) ab Seite -35- Seite -36-

10 Neue Bauelemente: - Neue Befehle: Serial.read Ziel: Daten von der Tastatur einlesen. Um Programmabläufe zu steuern kann es geschickt sein, Daten von der Tastatur einzulesen. Mit dem folgenden Sketch wird über die Tastatur eine Leuchtdiode anund ausgeschalten. Aufgabe A10.1: Schließe an Pin2 eine LED an. Öffne den Sketch A101_Serial_Read und übertrage ihn auf den Arduino. Öffne den seriellen Monitor. Gib in der Kommandozeile 1 für LED on 2 für LED off ein, und drücke auf Send (oder Enter ). Beobachte die LED. Neue Befehle: Serial.Read() Zunächst wird überprüft, ob überhaupt Daten (hier: von der Tastatur) anliegen. Dies geschieht mit dem Befehl: if (Serial.available()>0) Sind Daten verfügbar, dann werden sie mit Serial.read () ausgelesen. Aufgabe A11.2: Starte den Sketch erneut und öffne den seriellen Monitor. Gib in der Kommandozeile 3, a oder A ein, und drücke auf Send. Welches Ergebnis liefert der serielle Monitor? Notiere! Seite -37- Seite -38-

11 Neue Bauelemente: Lautsprecher Neue Befehle: tone Ziel: Töne und Melodienauf einem Lautsprecher erzeugen. Aufgabe A11.1: Schließe an Pin8 einen Lautsprecher an. Öffne den Sketch A111_Lautsprecher und übertrage ihn auf den ARDUINO. Neue Befehle: tone( pin, Frequenz, Tonlänge) Die Frequenz wird in Hz, die Tonlänge in Millisekunden angegeben. Werden mehrere Töne nacheinander gespielt, muss dazwischen eine Pause gemacht werden, damit das Programm nicht gleich den nächsten Befehl (in diesem Fall der nächste Ton) ausführt. Die Länge der Pause entspricht ungefähr der Tonlänge. Melodien lassen sich natürlich leichter erstellen, wenn man die Note, z.b. c oder g, und deren Länge 1/4 oder 1/8, direkt eingeben kann: Aufgabe A11.2 Erzeuge eine eigene Abfolge von Tönen. Speichere den Sketch unter A112_Lautsprecher_(xx) Seite -39- Aufgabe A11.3: Öffne den Sketch A113_Lautsprecher Starte den Sketch Erzeuge eine eigene Melodie. Speichere den Sketch unter A113_Lautsprecher_(xx) Seite -40-

12 Neue Bauelemente: Reflexoptokoppler CN70 Neue Befehle: - Ziel: Ein Kurzstrecken-Lichtschranke erstellen. Da zwei der vier Anschlüsse mit GND verbunden werden müssen, kann man den CNY70 einfach diagonal auf das Steckbrett setzen. Jede Lichtschranke besteht aus einem Sender und einem Empfänger. Hier verwenden wir die Kurzstrecken-Reflexlichtschranke CNY70, bei der sich Sender und Empfänger im gleichen Gehäuse befinden - das ausgesendete Licht muss also reflektiert oder zurückgestreut werden, damit es den Empfänger trifft. Dazu genügt ein helles Objekt, das sich in wenigen mm Abstand vor der Reflexlichtschranke befindet. Der Sender (hellblaue Linse) ist Tipps: eine LED, die für das menschliche Auge unsichtbares Licht (Infrarot- Licht) aussendet. Der Empfänger (dunkelblaue Linse) ist ein sogenannter Phototransistor. Je mehr Licht auf den Phototransistor fällt, desto geringer ist sein Widerstand. Bemerkung: Das Infrarot-Licht der sendenden Leuchtdiode ist zwar für das menschliche Auge nicht sichtbar, die meisten Handykameras und einfache Digitalkameras erkennen das Licht aber als weißes Leuchten. So könnt ihr leicht überprüfen, ob die LED auch leuchtet. Schaltplan: 5 V Zur Orientierung: Hier steht die Beschriftung! Aufgabe A12.1: Baue die Schaltung gemäß Schaltplan auf. Schreibe einen Sketch, bei dem die Werte vom analogen Pin 5 auf dem seriellen Monitor ausgegeben werden. Teste deine Lichtschranke, indem du einen Gegenstand vor den Reflexoptokoppler hälst. Speichere den Sketch unter A121_Reflexoptokoppler_(xx) Phototransistor mit Pullup-Widerstand (Spannungsteiler) Aufgabe A12.2: Verändere den Pullup-Widerstand. Wie ändert sich damit die Empfindlichkeit der Reflexoptokopplers? Notiere deine Beobachtungen. Infrarot-LED mit Vorwiderstand GND 5 (analog) Aufgabe A12.3: (Alarmanlage) Ergänze die Schaltung um eine Leuchtdiode und einen Lautsprecher. Erweitere den Sketch so, dass ab einem bestimmten Wert die Leuchtdiode anfängt zu blinken und der Lautsprecher ein Warnsignal ausgibt. Speichere den Sketch unter A123_Reflexoptokoppler_Alarm_(xx) Seite -41- Seite -42-

13 Neue Bauelemente: Servo Neue Befehle: Servo-Befehle, map Ziel: Einen Servo ansteuern Aufgabe A13.1: Baue die Schaltung auf. Der Servo muss mit einer eigenen Stromquelle versorgt werden. Achte auf die gemeinsame Erdung von Mikrocontroller und Stromquelle! Öffne den Sketch A131_Servo und starte ihn. Verändere die Position des Potentiometers. Beobachte den Servo. Tipp: Um die Bewegung des Servos besser beobachten zu können, kannst du einen Zeiger an ihm befestigen. Die Servo-Library wird eingelesen. Der angeschlossene Servo bekommt die Bezeichnung myservo. Diese Bezeichnung ist frei wählbar. Das Potentiometer wird am analogen Pin 0 angeschlossen. Der Servo wird an Pin 2 angeschlossen. Umrechnung des ausgelesenen Werts auf die 180 -Skala Die Gradzahl wird auf den Servo übertragen Info: Positionsregelung eines Servos Der Servo benötigt Zeit, um die neue Position anzufahren. Bei Modellbauservos wird der Winkel der Ausgangswelle geregelt. Zur Ermittlung des Winkels befindet sich im Servoinnern ein Potentiometer, das mit der Ausgangswelle verbunden ist. Über dieses Potentiometer ermittelt die Servoelektronik den Ist-Winkel der Ausgangswelle. Dieser wird mit dem Soll-Winkel verglichen, der vom Mikrocontroller übermittelt wird. Bei einer Abweichung zwischen Ist- und Soll-Winkel, regelt die Elektronik über den Motor und das Getriebe den Winkel der Ausgangswelle nach. Die Ausgangswelle kann eine Position zwischen 0 und 180 einnehmen. Seite -43- Seite -44-

13 Neue Befehle: y = map(wert, a1, a2, b1, b2) Rechnet einen Wert von einem Intervall in ein zweites Intervall um: Aufgabe A13.2: Ändere den Sketch so ab, dass sich der Zeiger nur im Bereich 0-90 bewegt. Auf dem seriellen Monitor sollen die Winkelwerte ausgegeben werden. Speichere den Sketch unter A132_Servo_Serial_(xx) ab. a1 Wert a2 b1 y Beispiel: y = map(20, 0, 50, 0, 100) 0 20 50 b2 Aufgabe A13.3: Ergänze die Schaltung mit einer grünen und einer roten LED. Die grüne LED soll bei der Position 0 leuchten, die rote LED bei der Position 90. Bei allen anderen Positionen sollen die LEDs nicht leuchten. Ändere den Sketch und speichere ihn unter A133_Servo_LED_(xx) ab. Aufgabe A13.4: Baue eine Schaltung auf, bei der ein Servo (mit Zeiger) die Lichtintensität (LDR) auf einer Helligkeitsskala (dunkel hell) darstellt. Schreibe den Sketch und speichere ihn unter A134_Servo_LDR_(xx) ab. 0 40 100 Die Umrechnung erfolgt linear und das Ergebnis sind immer ganzzahlige Werte (integer). Um Dezimalwerte zu erhalten muss man die Intervalle z.b. verzehnfachen und anschließend das Ergebnis durch 10 dividieren. Dieser Befehl ist immer dann sinnvoll, wenn Skalen ineinander umgerechnet werden müssen: Mit dem Befehl analogread() bekommt man Werte zwischen 0 1023. Für analogwrite() werden Werte zwischen 0 255 benötigt: y = map(767, 0, 1023, 0, 255) Ergebnis: y = 192 0 767 1023 0 192255 Seite -45- Seite -46-

14 Neue Bauelemente: Temperatursensor LM35 Neue Befehle: - Ziel: Umgebungstemperatur messen. Aufgabe A14.1: Baue die Schaltung auf. Öffne den Sketch A141_Temperatur. Starte den Sketch und öffne den seriellen Monitor. Berühre den Temperatursensor und beobachte die Werte. Bemerkung: Der vom Temperatursensor LM35 ermittelte Wert wird über die eben genannte Formel berechnet: Der Dieser Sensor wandelt die gemessene Temperatur in einen analogen Spannungswert um, der sich proportional zur Temperatur ändert. Der Sensor hat eine Empfindlichkeit von 10mV/ C und einen messbaren Temperaturbereich von 0 C bis 100 C Celsius. Die Formel zur Berechnung der Temperatur in Abhängigkeit vom gemessenen Wert am analogen Eingang lautet wie folgt: float temperature = (5.0 * 100.0 * analogvalue) / 1024; und über eine for-schleife gemittelt. Dies erfolgt über das Aufsummieren der Messwerte und die Bildung des Durchschnittes. Im Anschluss wird der gemittelte Wert an die serielle Schnittstelle übertragen: Serial.println(resultTemp); Der Temperatursensor LM35 mit seiner Anschlussbelegung in einem TO-92- Plastikgehäuse. Quelle: Die elektronische Welt mit Arduino entdecken (Erik Bartmann). Die Formelwerte haben folgende Bewandtnis: 5.0 : Arduino-Referenzspannung von 5V 100.0: Maximal messbarer Wert des Temperaturfühlers 1024 : Auflösung des analogen Eingangs Seite -47- Seite -48-