Definizione pins Wemos D1 mini pro

Non riesco a capirire come è assegnata la corrispondenza della porta D4 al pin2 di un Wemos D1 mini pro. Ho cercato anche su internet ma non ho trovato uno schema esaustivo che mi chiarisca le idee.

Saluti

Lello

D4 o GPIO2, cosa c'entra il pin 2

In un listato preso da internet come esempio ho trovato:

#define PIN 2
Adafruit_Neopixel strip = Adafruit_Neopixel(3, PIN, NEO_GRB + NEO_KHZ800);

Il #define si riferisce al pin in uscita al Wemos e io non ho capito a quale si riferisce. Nella pagina web poi non viene specificato e non c'è uno schema. Se è riferito al GPO2 come dici tu adesso mi è più chiaro. Saluti

Lello

Io vedo questo in internet:

LelloGi: Non riesco a capirire come è assegnata la corrispondenza della porta D4 al pin2 di un Wemos D1 mini pro.

Su Arduino fare:

a = digitalRead(4);

significa leggere lo stato del pin digitale 4, o D4. Sulle WeMos (ESP) la denominazione dei pin è differente, per cui se vuoi far riferimento alla porta D4 devi scrivere:

a = digitalRead(D4);

il che equivale, sempre in ambiente WeMos/ESP, a:

a = digitalRead(2);

Questo perché, come hanno detto, la porta GPIO2 o IO2 del WeMos corrisponde a D4 (cosa che puoi vedere pure dall'immagine che hai tu stesso postato, il pin Arduino è sulla serigrafia, il pin ESP usato col compilatore Arduino è quello in verde scuro).

Questo semplicemente perché quando compili per WeMos, sono implicitamente sempre presenti dei simboli per questa mappatura:

   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;

Quindi ad esempio per convertire programmi Arduino per farli andare su WeMos, devi cambiare i riferimenti ai pin da 2 a D2, 3 a D3, eccetera.

Grazie delle informazioni. Adesso mi è tutto chiaro! Saluti

Lello