Ethernet shield + SD Card e funzioni che non funzionano!

Ciao a tutti,
da poco ho scoperto Arduino ma ho già una certa esperienza come programmatore . Sto effettuando alcune prove con il mio primo Arduino dotato di Ethernet shield e all'inizio tutto filava liscio (il programma non presenta particolari difficoltà) ovvero:

  1. Attendo il collegamento, ricevo i dati
  2. Analizzo l'header http
  3. Eseguo la funzionalità richiesta dalla chiamata http
    Per strutturare meglio il codice ho separato dal void loop{} l'analisi dell'headre http in una funzione del tipo
    String Analizza(String httpHeader){
    ...
    return valoreIngresso
    }
    Tutto funzionava alla perfezione poi ho aggiunto l'sd per poter ospitare le pagine html da mostrare a chi si collega ad Arduino e da qui il disastro! =(
    Ho molti punti i debug tramite serialmonitor dentro le varie procedure, ma da quando ho gestito l'SD succede che le stringhe passate alle funzioni arrivano vuote, mi spiego meglio:
    Nel main analizzo la variabile dell'httpHeader ed è tutto ok, chiamo la funzione Analizza con la variabile appena verificata e se verifico la stringa httpHeader dentro la funzione è vuota! Appena esco dalla funzione verifico nuovamente la variabile letta dallo shield e risulta piena.
    Ho provato quindi a definirle globali e a non passarel con il parametro, va meglio ma anche così alcune volte (e questo mi fa impazzire :zipper_mouth_face:) dentro le varie funzioni la variabile risulta essere vuota.
    Esistono problemi conosciuti con i dati ti tipo String e l'interfaccia SD? E' meglio usare i vettori di char?
    Per il resto credo di aver fatto tutto bene, ho inizializzato il pin 10, ho provato a tenerlo alto come indicato in alcuni tutorai, ho ricercato nel forum e adeguato il codice in base ai topic trovati ma nulla, avete idee in merito?
    Grazie e ciao

Hai provato a controllare prima la sola Sd .... in modo da vedere se ti da problemi e poi in un secondo momento metti assieme Sd e Eth....

Ciao, sd e ethernet non sono scindibili (sono sullo stesso shield) ma gli schetch d'esempio che usano la sd funzionano egregiamente, ma nesuno di essi utilizza funzioni per processare i messaggi dell'ethernet, prendono l'imput visualizzano i file e effettuando click mostrano il file selezionato, tutto ok. Nei vari tentativi che ho effettuato ho avuto problemi con i parametri di tipo string. Da qui la domanda (generica) se non fosse meglio, con Arduino, utilizzare i vettori di char anziché i dati di tipo string.

Ciao e grazie

Vista l’instabilità del codice che non può derivare da problemi di compilazione o scrittura di codice mi è sorto un dubbio: potrebbero essere problemi di alimentazione? Non è che in caso di scarsa alimentazione i messaggi della rete vengono troncati o interpretati in malo modo e il codice va in crisi e con esso Arduino?

Ciao

La mia soluzione è un tantino generica ma sto aspettando una eth shield che dovrebbe arrivare a giorni e quindi non saprei dire nulla di più preciso -_-"
prova a postare il codice sicuramente qualcuno di più esperto di me ti saprà aiutare :wink:

beh con cosa alimenti arduino ed il modulo ?

Ciao, l'alimentazione è data da un alimentatore 12V da 450mA , ho provato anche un 12V 700mA e anche con la sola alimentazione usb ma nulla continuo a sperimentare instabilità... alla fine mi vedrò costresso a togliere l'SD e mettere il codice html dentro alla memoria di Arduino... ma che tristezza però =(
Non appena ho tempo provo a mettere tutto nel loop e vedere se così non si destabilizza più ma non ci credo molto!

Ciao