Arduino
Übersicht/Welcome
Diese Seite soll einen Einstieg in das Arbeiten mit Arduino erleichtern. Hier findest du einen Überblick über Verwendung, Möglichkeiten und weiterführende Ressourcen für die Arbeit mit Arduinos. Mit Arduino bezeichnen wir ein Mikrocontroller-Board, das es uns ermöglicht, verschiedene Sensoren und Aktuatoren per Code auszulesen bzw. zu steuern. Diesen Microcontroller können wir über ein Open-Source Software, die wir auch als Arduino bezeichnen, mit Hilfe der Programmiersprache C steuern.
In Wissenswertes erfährst du alles hardwarespezifisch Wichtiges über deinen Arduino: Die Verteilung der digitalen und analogen OutPuts und Inputs, die richtige Stromversorgung, Informationen zu den einzelnen elektronischen Bauteilen deines Arduinos zum Nachkaufen oder Reparieren, sowie die Hintergründe und Geschichte des Projekts.
In Programmieren mit Arduino, sollen die grundlegenden Begriffe der Programmiersprache Arduino erklärt werden, sowie einfache Codebausteine vorgestellt werden, die zur Erstellung von weiterführendem Code verwendet werden können.
In Getting Started findest du einfache Beispiele für Schaltpläne, die dir die Grundfunktionen (Input/Output/Switch) des Arduinos erklären und die wichtigsten Grund-Schaltungen mit z.B. Pull UP/Pull DOWN Resistoren abbilden und erklären:
Arduino Wissenswertes
Hardfacts/Equipment Basics
Für Hardware Entwürfe, sog. Prototypes und in Seminaren arbeiten wir vor allem mit dem Arduino UNO. Der Arduino UNO basiert auf dem Microcontroller *ATmega328P*, der zusätzlich mit einem 1KB EEPROM Speicher ausgestattet ist, um Programme auch über das Ausschalten hinaus zu speichern.
Auf einen Blick
INPUTS/OUTPUTS
taken from: https://content.arduino.cc/assets/Pinout-UNOrev3
Das Board hat 14 digitale Input/Output Pins (PIN 0-13) von denen 6 als PWM Output Pins '(“Pulse Width Modulation” PIN 3, 5-6, 9-11), als quasi analoge Outputs verwendet werden können.
Wobei Pin 0 und 1 außerdem für Datentransfer (also z.B. in für serielle Kommunikationsprotokolle) genutzt werden können.
Zusätzlich hat der Arduino Uno noch 6 analoge Input Pins (die auch als digitale Outputs genutzt werden können), einen USB-B Anschluss und einen ICSP Anschluss,
sowie einen RESET Knopf.
(ICSP: In Circuit Serial Programming, wird häufig benutzt, um ein neues Betriebsprogramm „bootloader“ aufzuspielen, oder ein Aktuelles zu reparieren – normalerweise benutzen wir das mitgelieferte Programm „Arduino“, um mit dem Board zu kommunizieren, es kann aber auch über diese Verbindung angesteuert werden)
Mehr zu digitalten Pins und ihrer Funktionsweise findest du hier: https://www.arduino.cc/en/Tutorial/Foundations/DigitalPins
Mehr zu analogen Pins und ihrer Funktionsweise findest du hier: https://www.arduino.cc/en/Tutorial/Foundations/AnalogInputPins
Stromversorgung
Für den Arduino wird eine Versorgungsspannung von 7V-12V empfohlen, allerdings läuft der Arduino auch mit min. 6V und max. 20V. Die Systemspannung des Arduinos beträgt 5V.
Der Arduino kann auf verschiedene Weisen mit Strom versorgt werden:
- Über seinen USB-B Anschluss
- Über seinen Stromanschluss
- Über eine Batterie mit 5V diese kann an die entsprechende 5V Pin und Ground angeschlossen werden (im Bild markiert)
- Über eine Batterie mit 9V (oder höher) diese kann an die Pin Vin und Ground angeschlossen werden. (im Bild markiert)
Siehe hierzu auch: https://technobyte.org/2016/07/power-up-the-arduino-uno/
WICHITG: Die Pins 3,3 V, 5V, und Vin (im Bild markiert) können genauso auch als Spannungs Outputs verwendet werden, um Aktuatoren und Sensoren zu versorgen. Gerade wenn man mit Geräten arbeitet, die eine höhere Grundspannung als 5V benötigen, kann der Arduino über Vin gleichzeitig über eine externe Stromquelle betrieben werden und direkt Strom für einen anderen Stromkreis liefern.
Vin reduziert die ausgegebene Spannung nicht, sodass hierüber Aktuatoren mit bis zu 20V versorgt werden können.
Die Kontrolleucht ON zeigt an, ob der Arduino mit ausreichend Strom versorgt wird.
Die Kontrolleuchten Tx/Rx zeigen den Status einer laufenden Datenübertragung an.
Die Pins IOREF(Input/Output Reference Pin) und AREF (Analog Reference Pin) werden häufig zum Monitoring eingesetzt.
IOREF bietet einen Referenzpunkt für die aktuelle Systemspannung. Beim Arduino Uno (falls er korrekt funktioniert) sind das immer 5V.
AREF ist der Spannungsreferenz-Analog-Digital-Wandler (ADC). Dieser Pin bietet einen Referenzpunkt für analoge Signale und kann anstelle der Standard-5-V-Referenz für das obere Ende des analogen Spektrums verwendet werden. Möchte man beispielsweise ein analoges Signal mit einer Range von nur 1.7 V beobachten, kann man den ADC anschließen und dort trotzdem dem vollen Umfang von 0-1023 analoger Werte empfangen.
WIFI
Der Arduino UNO kann um ein Wifi Modul ergänzt werden, um kabellos Daten zu empfangen und zu verschicken. Siehe hierzu z.B.: https://create.arduino.cc/projecthub/imjeffparedes/add-wifi-to-arduino-uno-663b9e --> Hier wird noch ergänzt, wie das geht
Hintergründe und Geschichte
Hintergründe und Geschichte:
Der Arduino wurde ursprünglich als Tool entwickelt, um im Unterricht an Universitäten und Schulen schnelles Prototyping zu ermöglichen und Programmiertes in schnelle, einfache Hardwarelösungen zu übersetzen bzw. Hardware sofort ansteuern zu können.
Auf der Website von Arduino heißt es dazu:
“Thanks to its simple and accessible user experience, Arduino has been used in thousands of different projects and applications. (...) Teachers and students use it to build low cost scientific instruments, to prove chemistry and physics principles, or to get started with programming and robotics. Designers and architects build interactive prototypes, musicians and artists use it for installations and to experiment with new musical instruments. Makers, of course, use it to build many of the projects exhibited at the Maker Faire, for example. Arduino is a key tool to learn new things. Anyone - children, hobbyists, artists, programmers - can start tinkering just following the step by step instructions of a kit, or sharing ideas online with other members of the Arduino community.”
Arduino ist bis heute eine komplett auf dem Open Source Prinzip basierende Plattform. Für weitergehende Informationen zur Geschichte und Entstehung von Arduino, kannst du diese Dokumentation anschauen: https://vimeo.com/18539129
Um dich über die Arduino Community, das Projekt selbst zu informieren und um Zugriff auf unendlich viele Ressourcen von Schaltplänen und Code zu bekommen, kannst du dich auf der Arduino Website umschauen: https://www.arduino.cc/en/Guide/Introduction
Andere Boards
Programmieren mit Arduino: Basics
cheat sheet
wichtigste Begriffe und Syntax
Getting Started: Beispiele zum Einstieg
Blink LED: Der Arduino als digitaler Output
Fade LED: Der Arduino als analoger Output
Potentiometer: Einen analogen Sensor lesen
Lichtsensor (Photoresistor): Einen analogen Sensor mit Widerstand anschließen
Button: Einen digitalen Sensor lesen
Button Blink LED
Potentiometer Fade LED
Weiterführende Beispiele und Code
Arduino als Schalter für externe Stromkreisläufe
Verbinde Arduino mit einem Knopf und zähle, wie oft der Knopf gedrückt wird
State change detection (edge detection) Often, you don't need to know the state of a digital input all the time, but you just need to know when the input changes from one state to another. For example, you want to know when a button goes from OFF to ON. This is called state change detection, or edge detection. This example shows how to detect when a button or button changes from off to on and on to off and how to count these changes. The circuit: - pushbutton attached to pin 2 from +5V - 10 kilohm resistor attached to pin 2 from ground by Tom Igoe This example code is in the public domain. http://www.arduino.cc/en/Tutorial/ButtonStateChange // this constant won't change: const int buttonPin = 2; // the pin that the pushbutton is attached to // Variables will change: int buttonPushCounter = 0; // counter for the number of button presses int buttonState = 0; // current state of the button int lastButtonState = 0; // previous state of the button void setup() { // initialize the button pin as a input: pinMode(buttonPin, INPUT); // initialize the LED as an output: //pinMode(ledPin, OUTPUT); // initialize serial communication: Serial.begin(9600); } void loop() { // read the pushbutton input pin: buttonState = digitalRead(buttonPin); // compare the buttonState to its previous state if (buttonState != lastButtonState) { // if the state has changed, increment the counter if (buttonState == HIGH) { //increase the buttonState by 1 buttonState++; // if the current state is HIGH then the button went from off to on. Serial.println("on"); Serial.print("number of button pushes: "); Serial.println(buttonPushCounter); } else { // if the current state is LOW then the button went from on to off: Serial.println("off"); Serial.println(" "); } // Delay a little bit to avoid inaccurate counting. delay(50); } // save the current state as the last state, for next time through the loop lastButtonState = buttonState; }
Führe eine Funktion einmalig aus, wenn ein Button gedrückt ist, und einmalig etwas anderes, wenn er losgelassen wird
int buttonDown =0; int inputPin = 5; //hier muss der Pin eingetragen sein, an dem der Button hängt [...] void loop(){ if (digitalRead(inputPin)==LOW){ buttonDown++; } if (buttonDown==1){ DoSomethingOnceWhenPressed(); } if (digitalRead(inputPin)==HIGH && buttonDown>0){ DoSomethingOnceWhenReleased(); buttonDown=0; } }
Mache etwas alle x-Durchläufe
int loopCounter=0; int alleXLoops = 15; //Führt eine Funktion alle 15 loops aus [...] void loop(){ loopCounter++; if (loopCounter%alleXLoops==0){ DoSomethingEveryXLoops(); } }