Wenn man Arduino-Code auf einen ESP Chip übertragen möchte (den ESP8266, einen NodeMCU oder ein Wemos Board) kann es zu Problemen kommen: Die auf dem Board angegeben Pin-Nummern (D1, D2, D3 etc.) passen nicht zu den GPIO Pins des ESP-Chips. Möchte man mit “pinMode(D5,OUTPUT);” auf den D5-Pin (oder einen anderen Pin) zugreifen, meldet der ESP nach dem Kompilieren und Hochladen einen Fehler ähnlich wie dieser:
ets Jan 8 2013,rst cause:4, boot mode:(3,6)
wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v09f0c112
Das lässt sich umgehen, in dem man vorher die Pin-Belegung als Konstanten festlegt: Anschließend kann man problemlos auf die aufgedruckte Pin-Belegung zugreifen und die Ports mit dem Namen nutzen, der auch neben dem Pin aufgedruckt ist. Zum Zuweisen der Pins fügt man diesen Code zu Beginn der Setup-Routine ein:
static const uint8_t D0 = 16;
static const uint8_t D1 = 5;
static const uint8_t D2 = 4;
static const uint8_t D3 = 0;
static const uint8_t D4 = 2;
static const uint8_t D5 = 14;
static const uint8_t D6 = 12;
static const uint8_t D7 = 13;
static const uint8_t D8 = 15;
static const uint8_t D9 = 3;
static const uint8_t D10 = 1;
Anschließend kann man auf die Pins D0, D1, D2 bis D10 zugreifen: Dazu werden die benötigten Pins ebenfalls im Setup definiert und können anschließend im Loop angesprochen werden:
void setup() {
static const uint8_t D0 = 16;
static const uint8_t D1 = 5;
static const uint8_t D2 = 4;
static const uint8_t D3 = 0;
static const uint8_t D4 = 2;
static const uint8_t D5 = 14;
static const uint8_t D6 = 12;
static const uint8_t D7 = 13;
static const uint8_t D8 = 15;
static const uint8_t D9 = 3;
static const uint8_t D10 = 1;
pinMode(D5,OUTPUT);
pinMode(D8,INPUT);
pinMode(D9,INPUT);
}
void loop() {
digitalWrite(D5, LOW);
}