Si può modificare una variabile globale?

Salve volevo chiedervi se si può modificare la password del wifi su arduino mkr 1010 senza usare l' ide?

In che senso? Se il valore della variabile é ricavato da una kemoria che puoi riscrivere (file di SD ad esempio) riscrivi il file, altrimenti se il programma é già studiato per consentirti di cambiare i contenuti delle variabili puoi banalmente, farlo. Chiaramente se il programma non é congegnato per i due casi sopra riportati puoi modificarlo, ma a tal fine ti é necessario l'IDE, e siamo punto e a capo. Inoltre per gli array globali devi stare attento a mantenere lo stesso numero di elementi previsto come lunghezza, in quanto nelle inizializzazioni globali non puoi usare funzioni (mi sembra). Per array locali basta leggere il valore della lungjezza necessaria ogni volta che crei l'array, visto che in una funzione puoi chiamarne altre

Perchè ho fatto questa richiesta di aiuto, se riesco a fare un progetto con arduino mkr1010
e vorrei darlo a terzi non voglio che vedano il codice sorgente quando devono collegarlo al wifi per mettere la password o il nome della rete.

Avevo pensato di mettere in un file txt nel SD con i dati dove si deve connettere arduino
cosi l’utente finale deve solo modificare il file nel sd.

char auth[] = "1axxxxxxxxxxxxxxxxxxxxxx8b"; <<<<<<<<codice per il server
char ssid[] = "Vod47xxxxxxxxxxxxxxxxxxx1";<<<<<<<<<<<<<<nome della rete
char pass[] = "N5xxxxxxxxxxxxxxxxxxxxx";//<<<<<<<< la password

Per ESP esiste una apposita libreria che, all'avvio presenta l'ESP come un Access Point, ci si connette ad esso, si foniscono le credenziali della rete a cui si deve effettivamente connettere e .... il sistema si riavvia connettendosi alla rete indicata.

Purtroppo NON mi sembra che abbiano fatto una cosa simile anche per MKR1010 ... ... per cui, senza una libreria come quella, la strada più semplice per te è quella di usare una SD su cui scrivi nome del SSID e password e la assegni dinamicamente leggendola da detta SD.

Guglielmo

beh, è qualche giorno che abbiamo pubblicato, prorpio per questo OP, più versioni di funzioni che leggono da file variabili intere e/o stringhe, un "minimo" di ricerca ed attenzione........

Standardoil: ... un "minimo" di ricerca ed attenzione........

Lo so, ho seguito e ... penso lo sappia anche l'OP visto che è stato proprio lui a proporre la strada SD ;)

Guglielmo

WinGamesyun:
Perchè ho fatto questa richiesta di aiuto, se riesco a fare un progetto con arduino mkr1010
e vorrei darlo a terzi non voglio che vedano il codice sorgente quando devono collegarlo al wifi per mettere la password o il nome della rete.

Avevo pensato di mettere in un file txt nel SD con i dati dove si deve connettere arduino
cosi l’utente finale deve solo modificare il file nel sd.

char auth[] = "1axxxxxxxxxxxxxxxxxxxxxx8b"; <<<<<<<<codice per il server

char ssid = “Vod47xxxxxxxxxxxxxxxxxxx1”;<<<<<<<<<<<<<<nome della rete
char pass = “N5xxxxxxxxxxxxxxxxxxxxx”;//<<<<<<<< la password

Tu sai che Arduino é sotto la licenza CC e su richiesta devi dare il codice?
Ciao Uwe

Ho gia provato a fare qualche prova ma mi da sempre errore poi la differenza è che li era un numero Intero invece ora sono delle stringhe, Poi dove mettere l'if ?se lo metto nel setup e come ho capito io che Arduino esegue il codice a cascata Come fa a modificare le globali?

uwefed: Tu sai che Arduino é sotto la licenza CC e su richiesta devi dare il codice?

Non mi risulta Uwe, devi dare solo i moduli oggetto linkabili ...

Using the Arduino core and libraries for the firmware of a commercial product does not require you to release the source code for the firmware. The LGPL does, however, require you to make available object files that allow for the relinking of the firmware against updated versions of the Arduino core and libraries. Any modifications to the core and libraries must be released under the LGPL.

Guglielmo

WinGamesyun: Ho gia provato a fare qualche prova ma mi da sempre errore poi la differenza è che li era un numero Intero invece ora sono delle stringhe ...

A questo punto dovresti aver capito che, purtroppo ... con i copia/incolla NON si va molto lontano :confused: e che, se si vogliono fare cose un po' più serie, tocca STUDIARE ! ::)

A tal proposito prova a rilegge il punto 16.1 del REGOLAMENTO ... troverai anche dei link utili ...

Da parte mia posso aggungere il consiglio di comprare e studiare QUESTO libro.

Guglielmo

Avete pienamente ragione ma uno che lavora 12/13 ore al giorno con due giorni al mese di riposo con la passione della programmazione . Solo con il vostro aiuto riesce a risolvere il problema Più velocemente e non per questo non Studio il codice e Come funzioni .

Anzi prima di chiedere aiuto a voi faccio sempre delle prove .

beh, guarda sincerament più che aver pubblicato una funzione che fa esattamente quello che vuoi (non la ho sviluppata per te, ma era già disponibile per fare esattamente quello che ti serve) non posso credo che sia escluso che vengo io a fartelo a casa tua un minimo di sforzo serve di mettercelo, e casomai si fa una (dolorosa) scelta sui propri hobby ed interessi........

uwefed: Tu sai che Arduino é sotto la licenza CC e su richiesta devi dare il codice? Ciao Uwe

manno... lo OP chiama (erroneamete) "codice" non il codice sorgente, ma le varie chiavi di accesso e cifratura ritiro tutto, ha ragione Uwe

Tra un'oretta finisco di lavorare e ricomincio con il mio hobby . Grazie ancora Buona serata.

Niente non riesco proprio a fare questa cosa :confused:

[code]



char auth[] = "xxxxxxxx  ";
char ssid[] = "yyyyyyyyyyy";
char pass [] =  "kkkkkkkk";
File myFile2;
void setup() {
Serial.begin();
  
myFile2 = SD.open("totali2.txt", FILE_READ);
  if (myFile2)
  { //Serial.print("file aperto, leggo: ");
    char buffer [7] = {0};
    for (byte i = 0; myFile2.available() && i < 6; i++)
    { char c = myFile2.read();
      buffer [i] = c;
      Serial.print(c);
    }
     Serial.print('\n');
    char pass = atoi (buffer);
   Serial.print("pass="); Serial.println(pass);
  }
  else
  { 
      Serial.println ("file non aperto,");
  }
  myFile.close();


  
   WiFi.begin(ssid, pass);
  Blynk.config(auth, server, port);

  Blynk.connect();
}

void loop() {
  

}

[/code]
Avevo pensato una cosa del genere.

e hai pensato male scusa se sono un po' duro, ma a quest'ora non sono certo tenero perché una atoi()? cosa ti ha fatto pensare che per avere una stringa ti serva convertire una stringa in intero? un minimo di "movimento", di "pensiero" deve pur venire....... e poi, è la prima e ultima volta che te lo dico: formatta quel codice, non è un consiglio, nemmeno una richiesta: è una condizione condizione che pongo per continuare a seguirti: passi che sei "lungo" a ottenere risultati passi che non "leggi" ma copi e incolli a sproposito passi che racconti la "solita storia" che ti manca il tempo, non sei il primo, non ti illudere ma che non fai NEMMENO un CTRL-T per dare una "forma" decente q quello che copiincolli, NO, questo NON passa per quanto riguarda il punto tre (ti manca il tempo), ricorda che nell'industria meccanica c'é un detto: "non c'è mai il tempo per farlo, c'è sempre il tempo per ripararlo" studiare e fare le cose per bene è "sempre" la strada più breve, cerca di capirlo

Scusa hai ragione sulla formazione Ma lo postato solo per far vedere il pezzo a qui stavo cercando di modificare .

1) non riesco a capire perché le variabili hanno le quadre e gli i doppi apici ? 2) Non voglio convertire nulla deve assegnare alla variabile così come scritto il file txt nel SD.

Ho provato a togliere quella scritta che converte le stringhe a interi ma senza risultati

WinGamesyun: 1) non riesco a capire perché le variabili hanno le quadre e gli i doppi apici ? 2) Non voglio convertire nulla deve assegnare alla variabile così come scritto il file txt nel SD.

... perdona se te lo ripeto, ma se continui solo con i copia/incolla senza studiare, queste cose NON le capirai mai e ... considera che stiamo parlando veramente della basi del 'C' ... ::)

Dai retta, fermati un attimo con il programma e dedica una settimana a studiare ... non muore nessuno se il progetto lo finisci una settimana dopo, ma ... almeno saprai quello che stai scrivendo.

Guglielmo

Deja vu!