Projektmodul DM Kurze Einführung Arduino und Arduino-Programmierung Hochschule Fulda – FB AI Wintersemester 2017/18 http://pm.rz.hs-fulda.de Peter Klingebiel, HS Fulda, FB AI
Arduino 1 Wikipedia: https://de.wikipedia.org/wiki/Arduino_(Plattform) Arduino (seit März 2015 auch Genuino) Open Source Hardware- und Software-Plattform entwickelt von Massimo Banzi und David Cuartielles auch für künstlerischen Einsatz von IT-Komponenten benamst nach Arduin von Ivrea, der 1002-1014 italienischer König war Programmierung in C und C++ in einer eigenen Processing-basierten IDE Homepage: https://www.arduino.cc Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Arduino 2 Vielzahl an Boards, darunter auch für Wearables Vielzahl an Herstellern von Boards / Komponenten Vielzahl an Shields, z.B. Ethernet, WiFi, Sensoren, … Vielzahl an Komponenten wie LEDs, Sensoren, Aktoren, Motoren, … Vielzahl an Einsatzfeldern, z.B. Robotics, Internet of Things, Hausautomatisierung, Wearables, … viele Anleitungen in Literatur und Internet, z.B. https://www.arduino.cc/en/Guide/HomePage http://funduino.de/vorwort http://www.netzmafia.de/skripten/hardware/Arduino/index.html Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Arduino Uno R3 1 Digitale Ein-/Ausgänge Pin 2 bis Pin 13 GND Masse Reset-Schalter Serielle Pins In und Out USB-Anschluß CPU: Atmel ATmega328 Mikrocontroller Externe Strom-versorgung 3.3V 5V GND Analoge Ein-/Ausgänge Pin A0 bis Pin A5 Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI 4
Arduino Uno R3 2 Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI 5
Mikrocontroller Atmel ATmega328 Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI 6
Arduino Nano 1 CPU Atmel ATmega328 11 digitale Eingänge D0 bis D13 Serielle Pins RX und TX GND USB-Anschluß Reset- Taster 3.3V 8 analoge Eingänge A0 bis A7 5V GND Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI 7
Arduino Nano 2 Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI 8
Mikrocontroller Atmel ATmega328P-AU Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI 9
Schaltung mit Nano 1 Nano mit LED auf Breadboard Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Schaltung mit Nano 2 Schaltungsgrafik mit Fritzing-Software Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Breadboard 1 Steckbrett - Elektronikschaltungen ohne Löten Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Breadboard 2 Verbindungen der Lochreihen Bus Stripes für VCC und GND Terminal Stripes für Komponenten Bus Stripes für VCC und GND Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Steckkabel Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
LED 1 Aufbau und Schaltbild einer LED Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
LED 2 Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Widerstand 1 Widerstand: passives elektrisches Bauelement, i.d.R. zur Begrenzung der Stromstärke Kohleschichtwiderstand (oben) und Metallschicht-widerstand (unten) Farbstreifen kodieren die Größe des Widerstands Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Widerstand 2 Kodierung von Widerständen durch Farbkodes Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Arduino IDE 1 Installation der Arduino IDE Download von https://www.arduino.cc/ → Software Windows: Installer oder ZIP-File herunterladen und auf dem PC installieren, analog für MAC / Linux beim Anschluß des Arduino-Boards erkennt das System im Idealfall das Board und installiert den USB-Treiber automatisch, sonst ist eine manuelle Installation des USB-Treiber nötig (siehe Internet!) dann kann die die IDE gestartet werden: entweder über das Icon auf dem Desktop oder mit arduino.exe im Installationsverzeichnis Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Arduino IDE mit Sketch im Editor Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Arduino IDE 3 Auswahl des Boards Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Arduino IDE 4 Auswahl des USB-Ports Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Arduino IDE 4 Compilieren und auf Board laden Compilieren Seriellen Monitor öffnen Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Programmierung 1 Beispielprogramm 1, Sketch genannt: // pm-1-hallowelt.ino // klin, 28.10.2016 // hallo welt auf seriellem monitor ausgeben void setup() // Initialisierung { Serial.begin(9600); // Baudrate -> 9600 } int i = 0; // Zaehler void loop() // Arbeitsschleife { ++i; // Zaehler hochzaehlen Serial.print(++i); // und ausgeben Serial.println(" - hallo welt"); delay(1000); // 1 Sekunde warten } Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Programmierung 2 Beispielprogramm 2, Blink-Sketch: // pm-3-blink-extern.ino // klin, 28.10.2016 // externe LED im Sekundentakt blinken const int led = 10; // LED an Pin D10 void setup() // Initialisierung { pinMode(led, OUTPUT); // Pin 10 als Ausgang } void loop() // Arbeitsschleife { digitalWrite(led, HIGH); // LED ein delay(1000); // 1 Sekunde warten digitalWrite(led, LOW); // LED aus delay(1000); // 1 Sekunde warten } Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Programmierung 3 C-main muss nicht programmiert werden: int main() // im Startupcode enthalten! { setup(); // Initialisierung while(1) // Endlosschleife loop(); } Funktion void setup() Initialisierungen des Programms und der Komponenten Funktion void loop() Hauptschleife des Anwendungsprogramms, läuft endlos Funktionsaufrufe von eigenen und Bibliotheksfunktionen Code des Algorithmus des Programms Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Programmierung 4 erste wichtige Funktionen: void Serial.begin(int baud) seriellen Monitor auf Baudrate baud einstellen void Serial.print(type data) data vom Typ type auf seriellen Monitor schreiben, zulässig sind char, int, float, char *, String u.a.m. void Serial.println(type data) data auf seriellen Monitor schreiben, dann neue Zeile void delay(unsigned long ms) ms Millisekunden warten und nix tun https://www.arduino.cc/en/Reference/HomePage Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Programmierung 5 erste wichtige IO-Funktionen: void pinMode(int p, int m) Pin p auf Modus INPUT oder OUTPUT einstellen void digitalWrite(int p, int w) Wert v auf Digitalausgang Pin p schreiben int digitalRead(int p) Wert von Digitaleingang Pin p lesen void analogWrite(int p, int w) Wert v auf Analogausgang Pin p schreiben int analogRead(int p) Wert von Analogeingang Pin p lesen Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI
Und los geht’s … Projektmodul DM - Peter Klingebiel - HS Fulda - FB AI 29