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
+ Addieren Subtrahieren
* 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
123 dezimal
0b01111011 binär
0173 oktal (Basis 8)
0x7B hexadezimal (Basis 16)
123U erzwinge unsigned
123L erzwinge long
123UL erzwinge unsigned long
123.0 erzwinge floating point
1.23e6 1.23+10^6 = 1230000
Eigenschaften von Variablen
static Variable bleibt über Aufrufe erhalten
volatile Variable im RAM statt Register speicher
const Konstante, nur lesbar
PROGMEM im 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)