TiDiGino Contest, Arduino Monitor di Daniele Denaro


Presentiamo la candidatura del Sig. Daniele Denaro che si propone per la realizzazione del firmware del progetto TiDiGino e che ci presenta una sua recente applicazione con Arduino: Arduino Monitor.

Lasciamo la parola a Daniele:
Lavoro da moltissimo tempo nell’informatica, con una partecipazione anche nella ricerca (A.I., reti neurali,reinforcement learning, algoritmi genetici ecc) collaborando per alcuni periodi con il CNR. Sono sempre stato attratto anche dall’hardware e dal firmware anche se coltivato solo da appassionato. È naturale che, quindi, mi sia interessato anche al fenomeno Arduino. Come presentazione vi allego una piccola applicazione che ho sviluppato per comodità di test dell’hardware di Arduino. Si tratta di un Monitor che permette ai programmi su Arduino di  visualizzare o di leggere  valori analogici e digitali. Insomma una sorta di display e keypad per Arduino. Più semplice di un  programma Processing ed anche più leggero del protocollo Firmata. Lo zip allegato contiene l’applicazione sul computer, la libreria per Arduino, 3 programmi Arduino di esempio e un file html per l’istallazione (comunque banale).

Ed ecco il progetto Arduino Monitor:
Arduino Monitor è composto da una libreria Arduino (directory Monitor) e da un programma Java su computer. I due componenti vanno estratti e semplicemente collocati: la libreria Monitor, dentro la directory Libraries della distribuzione Arduino, mentre ArduinoMonitor.jar dove volete.
La libreria fornisce una serie di comandi, da usare in un programma su Arduino, per visualizzare dei valori digitali o analogici in una modalità più esplicativa rispetto alla rappresentazione a caratteri della consolle seriale. Inoltre fornisce comandi per ricevere un input (digitale od analogico) da usare nel programma.
L’obiettivo è quello di avere, con Arduino, un collegamento input-output semplice, immediato e leggero. Il protocollo è ottimizzato per la velocità; infatti i messaggi sono tutti composti da 3 byte.
Insomma una alternativa molto più semplice di una programmazione con Processing e più comoda di una consolle seriale. Rispetto al protocollo Firmata, è più immediato nell’utilizzo, ma soprattutto è più leggero (circa la metà di occupazione memoria) anche perché è più essenziale ed è dedicato ad Arduino.
L’utilizzo immaginabile è quello per la verifica di input dai pin di Arduino e per l’esecuzione di comandi su Arduino.
Il programma Java (ArduinoMonitor.jar lanciabile con un click).
Necessita di Java ed è una versione solo per piattaforme Windows a causa della libreria seriale che si porta dietro(infatti le distribuzioni Java non hanno il link con l’hardware seriale).
Consiste in una finestra con campi di display e attivatori a bottone o a slide.

La lista delle porte seriali viene aggiornata automaticamente; ma qualche volta è necessario rinfrescarla manualmente e questo può essere fatto cliccando il pulsante Close.
La porta selezionata e la velocità vengono salvate su un file ad ogni chiusura della applicazione e ripresentate al prossimo startup.

Comandi:

COMMAND MEANING PARAMETERS
openM(baud-rate) open communication baud-rate=Arduino serial possible values
closeM() close communication  
     
writeAna(value,destination) displays a value to destination field (level bars) int value(0to1024), byte destination(0to5)
writeDig(value,destination) switch on/off (value 1/0) the destination led int value(0to1), byte destination(2to13)
plotFun(value,destination) plots function (identified by destination number 0to5) byte destination(0to5)
plotReset(destination) stop plot ; if destination=6 cancel all plots byte destination(0to6)
plotFunX(value) plots function X-Y : value X int value(0to1024)
plotFunY(value) plots function X-Y : value Y int value(0to1024)
readDig(source) returns 0/1 from button return byte(0to1), byte source(2to13)
readPWM(source) returns value 0 to 255 from slide return byte(0to255), byte source(3,5,6,9,10,11)

Uso:
Definisce la libreria monitor:   es. Monitor m=Monitor() (fuori dalle funzioni setup e loop)
Apre il monitor:    es. m.openM(9600) (in setup function)
Usa il monitor:   es. m.writeAna(value,4)… etc

Esempi: 
/* 

  Analogical display value example.

  Read analogical value from pin 0 and display on bar 0 and plot.

*/

#include <Monitor.h>

Monitor mon=Monitor();       //Initialize monitor library

void setup()

{

  mon.openM(9600);           //Open serial communication at 9600 baud

}

void loop()

{

  int value=analogRead(0);   //Read analogical value at pin 0

  mon.writeAna(value,0);     //Out value at barr 0

  mon.plotFun(value,0);      //Plot,also, as function 0 (red)

  delay(100);                //100 millisec of delay

}

 

/*

  Digital display and command example.

  Read digital value (0/1) from pin 7 and display it on led 7.

  Get switch status from button 13 and activate pin 13 (led on board).

*/

#include <Monitor.h>

Monitor mon=Monitor();     //Initialize monitor library

void setup()

{

  mon.openM(9600);           //Open serial communication at 9600 baud

  pinMode(13,OUTPUT);

  pinMode(7,INPUT);

}

void loop()

{

  byte value=digitalRead(7);   //Read digital value on pin 7

  mon.writeDig(value,7);       //Out value on led 7

  value=mon.readDig(13);       //Get H/L from button 13

  digitalWrite(13,value);      //ON/OFF led pin 13

  delay(100);                  //100 millisec of delay

}
/*

  Loop example. Test for PWM.

  Reads PWM value from slide 3 and writes back to bar 3

*/

#include <Monitor.h>

Monitor mon=Monitor();     //Initialize monitor library

void setup()

{

  mon.openM(9600);           //Open serial communication at 9600 baud

}

void loop()

{

  byte value=mon.readPWM(3);  //Get PWM value from slide 3

  int pwm=value*4;            //Scale to analogical value

  mon.writeAna(pwm,3);        //Out value at barr 3

  delay(100);                 //100 millisec of delay

}

Scarica il file zip con tutto il software.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ricevi un avviso se ci sono nuovi commenti. Oppure iscriviti senza commentare.