Arduino: debug di uno shield
Visto che nel mio sketch per webserver ho la necessità di avere varie linee di ingresso ed uscita, ho inizialmente usato una relay board acquistata tempo fa. Tutto bene, peccato che non sia più in produzione, obbligando quindi chi intendesse testare lo sketch a modificarlo pesantemente.
Ho quindi ordinato un paio di Shield Arduino I/O expander FT-1079K da FuturaShop. Dopo una lunga attesa sono arrivati, ma i primi test sono stati decisamente deludenti: nessun segno di vita!
Ho quindi "sradicato" un MCP23017 dallo zoccolo e provveduto al testing su breadboard seguendo lo schema di connessione più semplice possibile ed ottenendo le risposte attese. Quindi il chip non era guasto. Meno male. Ma allora dov'è il problema con lo shield?
Mi sono armato di pazienza e di tester per cercare eventuali falsi contatti, senza trovarne nessuno, tranne una strana mancanza: il pin 18 del MCP23017 non è connesso alla linea di reset di Arduino. Uhm... Effettivamente anche lo schema lo conferma: nessuna connessione.
Rimetto il chip nel suo zoccolo e faccio un ponte volante verso la linea /reset, carico lo sketch di test e... BINGO! Funziona al primo colpo, più o meno.
Dico "più o meno" perché la libreria di supporto è IMVHO decisamente scadente e spudoratamente copiata da altre generiche: intanto non funziona l'autorilevazione dello shield (non lo trova mai), poi la documentazione è carente (per usare un eufemismo), o ci sono proprio errori nella classe. Tanto per dirne una, la digitalWrite() scrive prima sugli ingressi...
Alla prima occasione dovrò riscriverla, specializzandola.