Alles über Arduino und Co.

Arduino für Anfänger #Befehle und Funktionen

Arduino für Anfänger #Befehle und Funktionen​

Hier findet Ihre einen Überblick über die Befehle und Funktionen des Arduino.
Struktur & Programmfluss
Grundsätzliche Sketch-Struktur

void setup(){
// wird nur beim Start durchläufen
}

void loop (){
// wiederholt sich kontinuierlich
}

Kontroll-Strukturen

if (x<5) {…} else {…}
while (x<5) {…}
for (int i=0; i++) {…}
break; // Schleife sofort beenden
continue; // weiter mit nächsten Iteration
switch (var) {
 case 1:
  …
  break;
 case 2:
  …
  break;
 default;
  …
}
return x; // x ist der Rückgabewert
return; // ohne Rückgabewert

Funktion

<ret.type> <name>(<params>){…} bespws. int double (int x){return x*2;}

Operatoren
Allgemein
=Zuweisung
+AddierenSubtrahieren
*Multiplizieren/Dividieren
%Modulo
==gleich!==ungleich
<=kleiner oder gleich
>=größer oder gleich
&&logisch UND||logisch ODER
!NICHT
Kombinierte Operatoren
++Variable um 1 erhöhen
Variable um 1 verringern
+=wie a=a+b
-=wie a=a-b
*=wie a=a*b
/=wie a=a/b
&=wie a=a&b
|=wie a= a|b
Bitoperatoren
&bitweise UND|bitweise ODER
^bitweise ODER~bitweise NICHT
<<um 1 Bit nach links schieben
>>um 1 Bit nach rechts schieben
Pointer
&Referenz: Adresse des Pointers
*Dereferenzierer: Ziel des Pointers
Eingebaute Funktionen
Pin Input / Output
Digital I/O

– Pins 0-13 A0-A5 (Arduino Uno, je nach Modell unterschiedlich) –
pinMode(pin,[INPUT, OUTPUT, INPUT_PULLUP])
int digitalread(pin)
digitalWrite(pin,[HIGH, LOW])

Analog In

– Pins A0-A5 (Arduino Uno, je nach Modell unterschiedlich)  –
int analogRead(pin)
analogReference(DEFAULT, INTERNAL, EXTERNAL])

PWM Out

– Pins 3, 5, 6, 9, 10, 11 (Arduino Uno, je nach Modell unterschiedlich) –
analogWrite(pin, value)

Advanced I/O

tone(pin, Freq_Hz)
tone(pin, Freq_Hz, Dauer_ms)
noTone(pin)
shiftOut(dataPin, clockPin, [MSBFIRST, LSBFIRST], WERT)
unsigned long pulseIn(pin,[HIGH, LOW])

Zeit

unsigned long millis() // läuft nach 50 Tagen über
unsigned long micros() // läuft nach 70 Minuten über
delay(msec)
delayMicrosecounds(usec)

Mathe-Funktionen
min(x,y)max(x-y)abs(x)
sin(rad)cos(rad)tan(rad)
sqrt(x)pow(Basis, Exponet)
constrain(x, Minl, Maxl)
map(val, fromL, fromH, toL, toH)
Zufallszahlen

randomSeed(seed) // lond oder int
long random(max) // 0 bis max -1
long random(min, max)

Bits und Bytes

lowByte(x)  highByte(x)
bitRead(x, bitn)
bitWrite(x, bitn, bit)
bitSet(x, bitn)
bitClear(x, bitn)
bit(bitn) // bitn: 0LSB 7=MSB

Konvertierung von Datentypen
char(Wert)byte(Wert)
int(Wert)word(Wert)
long(Wert)float(Wert)
// int(Fließkommazahl) wandelt bspws
// Fließkommazahl in Integer-Wert um
Externe Interrups

attachInterrupt(interrupt, func,[LOW, CHANGE, RISING, FALLING])
detachInterrupt(interrupt)
interrupts()
noInterrupts()

Variablen, Arrays und Daten
Datentypen
booleantrue|false
char-128127, ‘a’ ‘$’ etc.
unsigned char0255
byte0255
int-3276832767
unsigned int065535
word065535
long-21474836482147483648
unsigned long04294967295
float-3.4028e+383.4028e+38
doublewie float  
voidkein Rückgabewert / unbestimmt
Strings

char str1[8]={‘A’,’r’,’d’,’u’,’i’,’n’,’o’,’\0′};  // manuelle \0 Null-Terminierung
char str2[8]={‘A’,’r’,’d’,’u’,’i’,’n’,’o’};  // Compiler fügt Null-Terminierung hinzu
char str3[]=”Arduino”;
char str4[]=”Arduino”;

Nummerische Konstanten
123dezimal
0b01111011binär
0173oktal (Basis 8)
0x7Bhexadezimal (Basis 16)
123Uerzwinge unsigned
123Lerzwinge long
123ULerzwinge unsigned long
123.0erzwinge floating point
1.23e61.23+10^6 = 1230000
Eigenschaften von Variablen
staticVariable bleibt über Aufrufe erhalten
volatileVariable im RAM statt Register speicher
constKonstante, nur lesbar
PROGMEMim Flash ablegen
Arrays

int myPins[]={2,4,8,3,6};
int myPins[6];  // Array mit 6 ints
myInts[0]=42;  // Zuweisung der ersten Stelle
myInts[6]=12;  // Fehler, da 6. Variable, den 5. Platz belegt

Bibliotheken
Serial

– serielle Kommunikation mit dem PC oder via RX/TX –
begin(long Bautrate)  // bis 115200
end()
in available()  // Anzahl empfangener Bytes
int read()    // -1 wenn keine Daten
int peek()  // Lesen ohne den Puffer zu löschen
flush()  // Puffer löschen
print(data)  println(data)
write(byte)  write(char * string)
write(byte * data, size)
SerialEvent()  // wenn Daten fertig

SoftwareSerial.h

– serielle Komunikation über beliebige Pins –
SoftwareSerial(rxPin, txPin)
begin(long Bautrate)  // bis 115200
listen()  // immer nur eine serielle
isListing()  // kann empfangen
read, peek, print, println, write

EEPROM.h

– Zugriff auf nicht flüchtigen Speicher –
byte read(addr)
write (addr, byte)
EEPROM[index]

Servo.h

– Servo-Motoren steuern –
attach(pin,[min_uS, max_uS])
write(Winkel)  // 0-180
writeMicsosecounds(uS)  // 1000-2000; 1500 ist Mitte
int read()  // 0-180
bool attach()
detach()

Wire.h

– I²C-Kommunikation –
begin()
begin(addr)  Slave ansprechen
requestFrom(addr, count)
beginTransmission(addr)   // Schritt 1
send(byte)  // Schritt 2
send(char * string)
send(byte * date, size)
endTransmission()  // Schritt 3
int avaliable()  // verfügbare Bytes
byte receive()  // nächstes Byte lesen
onReceive(handler)
onRequest(handler)