Archivi tag: error

Errori comuni nell’uso di Arduino – inizializzazione di più variabili

La tentazione di risparmiare linee di codice è sempre in agguato e tentare di inizializzare più variabili su una sola riga è forte, però alcune volte ciò che intendiamo fare non corrisponde a ciò che correttamente intende il compilatore.

Con la scrittura:

int x, y, z = 67;

non viene assegnato il valore 67 ad ogni singola variabile, ma solamente la variabile z viene inizializzata a 67.

L’errore quindi non risiede nella scrittura, il compilatore non restituirà errore, ma nel modo in cui il programmatore intende l’assegnamento credendo che tutte le variabili vengano inizializzate a 67.

La scrittura

int x = 67, y = 67, z = 67;

permette l’assegnamento del valore 67 ad ogni singola variabile. Si ricordi di separare ogni assegnamento da una virgola, ciò accade solo e soltanto se si indicano tipo e assegnamento su stessa linea.

Per l’assegnamento di valori diversi scriveremo:

int x = 99, y = 3, z = 67;

Io in genere preferisco una scrittura di questo tipo:

int x = 99;
int y = 3;
int z = 67;

che permette di visualizzare meglio le variabili utilizzate, non favorisce fraintendimenti nell’assegnamento e permette inoltre di scrivere chiaramente un commento a lato di ogni assegnamento.

Esercizio (semplice semplice 🙂 ) per i miei studenti:

Realizzare uno sketch che dimostra quanto esposto in questo post.

Buon Coding 🙂

Arduino: problemi con la libreria IRremote.h – come risolverli

Scrivo questo appunto per mantenere traccia in modo che possa essere utile anche ad altri.

Piccolo problema riscontrato con la libreria IRremote.h inclusa nell’ultima versione dell’IDE Arduino, la 1.6.3
Durante l’ultima lezione del mio corso Arduino Avanzato, svoltosi presso il FabLab di Biella, avevo impostato alcune esercitazioni sulla lettura dei codici dei telecomandi ad infrarossi che utilizziamo ogni giorno. Gli sketch utilizzavano ovviamente la libreria IRremote.h. Le esercitazioni sono state progettate sul mio computer desktop con la versione 1.6.3, tutte ovviamente testate e funzionanti. Riportando le stesse esercitazioni sul portatile con medesimo IDE ho riscontrato durante il corso il problema di cui vi allego schermata.

iremote-01

Il problema, nel mio caso non si rileva su un Mac desktop ultima generazione, mentre sul portatile MacBook Air sì.

Il messaggio di errore è:

‘TKD2’ was not declared in this scope

su entrambi ho una versione java 8 update 45, ma ritengo che il problema sia dovuto ad un conflitto derivante da un’altra libreria installata sul portatile, da test fatti l’anomalia si presenta anche su PC windows. Queste indicazioni mi rendo conto che non sono  tecnicamente dettagliato, ma per l’urgenza avevo bisogno di tenerne traccia, cercherò le cause precise dell’anomalia in un momento successivo. On-line ho verificato che anche altri utenti hanno avuto medesimo problema.

Grazie allo sforzo congiunto e tempestivo dei partecipanti al corso, che ringrazio, la soluzione è stata trovata prelevando nuovamente l’ultima versione IRremote, l’intera cartella è stata poi inserita direttamente all’interno della cartella su Mac:

Contents > Java > libraries > RobotIRremote

che potete visualizzare facendo click tasto destro sull’icona Arduino e selezionando “Show Package Contents”

iremote-02

su PC Windows il procedimento è simile, individuate la cartella libraries e procedete in modo analogo.

iremote-03

iremote-04

Ho assegnato alla cartella dell’ultima versione della libreria il medesimo nome della precedente, ed ho rinominato la vecchia in “RobotIRremote-old” conservata per future analisi.

iremote-05
Riavviando l’IDE tutto si è risolto.

iremote-06

Cercherò di comprendere le cause esatte del problema. Spero che questo alert possa servire anche ad altri.

Saluti.