Visualizzare testo/string iot cloud

salve a tutti , sto realizzando una piccola stazione meteo IOT , per quanto riguarda sensori ecc .. tutto ok ma sto trovando difficolta per quanto riguarda la visualizzazione della direzione del vento.
ho sviluppato questo codice che con il serial monitor funziona perfettamente :

int DI2=digitalRead(6);
int DI3=digitalRead(7);
int DI4=digitalRead(8);
int DI5=digitalRead(9);
 char direzione_vento;


//String vento;
 if((DI5==HIGH)&&(DI4==LOW)&&(DI3==LOW)&&(DI2==LOW))
    { direzione_vento="SUD";
    Serial.print("direzione vento:");
    Serial.println("SUD");
      }
    if((DI5==HIGH)&&(DI4==HIGH)&&(DI3==LOW)&&(DI2==LOW))
    { direzione_vento="sud-est";
        Serial.print("direzione vento:");
    Serial.println("sud-est");}
    if((DI5==LOW)&&(DI4==HIGH)&&(DI3==LOW)&&(DI2==LOW))
    { direzione_vento="est";
        Serial.print("direzione vento:");
    Serial.println("est");}
    if((DI5==LOW)&&(DI4==HIGH)&&(DI3==HIGH)&&(DI2==LOW))
    { direzione_vento="nord-est";
        Serial.print("direzione vento:");
    Serial.println("nord-est");}
    if((DI5==LOW)&&(DI4==LOW)&&(DI3==HIGH)&&(DI2==LOW))
    { direzione_vento="nord";
        Serial.print("direzione vento:");
    Serial.println("nord");}
    if((DI5==LOW)&&(DI4==LOW)&&(DI3==HIGH)&&(DI2==HIGH))
    { direzione_vento="nord-ovest";
        Serial.print("direzione vento:");
    Serial.println("nord-ovest");
    }
    if((DI5==LOW)&&(DI4==LOW)&&(DI3==LOW)&&(DI2==HIGH))
    { direzione_vento="ovest";
        Serial.print("direzione vento:");
    Serial.println("ovest");
    }
    if((DI5==HIGH)&&(DI4==LOW)&&(DI3==LOW)&&(DI2==HIGH))
    { direzione_vento="sud ovest";
        Serial.print("direzione vento:");
    Serial.println("sud ovest");
    }

ma non riesco a compilarlo in modo da poterlo visualizzare sulla dashbord di arduino cloud.
grazie per l'aiuto !!!

Ciao Graziano, e benvenuto nella sezione italiana del forum di Arduino. Nella tua presentazioni dici di avere esperienza nella programmazione di PIC, per curiosità, con che linguaggio hai programmato i PIC? Perchè il codice che hai scritto contiene un errore evidente che chi programma in C/C++ dovrebbe conoscere bene...

Ciao, Ale.

Programmo in C .

Bene, quindi dovresti sapere che:

char direzione_vento;
direzione_vento="SUD";

è decisamente sbagliato, per vari motivi, tra cui: un char è comunque un byte come dimensione, quindi anche volendo la stringa non ci entra, quello che casomai ti serve è un array di char:

char direzione_vento[20]; //lunghezza massima 19 caratteri, + /0 di terminazione

Fatto questo, non puoi assegnare una stringa direttamente alla variabile (in realtà si può fare quando si dichiara ed inizializzata contestualmente la variabile), ma usare la funzione strcpy():

strcpy(direzione_vento,"SUD");

A secondo dell'hardware che usi puoi prendere in considerazione di usare la classe String, che permette una gestione più semplice delle stringhe, generalmente sconsigliata per problemi di frammentazione della memoria, ma se hai abbastanza RAM a disposizione non dovrebbe creare grossi problemi.

Ciao, Ale

Ma che dashboard hai creato ? dentro ci devi mettere un "widget" ovvero un controllo che possa contenere una stinga. Non sono esperto della cosa (penso pochi qui nel forum) ma credo puoi usare un widget Value
"https://docs.arduino.cc/arduino-cloud/getting-started/dashboard-widgets"

grazie a tutti , nonostante nel titolo parlavo di string , continuavo a definire direzione_vento come char . è bastato definirlo come string è ho risolto il problema .
grazie

Dubito fortemente, forse se lo hai definito come String hai risolto.

Ciao, Ale.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.