Arduino WiFi Shield + SD ATMEL Studio : problemi trovati durante l'utilizzo

Salve a tutti. Ultimamente mi è capitato di dover usare la shield WiFi di Arduino sia per la connessione WiFi sia per leggere dati dalla SD.
Premetto che l’IDE di arduino non mi permetteva - data la complessita del programma da realizzare - una facile programmazione e ho quindi optato per l’IDE di ATMEL - che rispetto ai vari plugin per Ecplipse è ORO (no comment).
Quindi vi volevo segnalare alcuni problemi/soluzioni che ho incontrato durante la programmazione; così che se qualcuno dovesse avere gli stessi problemi avrà gia un punto di partenza.

  1. Quando si provano programmi di “esempio” nell’IDE ATMEL ricordarsi sempre di includere la libreria <Arduino.h>
  2. Ovviamente tutti conosciamo la differenza tra includere una libreria con “” o con <>, quindi passiamo oltre
  3. Quando si realizzano librerie proprietarie a volte è necessario includere le librerie nell’header - anche se non utilizzate - oltre che nel CPP della classe corrispondente, non so perchè ma è l’unico modo per evitare continui errori di elementi non dichiarati
  4. Nel caso che includiate una libreria - esempio WiFi o SD - e NON viene vista dal programma e SIETE ASSOLUTAMENTE sicuri che il programma sia giusto e il progetto sia stato aperto nel modo corretto (capitato un paio di volte in seguito al crash dell’IDE) l’unica soluzione è disinstallare sia VisualMicro sia ATMEL Studio, pulire il registro - MOLTO importante ATMEL crea un sacco di errori gia di suo - e reinstallare Arduino, ATMEL Studio e VisualMicro.
  5. Quando si utilizza la librertia WiFi a volte - molto spesso - capita che non si riesca a far riconoscere ad arduino la scheda wifi e si continui ad avere il messaggio “WiFi shield not present”…no problem. Nella guida di Arduino sul sito viene descritto che con il pin n°10 in OUTPUT & HIGH si disabilita il WiFi e con il pin n°4 in OUTPUT HIGH si disabilita la SD in quanto IL BUS SPI deve essere utilizzato in esclusiva da un disopsitivo alla volta. Ma anche qui a volte non funziona comunque. SOLUZIONE quindi anche se non dovete utilizzare l’SD, A) includete cmq la libreria SD B) inizializzate SD.begin(4) che è il pin di default per la shield…e poi setate i pin 10 o 4 a seconda di quelo che dovete disabilitare.
  6. Ovviamente se utilizzate per esempio altre shield che operano sul BUS SPI - come il sensore DS18S20 - dovete fare atrtenzione che non ci siano conflitti…pensateci prima
  7. Provare i programmi con la shiela montata in soluzione definitiva col progetto, realizzare librerie con la shield staccata può causare problemi difficili da trovare poi…
  8. Il compilatore NON è molto avanti per quello che riguarda la gestione e comunicazione degli errori, per corregersi tornare indietro con le modifiche.

Spero di esservi stato di aiuto.

Saluti

Sebastian