Tutti sanno che questo codice è articolato in tre parti:
a) la prima comprende le dichiarazioni delle variabili, dei pin e di eventuali librerie
b) la seconda (detta void setup()) rappresenta l'inizializzazione dei pin e dei componenti particolari
c) la terza (detta void loop()) è la parte di programma, eseguita sempre senza interruzione, che fa funzionare i componenti.
Detto in modo molto semplice, questo è quello che succede.
Ma ci si è chiesto se è possibile comandare l'Arduino da remoto (PC) con l'aiuto di un'interfaccia grafica vicina alle esigenze dell'utente.
La possibilità viene offerta da Visual Basic, un linguaggio di programmazione visuale che permette di raggiungere lo scopo prefissato.
E' sufficiente sviluppare un codice che sia vicino, nella struttura, a quello residente nella memoria di Arduino ed il gioco è fatto.
E' naturale che bisogna saper programmare in Visual Basic, ma questo non rappresenta un problema perchè in rete esistono degli ottimi video tutorial che permettono di imparare in fretta le poche nozioni che servono.
Dopo questa premessa si passa alla pratica iniziando a sviluppare la prima parte del progetto cioè comandare Arduino per mezzo di una interfaccia grafica costruita in ambiente visuale.
L'esempio che propongo è banale ma racchiude in sè tutta la filosofia del caso: accendere e spegnere un led tramite l'interfaccia grafica di Visual Basic.
Iniziamo con lo scrivere il codice per Arduino che sarà il seguente:
Nel void loop() viene costantemente letto cosa c'è sulla porta seriale COM ed assegnato alla variabile on tramite il comando on = Serial.read().
A seconda dei valori assunti dalla variabile il led sarà acceso o spento.
Fatto ciò, si passa in ambiente Visual Basic per preparare la seguente interfaccia:
Tra le righe 3-7 viene inizializzato il controllo SerialPort1 al quale si assegna la COM22 (quella che corrisponde alla mia scheda Arduino) e la si rende disponibile tramite la proprietà Open().
Le righe 9-11, 13-15 e 17-20 rappresentano gli eventi click dei tre pulsanti, rispettivamente, ACCENDI, SPEGNI ed USCITA.
Il comando SerialPort1.WriteLine(...) si attiverà premendo i pulsanti e sulla porta seriale verrà scritto un carattere che sarà letto da Arduino. Se il cararttere è 1 il led si accende mentre se è 0 si spegne.
Per quanto concerne la seconda parte si tratta di trasferire dati da Arduino a Visual Basic.
L'esempio proposto è quello di accendere/spegnere un led e vedere sull'interfaccia grafica un messaggio relativo all'evento che si è verificato cioè "LED ACCESO" oppure "LED SPENTO".
Questa volta sarà Arduino a scrivere un dato sulla porta seriale COM e Visual Basic lo leggerà.
In poche parole il percorso inverso a quello della prima parte del progetto.
Il codice di Arduino sarà il seguente:
Le righe 9-11, 13-15 e 17-20 rappresentano gli eventi click dei tre pulsanti, rispettivamente, ACCENDI, SPEGNI ed USCITA.
Il comando SerialPort1.WriteLine(...) si attiverà premendo i pulsanti e sulla porta seriale verrà scritto un carattere che sarà letto da Arduino. Se il cararttere è 1 il led si accende mentre se è 0 si spegne.
Per quanto concerne la seconda parte si tratta di trasferire dati da Arduino a Visual Basic.
L'esempio proposto è quello di accendere/spegnere un led e vedere sull'interfaccia grafica un messaggio relativo all'evento che si è verificato cioè "LED ACCESO" oppure "LED SPENTO".
Questa volta sarà Arduino a scrivere un dato sulla porta seriale COM e Visual Basic lo leggerà.
In poche parole il percorso inverso a quello della prima parte del progetto.
Il codice di Arduino sarà il seguente:
L'interfaccia grafica ed il codice relativo di Visual Basic sono questi:
Alle righe dal 3 al 7 c'è la dichiarazione di inizializzazione della comunicazione seriale tramite il controllo SerialPort1.
Alle righe dal 9 al 13 è assegnato alla variabile valore la stringa che c'è sulla seriale tramite l'istruzione SerialPort1.ReadLine che la legge.
Alle righe dal 15 al 19 la variabile valore, letta ad ogni scansione del timer (Tick), è scaricata sull'etichetta lbl_risultato affinchè l'utente la possa leggere.
Nessun commento:
Posta un commento