lettura sequenziale variabile IPAddress

sono un principiante di c++ Sto usando un D1 mini Pro e volevo far visualizzare l indirizzo ip acquisito da DHCP su un display led 8x8 (wemos matrix led shield) visualizzando CIFRA X CIFRA l indirizzo ip
ho fatto vari tentativi ma le varie conversioni mi sporcano il dato e non ho piu correlazione

IPAddress myIPAddrStr ; //dichiaro il tipo
myIPAddrStr = (WiFi.localIP()); //assegno l IP alla variabile
int IP1 = (myIPAddrStr[0]); // assegno il primo ottetto
Serial.println (IP0); //stampalo
int IP2 = (myIPAddrStr[1]);
Serial.println (IP1);
int IP1 = (myIPAddrStr[2]);
Serial.println (IP2);
int IP1 = (myIPAddrStr[3]);
Serial.println (IP3);

ma cosi ho solo diviso l ip nelle 4 cifre
invece volevo avere la lettura delle singole cifre per farle visualizzare dal display led
Grazie

Aiutino??

Prima di tutto, nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione ...

... poi, essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Il tuo post è stato spostato nell'opportuna sezione del forum "Italiano"

Dopo aver fatto quanto su richiesto ...

... immagino che con:

riky67:
... Sto usando un D1 mini Pro

tu intenda una WeMos D1 mini Pro per cui ricordo sempre che questo è il forum di Arduino.cc dove si fornisce assistenza per problemi relativi a problematiche che coinvolgono Arduino, i suoi collegamenti e la sua programmazione.

Quindi, ben vengano domande che riguardano moduli ESP8266 collegati ad Arduino, ma domande per moduli che nulla hanno a che vedere con Arduino, prodotti da altri produttori che hanno semplicemente utilizzato/sfruttato l'IDE per sviluppare un loro "core" e facilitare la programmazione delle loro schede, come le schede WeMos, vanno poste sul forum di supporto delle WeMos. Grazie.

Guglielmo

P.S.: Come vedi NON ho chiuso il thread, ma ... non esageriamo eh ... :wink:

Mica ho capito che vuoi fare.
Un ip ha 4 pezzi, tipo 192.168.0.1 ma ci stanno anche i 3 punti. Tutta sta roba su un display 8x8 ?

la funzione WiFi.localIP() della libreria WiFi library di Arduino è utilizzabile e funzionante ANCHE con la mia schedina aimè piu "versatile" e meno costosa di una Arduino, me ne dispiace molto per cio
Il mio quesito forse l ho posto malamente ma credevo che il senso era semplice
Avendo solo una matrice di led 8x8 e un dato in una variabile di tipo IPAddress ...potrebbe essere lecito farlo visualizzare magari cifra x cifra in un unica matrice di led 8x8 "mono carattere"??
Cosa uso e dove uso credo ininfluente il problema è generico di programmazione
Ripropongo domanda in modo meno dispersivo e piu diretto:
Come posso scandire CIFRA per CIFRA una variabile di tipo IPAddress in modo da poterlo poi passare alla funzione di visualizzazione del display??

Grazie della disponibilità

p.s.
Tale quesito con l idea di voler condividere soluzioni utili A CHIUNQUE voglia usare l ide Arduino con librerie "standard" e quindi anche dall originale Arduino mi pareva lecito

riky67:
Tale quesito con l idea di voler condividere soluzioni utili A CHIUNQUE voglia usare l ide Arduino con librerie "standard" e quindi anche dall originale Arduino mi pareva lecito

... ma secondo te i costi di questo forum li paga la WeMos o chi ?

E comunque, come hai visto NON ho chiuso il thread, proprio perché comunque era una domanda abbastanza generica.

Guglielmo

Hai 3 strade:

  1. usi le String (che possono dare problemi di memoria) e che sono una classe/oggettoString ipStr=myIPAddrStr .toString();inoltre ipStr non è stringa classica del C (array di char null terminated) ma un oggetto.

  2. visto che hai le 4 parti dell'ip, li converti uno per uno in stringa classica del C con itoa()

  3. le 4 parti le scrivi dentro ad una stringa classica C usando snprintf

char buf[16];     // max dimensione ip,   XXX.XXX.XXX.XXX  15 char + 1 di fine stringa
snprintf(buf,16,"%d.%d.%d.&d",IP1,IP2,IP3,IP4);

Quindi buf contiene l'ip come testo. Per stamparlo carattere per carattere cerca in internet un codice per lo scrolling di frasi su una matrice 8x8, c'e' ne sono molti. Mi pare anche alcune lib per le matrici 8x8 hanno dei comandi per lo scroll
Per scrivere sul matrix usi una lib ?

Ma scusate:

Serial.println (WiFi.localIP());

Cos'ha che non va?

SukkoPera:
Ma scusate:
Serial.println (WiFi.localIP());
Cos'ha che non va?

Ma hai letto dove vuole visualizzare, cifra per cifra, il valore ? :wink:

Guglielmo

Ahhhh! No, avevo guardato solo il codice.

Beh, una volta che hai i numeri dovrebbe bastare:

byte b = ip[0];
byte n1 = b / 100;
byte n2 = (b % 100) / 10;
byte n3 = b % 10;

Da ripetere per i 4 byte dell'indirizzo, ovviamente.