•
•
Sinn und Zweck der Arduino Hardware-Boards ist es
im Wesentlichen einen Zugang zum
Mikrocontroller, dem Herz des jeweiligen Boards, zu
bekommen.
Dies wird zum einen durch die Pin-Buchsen außen
am Board realisiert, durch die man jeden einzelnen
Pin des Mikrocontrollers kontaktieren kann. Zum
anderen haben die allermeisten Boards eine USB-
Buchse, über die man den Mikrocontroller
komfortabel per Latop und Software
programmieren kann.
Die zweite Hauptkomponente der Plattform ist die Arduino
Software. Diese hat eine anwenderfreundliche Oberfläche
und kann durch die einfache Arduino Programmiersprache
genutzt werden. Außerdem existiert eine große Anzahl an
Bibliotheken für Arduino, die man in seinen Programmcode,
den sogenannten „Sketch“ integrieren kann.
Bibliotheken sind vorgefertigter Code, der einem
hilft, bestimmte Funktionen in den eigenen Sketch zu
integrieren, was enorm hilfreich ist, da man nicht
immer „das Rad neu erfinden“ muss.
Anhand des Breadboards ist es möglich
Schaltungen aufzubauen die mit den
verschiedenen Pins des Arduino verbunden
werden und darüber mit einem Programm
angesteuert werden.
Dies erlaubt es Sensoren und Aktoren
abzulesen, resp. zu aktivieren.
Bei Anschluss per USB
•
•
;
SEMIKOLON
;
• •
•
• •
• •
•
•
HTTPS://[Link]/REFERENCE/DE/
Können als INPUT (Eingang, Können nur 2
Sensor!) oder OUTPUT Unterschiedliche Zustände
(Ausgang, Aktor!) benutzt darstellen oder lesen: Low, 0
werden (0 Volt) oder High, 1 (5 Volt)
•
•
•
•
•
•
• INT SWITCHSTATE = 0; // SWITCHSTATE KANN NUR GANZE ZAHLEN
ENTHALTEN
• VOID SETUP()
• {
• PINMODE(3,OUTPUT); // PIN 3 SCHALTET LED GRÜN AN/AUS
• PINMODE(2,INPUT); // PIN 2 LIEST DEN ZUSTAND DES TASTERS
• }
• VOID LOOP()
• {
• SWITCHSTATE = DIGITALREAD(2); // ZUSTAND DES TASTERS LESEN
• IF (SWITCHSTATE == LOW) // TASTER NICHT GEDRÜCKT/AKTIVIERT!
• DIGITAL WRITE (3,HIGH);
• ELSE // TASTER WIRD GEDRÜCKT!
• DIGITAL WRITE (3,LOW);
• DELAY(250);
}
Ein Pull-down-Widerstand wird in elektronischen Schaltungen verwendet, um
sicherzustellen, dass ein digitales Eingangssignal in einem bekannten Zustand ist, wenn kein
Eingangssignal vorhanden ist.
In einem 5-V-Stromkreis wird ein Pulldown-Widerstand zwischen den digitalen Eingangspin
eines Mikrocontrollers oder eines anderen digitalen Logikgeräts und Masse (0 V) geschaltet.
Ein üblicher Wert für Pulldown-Widerstände in 5V Schaltungen liegt bei etwa 10 kΩ bis 100
kΩ.
Der Wert des Pull-down-Widerstands ist hoch genug gewählt, um den durch ihn fließenden
Strom zu begrenzen, wenn der Schalter geschlossen ist oder das Eingangssignal vorhanden
ist, aber niedrig genug, um sicherzustellen, dass die Spannung am digitalen Eingangspin
auf den gewünschten Low-Pegel heruntergezogen wird, wenn kein Eingangssignal
vorhanden ist.
UP
EXTERN
DOWN
EXTERN
UP/DOWN
void setup() {
[Link](9600);
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
int sensorVal = digitalRead(2);
UP
[Link](sensorVal);
if (sensorVal == HIGH)
{
digitalWrite(13, LOW);
INTERN
}
else {
digitalWrite(13, HIGH);
}
}
void setup() {
[Link](9600);
pinMode(2, INPUT_PULLDOWN);
pinMode(13, OUTPUT);
}
void loop() {
int sensorVal = digitalRead(2);
DOWN
[Link](sensorVal);
if (sensorVal == LOW)
{
digitalWrite(13, LOW);
INTERN
}
else {
digitalWrite(13, HIGH);
}
}
• NUR ALS INPUT
•
0 512 1023
0V 2,5V 5V
analogRead(pinNumber)
• INT SENSORVAL;
• VOID SETUP() {
• [Link](9600); // ÖFFNET EINE SERIELLE SCHNITTSTELLE
• PINMODE(2,OUTPUT);
• DIGITALWRITE(2, LOW);
• }
•
VOID LOOP() {
• SENSORVAL = ANALOGREAD(A0);
• IF (SENSORVAL<512)
• DIGITAL WRITE (2,HIGH);
• ELSE
• DIGITAL WRITE (2,LOW);
• DELAY(50);
• }
PWM
PWM
Die PWM ist eine digitale Modulationsart, bei der eine technische Größe (z. B. elektrische
Spannung) zwischen zwei Werten wechselt. Dabei wird bei konstanter Frequenz ein
Rechteckimpuls moduliert, dessen Weite, Breite bzw. Länge variiert.
OBWOHL DAS SIGNAL DER PULSWEITENMODULATION EINE WECHSELSPANNUNG BZW. EHER MISCHSPANNUNG IST,
LÄSST SICH DAMIT DIE LEISTUNG VON GLEICHSTROMVERBRAUCHERN WIE LEUCHTDIODEN, MOTOREN,
HEIZWIDERSTÄNDEN UND ÄHNLICHES REGULIEREN. ANSTATT DIESE BAUTEILE UND KOMPONENTEN ÜBER DIE HÖHE
DER BETRIEBSSPANNUNG ZU STEUERN, WIRD PER PULSWEITENMODULATION EINFACH DIE SPANNUNG BZW. DER
STROM FÜR EINE KURZE ZEIT UNTERBROCHEN. AUF DIESE WEISE ENTSTEHT EIN BESTIMMTES VERHÄLTNIS ZWISCHEN
SPANNUNGSIMPULSEN UND -PAUSEN. DAS VERHÄLTNIS ENTSCHEIDET ÜBER DIE EFFEKTIVSPANNUNG.
• BEISPIEL: ENTSPRICHT DAS VERHÄLTNIS ZWISCHEN PULS (HIGH) UND PAUSE (LOW) JE 50%, DANN ERGIBT SICH
EINE EFFEKTIVSPANNUNG VON 2,5 V BEI EINER IMPULSSPANNUNG VON 5 V.
~
•
analogWrite(~pinNumber, Pulsbreite)
• CONST INT LEDPIN = 9;
• CONST INT SENSORPIN = A1;
• INT VALUE = 0;
• INT SENSORVALUE = 0;
•
VOID SETUP() {
• PINMODE(LEDPIN,OUTPUT);
• }
•
VOID LOOP() {
• SENSORVALUE = ANALOGREAD(SENSORPIN);
• VALUE = SENSORVALUE / 4;
• ANALOGWRITE(LEDPIN,VALUE);
• }
Über den Seriellen Monitor kann der Arduino über die USB-
Schnittstelle mit dem Benutzer kommunizieren.
Die Kommunikation ist in beide Richtungen möglich:
Ausgabe von Text oder den aktuellen Wert einer Varia-
blen mit ➨[Link]()
Eingabe und anschließende Auswertung von Text mit
➨[Link]()
Folgender in rot angegebener Befehl aktiviert den seriellen Monitor:
void setup()
{
[Link](9600); Dieser Befehl muss sich im setup() Teil befinden!
}
Der serielle Monitor kommuniziert mit dem Arduino Programm (am
PC oder Mac) mit einer Übertragungsgeschwindigkteit von 9600
Baud (Bits/Sekunde).
Folgender in rot angegebener Befehl schreibt Informationen im seriellen
Monitor raus:
void setup()
{
[Link](9600);
}
void loop()
{
[Link](“Wert:”); Diese Befehle sollten sich im loop() Teil befinden!
[Link](meineVariable);
}
void setup()
{
[Link](9600);
}
void loop()
{
// Wert von analogRead muss in einen String umgewandelt werden
[Link]("aktueller Wert: " + String(analogRead(A0)));
delay(200);
}
Arduino benutzt einen 10 Bit A/D Wandler und Digitale Pins die mit 7 Bit PWM
funktionieren.
Muss man Sensorwerte vom A/D Wandler benutzen um einen Aktor mit
PWM anzusteuern so ist eine Umrechnung notwendig.
Arduino bietet dafür den map Befehl an.
Dieser Befehl passt den Wert in einer Skala an den entsprechenden Wert in
einer anderen Skala an.
Der map Befehl wird wie folgt benutzt:
pwmWert = map(ADWert, Skala1_Anfang, Skala1_Ende, Skala2_Anfang, Skala2_Ende)
Die Parameter werden mit einem Komma voneinander getrennt.