83% fanden dieses Dokument nützlich (6 Abstimmungen)
2K Ansichten

Arduino Cheat Sheet Für ESP32 - V3

Das Dokument enthält eine Übersicht über die wichtigsten Programmstrukturen, Operatoren, Funktionen und Bibliotheken für die Arduino-Programmierung mit dem ESP32. Es werden Grundlagen wie Schleifen, Bedingungen, Datentypen sowie Erweiterte I/O, PWM, Serial Kommunikation und EEPROM Speicher beschrieben.

Hochgeladen von

Herr Hurz
Copyright
© © All Rights Reserved
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
83% fanden dieses Dokument nützlich (6 Abstimmungen)
2K Ansichten

Arduino Cheat Sheet Für ESP32 - V3

Das Dokument enthält eine Übersicht über die wichtigsten Programmstrukturen, Operatoren, Funktionen und Bibliotheken für die Arduino-Programmierung mit dem ESP32. Es werden Grundlagen wie Schleifen, Bedingungen, Datentypen sowie Erweiterte I/O, PWM, Serial Kommunikation und EEPROM Speicher beschrieben.

Hochgeladen von

Herr Hurz
Copyright
© © All Rights Reserved
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
Sie sind auf Seite 1/ 2

Arduino Cheat Sheet für ESP32 Hauptquelle: Arduino Language Reference

https://arduino.cc/de/Reference/

Programmstruktur Operatoren Standard - Funktionen Bibliotheken


Basis Programm Struktur Allgemeine Operatoren Pin Input/Output Math Serial - Komm. mit PC oder üb. RX/TX
void setup () { = Zuweisung Digital I/O - alle Pins, 34-39 nur In min (x, y) max (x, y) abs (x) begin (long speed) // bis 921600
// einmal zu Beginn ausführen + plus - minus pinMode (pin, sin (rad) cos (rad) tan (rad) begin (speed, config) // Config z.B.
} * mal / geteilt  
[INPUT, OUTPUT, INPUT_PULLUP]) sqrt (x) pow (base, exponent) Serial7E1 od.
end () Serial8N1
void loop () { % Modulo (Rest der GZ-Division) int digitalRead (pin) constrain (x, minval, maxval) int available () #Bytes angekommen
// wiederholt ausführen == Gleich wie != Ungleich digitalWrite (pin, [HIGH, LOW]) map (val, fromL, fromH, toL, toH) int read () -1, wenn nichts da
} < Kleiner als > Größer als   int peek () // lesen ohne löschen
<= Kleiner oder gleich Analog In - Pins A0-A19
Random Numbers flush () // Puffer leeren
Kontroll-Strukturen >= Größer oder gleich int analogRead (pin)
randomSeed (seed) // long oder int print (data) println (data)
if (x < 5) { ... } && AND (logisch)|| ODER (log.) analogReference (
long random (max) // 0 bis max-1 write (byte) write (char * string)
else if (x < 10) { ... } ! NOT (logisch) [DEFAULT, INTERNAL, EXTERNAL])
else { ... } long random (min, max) write (byte * data, size)
PWM
  Out - Beim ESP32 mit ledc() !
while (x < 5) { ... } SerialEvent () // wird aufgerufen,
Zusammengesetzte Operatoren ledcSetup (Kanal, Freq, Bits) wenn Daten da sind
do { ... } while (x < 5); // mind. 1mal Bits and Bytes
++ Inkrement / hochzählen ledcAttachPin (Pin, Kanal)
for (int i = 0; i < 10; i++) { ... } ledcWrite (Kanal, Wert) lowByte (x) highByte (x) SoftwareSerial.h - Komm. an bel. Pin
-- Dekrement / runterzählen
break ; // Schleife abbrechen analogWrite (Pin, Wert) nur für bitRead (x, bitn) SoftwareSerial (rxPin, txPin)
+= Addition mit Zuweisung
Uno, Nano, ESP8266 bitWrite (x, bitn, bit) begin (long speed) // bis 115200
continue ; // nächste Wiederholung -= Subtraktion mit Zuweisung
Advanced I/O bitSet (x, bitn) listen () // nur 1 Funktion
switch (var) { *= Multiplikation mit Zuweisung
tone (pin, freq_Hz) bitClear (x, bitn) isListening () // gleichzeitig
case 1: ... /= Division mit Zuweisung
tone (pin, freq_Hz, duration_ms) bit (bitn) // bitn: 0=LSB 7=MSB read, peek, print, println, write
break ; &= Bitweise UND mit Zuweisung
noTone (pin) // Genauso wie bei Serial Bibliothek
case 2: ... |= Bitweise ODER mit Zuweisung
shiftOut (dataPin, clockPin, Type Conversions
break ; EEPROM.h - nicht-flüchtiger Speicher
[MSBFIRST, LSBFIRST], value) char (val) byte (val)
default :... Bitweise Operatoren byte read (addr)
unsigned long pulseIn (pin, int (val) word (val)
} & bitweise UND | bitweise ODER write (addr, byte)
[HIGH, LOW]) long (val) float (val)
 
Funktions-Definitionen ^ bitweise XOR ~ bitweise Neg. EEPROM[index] // Array-Zugriff
<< shift links >> shift rechts Time (ESP32-Timer siehe Rückseite)
<ret. type > < name >(< params >) { ... } Servo.h - Steuerung von Servos
unsigned long millis () External Interrupts
z.B. int doppel(int x) {return x*2;} Pointer Zugriff (Zeiger) attach (pin, [min_uS, max_uS])
// Überlauf nach 50 Tagen attachInterrupt (interrupt, func,
return x; // Datentyp wie <ret. type> & Referenz: liefert einen Pointer write (angle) // 0 bis 180 °
unsigned long micros () [LOW, CHANGE, RISING, FALLING])
return ; // bei void-Funktionen * Dereferenz: Inhalt, auf den writeMicroseconds (uS)
der Pointer zeigt // Überlauf nach 70 Minuten detachInterrupt (interrupt)
delay (msec) interrupts () // 1000-2000; 1500 ist die Mitte
delayMicroseconds (usec) noInterrupts () int read () // 0 bis 180 °
bool attached ()
Variablen, Arrays und Definitionen detach ()

Datentypen Numerische Konstanten Sensor_VP/VN:


Vcc3.3V GND SPI-Bus: MOSI, MISO, Wire.h - I²C Kommunikation
Ausgang des Hall- SCLK, SS (optional)
boolean true| false 123 Normale Dezimalzahl Elementes, wird RESET EN GPIO23 MOSI begin () // Als Master teilnehmen
intern gemessen I2C-Bus, externe Pull-Up
char -128- 127, 'a' '$' etc. 0b 01111011 Binäre schreibweise Widerstände erforderlich.
begin (addr) // Als Slave mit addr
SENS_VN ADC0 GPIN36 GPIO22 SCL
unsigned char 0- 255 0 173 Oktal – vermeiden! requestFrom (address, count)
GPIO34, 35, 36 und 39 sind nur Input,

SENS_VP ADC3 GPIN39 ESPRESSIF GPIO1 TxD0 LED1


byte 0- 255 0x 7B Hexadezimal – 0 bis F USB beginTransmission (addr) // Schritt 1
daher hier als GPIN bezeichnet.

ESP32 WROOM Serielle Schnittstelle intern


short -32768- 32767 123 U Erzwinge unsigned ADC6 GPIN34 GPIO3 RxD0
mit dem CP2102 ver- send (byte) // Schritt 2
unsigned short 0- 65535 123 L Erzwinge long CAN-RX ADC7 GPIN35 GPIO21 SDA bunden (470Ohm an RxD) send (char * string)
int und unsigned int bei ESP32 mit 32Bit 123 UL Erzwinge unsigned long TOUCH9 ADC4 GPIO32 GND
GPIO13, 25, 26, 27, 32, 33 send (byte * data, size)
haben keinen internen Pull-
wie (unsigned) long 123 .0 Erzwinge Kommazahl Up Widerstand. Bei den endTransmission () // Schritt 3
TOUCH8 ADC5 GPIO33 GPIO19 MISO
long -2147483648 - 2147483647 (=231-1) 1.23 e 6 1.23*10^6 = 1230000 übrigen aktivierbar mit
PinMode(Pin, INPUT_PULLUP)
int available () //#Bytes angekommen
DAC1 ADC18 GPIO25 GPIO18 SCLK
unsigned long 0 – 4294967295 (=232-1) byte receive () //Nächstes Byte
float -3.4028e+38 - 3.4028e+38 Qualifier DAC2 ADC19 GPIO26 GPIO5 SS CAN-TX onReceive (handler) lesen
static Variable bleibt erhalten AZ-Delivery
double ±5,0e−324 - ± 1,7e+308 TOUCH7 ADC17 GPIO27 GPIO17 CAN-Bus benötigt onRequest (handler)
void Kein Rückgabewert oder Parameter volatile im RAM (notwendig für ISR) Treiber MCP2551

const Nicht veränderbar


TOUCH6 ADC16 GPIO14 ESP32 GPIO16
Strings TOUCH5 ADC15 GPIO12 NodeMCU Touch1 geht
PROGMEM im Flashspeicher GPIO4 ADC10 TOUCH0
char str1[8] =
GND GPIO0 ADC11 TOUCH1
nicht wegen
interner Be- by Bernhard Spitzer
{'A','r','d','u','i','n','o','\0'}; Arrays schaltung. Version: 2021-04-27
TOUCH4 ADC14 GPIO13 LED1 GPIO2 ADC12 TOUCH2 (Boot-Taster)
// C-String endet mit NULL-Zeichen int myPins[] = {2, 4, 8, 3, 6};  
char str2[8] = "Arduino"; // \0 mitzählen int myInts[6]; // Array mit 6 Werten Alle GPIO nur bis SD_DATA2 GPIO9 GPIO15 ADC13 TOUCH3 Quelle: https://github.com/liffiton/Arduino-Cheat-Sheet/
CP2102
char str3[] = "Arduino"; myInts[0] = 42; // Zuweisung an den 3,3V tolerant!
SD_DATA3 GPIO10
USB/Ser
GPIO8 SD_DATA0 Adapted from:
SD_XX verbindet den
String str4 = "Arduino"; // String-Klasse // ersten Wert Externe 5V Reset Boot internen FLASH- - Original: Gavin Smith
Signale nur über SD_CMD GPIO11 GPIO7 SD_DATA1
String str5 = "Sensor-Wert: " myInts[6] = 12; // Fehler! Index Spannungsteiler
Speicher => GPIO6-
11 nicht verwenden! - SVG version: Frederic Dufourg
+ analogRead(A0); anschließen! Vin 5V GPIO6 SD_CLK
// von 0 bis 5 USB
- ESP32 board drawing: Bernhard Spitzer
Arduino Cheat Sheet für ESP32 Hauptquelle: Arduino Language Reference
https://arduino.cc/de/Reference/

WLAN - Funktionen Bluetooth - Funktionen Timer - Funktionen


WiFi.h - WLAN-Funktionen, allgemein BluetoothSerial.h - Bluetooth zur Kommunikation Der ESP32 hat 4 Universaltimer mit 64 Bit Zählumfang
Eingangstakt 80MHz mit Vorteiler (:1 bis :65535)
Zunächst das WLAN-Kennwort angeben: Zunächst eine Objektinstanz erzeugen:
const char* ssid = "NetworkName"; BluetothSerial SerialBT; // Name ist beliebig hw_timer_t *MeinTimer = NULL; // Zeiger auf eine Timer-Struktur
const char* pass = "Password"; In Setup(): MeinTimer = timerBegin(Nummer, Teiler, Richtung); // Nummer 0-3
Alternative (besser beim Weitergeben von Programmen): SerialBT.begin("Geräte_1234"); // Eindeutiger Name // Teiler 1-65535, true: Aufwärtszähler / false: Abwärtszähler
#include <credentials.h> // im LIB-Verzeichnis anlegen, timerAlarmWrite(MeinTimer, Alarmwert, Reload); // 64 Bit Alarmwert
// Inhalt: die beiden Zeilen von oben Danach können die gleichen Funktionen wie bei der // Reload true: nach Alarm bei 0 anfangen / false: weiterzählen
WiFi.begin(ssid, pass); // Startet WLAN zu ssid als Client seriellen Schnittstelle genutzt werden: timerAttachInterrupt(MeinTimer, &onTimer, true); // ISR onTimer()
WiFi.begin(ssid); // Verbindung mit offenem WLAN ssid SerialBT.availabe(); // Empfangsdaten vorhanden? timerAlarmEnable(MeinTimer); // Alarmtimer starten
IPAddress myIP = WiFi.localIP(); // IP-Adresse auslesen SerialBT.println("Text"); timerStart(MeinTimer); // Timer starten
Zeichen = SerialBT.read(); uint64_t timerRead(MeinTimer); // Zählerstand lesen (64Bit!)
WiFi.status( ); // Lese Status der Verbindung z.B. WL_CONNECTED StringVar = SerialBT.readString(); timerWrite(MeinTimer, uint64_t Wert); // Zählerstand setzen
WiFi.BSSID(bssid); // Liest die MAC-Adresse des Routers SerialBT.end();
long rssi = WiFi.RSSI( ); // Liest die Signalstärke aus Weitere Funktionen findet man im Benutzerprofil oder in %appdata%
WiFi.disconnect( ); // Verbindung trennen Weitere Funktionen für die Verbindungssteuerung: %userprofile%\Documents\Arduino\hardware\espressif\esp32\cores\esp32\esp32-hal-tmer.h
void enableSSP(); // Secure Pairing einschalten %appdata%\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32\esp32-hal-t
imer.h
bool setPin(*pin); // z.B. SerialBT.setPin("1234");
WiFiAP.h - WLAN-Funktion Accesspoint bool connect(remoteName); // neue Verbindung
WiFi.SoftAP(ssid, pass); // Startet einen Accesspoint bool connect(); // gespeicherte Verbindung
ESP32-S CPU-Modul mit
Wifi.SoftAP(ssid); // offener Accesspoint bool connected(timeout=0);// Verbindung ok? interner Antenne und u.FL-
IPAddress myIP = WiFi.softAPIP(); // IP-Adresse auslesen bool disconnect(); Stecker für externe Antenne.
CF-Card
bool unpairDevice(remoteAddress[]); Widerstandsbrücke
const char * softAPgetHostname(); // AP-Name auslesen Vin 5V Sockel Vcc3.3V
prüfen, ob die richtige
bool softAPsetHostname(const char * hostname); // AP-Name festlegen Callback-Funktion für Verbindungs-Ereignisse: Antenne genutzt wird! GND GPIO16
SerialBT.register_callback(BT_Comm); // in Setup() ESP32-S
ist unten
String softAPmacAddress(void); // MAC-Adresse festlegen void BT_Comm(esp_spp_cb_event_t event, TOUCH5 ADC15 GPIO12 GPIO0 ADC11 TOUCH1
uint8_t* softAPmacAddress(uint8_t* mac); // MAC-Adresse auslesen esp_spp_cb_param_t *param) {
if(event == ESP_SPP_SRV_OPEN_EVT){ TOUCH4 ADC14 GPIO13 GND
Serial.println("Client verbunden"); } 0R Widerstände
TOUCH3 ADC13 GPIO15 5V Vcc
HTTP(S) - Server
3.3V Für 3.3/5V
if(event == ESP_SPP_CLOSE_EVT ){
Serial.println("Client getrennt"); } TOUCH6 ADC16 GPIO14 GPIO3 RxD0
WebServer.h - für HTTP und HTTPS Verbindungen }
TOUCH2 ADC12 GPIO2 GPIO1 TxD0
Zunächst eine Objektinstanz erzeugen: Weitere Event-Nummern und Definitionen: Kamera-IF
WebServer server(80); // Port 80 für HTTP, Port 443 für HTTPS docs.espressif.com/projects/esp-idf/en/latest/esp32 TOUCH0 ADC10 GPIO4 GND Serielle Schnittstelle
/api-reference/bluetooth/esp_spp.html
GPIO4 LED ohne USB-Adapter
In Setup(): Blitz-LED an GPIO4, parallel mit Blitz
server.begin(); // Webserver starten, WLAN vorher verbinden BluetoothA2DPSource.h und BluetoothA2DPSink.h CF-Sockel HS2_DATA1 => LED Reset unten Schaltplan:
Bluetooth zur Audio-Übertragung (Quelle, Senke) flackert bei Karten-Zugriff! https://raw.githubusercontent.com
server.onNotFound(Send404);// Callback-Funktion für ungültige URL
z.B. github.com/pschatzmann/ESP32-A2DP (Abhilfe: SPI-Modus f. CF-Karte)
ESP32-CAM /SeeedDocument/forum_doc/mas
server.on("/", HandleRoot);// Callback-Funktion für Web-Root ter/reg/ESP32_CAM_V1.6.pdf
Weitere URLs: weitere Callback-Fkt. oder in HandleRoot abfragen
Sensor_VP/VN:
Webseiten ausliefern mit Status-Code und Inhaltstyp:
server.send(200, "text/html", WebPage() ); // WebPage liefert String Touch und Hall-Sensor Ausgang des Hall-
Elementes, wird
intern gemessen
RESET
Vcc3.3V

EN
GND

GPIO1 TxD0 Serielle Schnittstelle intern


void Send404(void) { // hier als Funktion Send404() mit dem CP2104 ver-
server.send(404, "text/plain", "Internet kaputt"); Zum Auslesen der Sensoren muss keine Bibliothek SENS_VN ADC0 GPIN36 GPIO3 RxD0 bunden (470Ohm an RxD)
// sende unformatierten Text eingebunden werden. SENS_VP ADC3 GPIN39 ESPRESSIF Vcc3.3V
} USB
ESP32 WROOM
Der ESP32 hat bis zu 10 nutzbare Touch-Eingänge, TOUCH9 ADC4 GPIO32 GPIO22 SCL I2C-Bus, externe Pull-Up
Widerstände erforderlich.
Auswerten von Server-Argumenten (für Formulare, Benutzereingaben): Teilweise nicht nutzbar (z.B. GPIO0/Touch1) wg. TOUCH8 ADC5 GPIO33 GPIO21 SDA
void HandleRoot(void) { interner Beschaltung auf der Platine. GPIO13, 25, 26, 27, 32, 33
// DEBUG Ausgabe, zeigt alle Parameter des Aufrufs Die Touch-Pins müssen nicht mit PinMode ADC6 GPIN34 GND haben keinen internen Pull-
Serial.printf("URI: %s, ", server.uri()); initialisiert werden. CAN-RX ADC7 GPIN35 GND
Up Widerstand. Bei den
übrigen aktivierbar mit
Serial.print("Method: "); PinMode(Pin, INPUT_PULLUP)
Serial.println((server.method() == HTTP_GET) ? "GET" : "POST"); byte TouchValue = touchRead(T0); // T0-T9 DAC1 ADC18 GPIO25 GPIO19 MISO

Serial.printf(", Arguments: %s\n", server.args()); DAC2 ADC19 GPIO26 Reset GPIO23 MOSI SPI-Bus
// Alle Server-Argumente ausgeben Rückgabewert 0 – 100, Touch-Ereignis bei
for (uint8_t i = 0; i < server.args(); i++) { Schwellwert 20-30 (je nach Beschaltung): TOUCH7 ADC17 GPIO27
LED5
GPIO18 SCLK

Serial.printf("%s : %s\n", server.argName(i), server.arg(i)); bool digitalTouch(T_Chan) { TOUCH6 ADC16 GPIO14 GPIO5 SS CAN-TX LED5
} if(touchRead(T_Chan) < 30) return TRUE; Wemos
// ENDE DEBUG, jetzt nach bekannten Argumenten schauen; else return FALSE; TOUCH5 ADC15 GPIO12 Lolin32 Vcc3.3V CAN-Bus benötigt
Treiber MCP2551
if(server.hasArg("r") || server.hasArg("g") || server.hasArg("b")) } TOUCH4 ADC14 GPIO13 GPIO17
{ uint16_t red, green, blue; String Temp; Touch1 geht nicht wg.
Vin 5V GPIO16 interner Beschaltung.
Temp = server.arg("r"); // Server sendet Strings GPIO34, 35, 36 und 39
red = Temp.toInt(); // String in Zahlumwandlen Der ESP32 hat einen internen Hall-Sensor sind nur Input, daher hier
GND Charge GPIO4 ADC10 TOUCH0
als GPIN bezeichnet.
// jetzt was damit machen, z.B. LED-Farbe setzen (Magnetfeld), der aber nur bei den Modulen ohne CP2104
USB/Ser
} Metalldeckel sinnvoll nutzbar ist. Sonst werden GPIO0 ADC11 TOUCH1

server.send(200, "text/html", WebPage() ); // neue Webseite senden nur sehr starke Neodym-Magnete erkannt. Akku-Anschluß für eine LiIo- Akku + GND
Zelle mit 4,2V Spannung.
} Ladeschaltung mit TP4054
Weitere Möglichkeiten siehe Programmbeispiele in Arduino! byte HallValue = hallRead( ); // nur ein Sensor (max 400mA Ladestrom) Akku -
USB
GPIO2 ADC12 TOUCH2

GPIO15 ADC13 TOUCH3

Das könnte Ihnen auch gefallen