GUINO
Guino est une interface graphique, développée par Mads Hobye, qui permet de commander des composants ou modules, reliés à une carte Arduino, depuis un ordinateur. Guino permet également de tracer des courbes en tension issues des entrées numériques et analogiques de l'Arduino.
La présentation suivante est la traduction du site http://www.instructables.com/id/Guino-Dashboard-for-your-Arduino/
Il faut télécharger GUINO_PACKAGE_1 puis copier les répertoires Guino et Easytransfer dans le répertoire contenant les bibliothèques Arduino.
La partie gauche de cette application permet de sélectionner le port de communication avec la carte Arduino, de connecter l’interface à la carte Arduino et d’enregistrer les données dans la mémoire EEPROM de la carte Arduino.
L’interface (partie droite de l’application) sera dessinée à l’aide d’instructions placées dans le programme Arduino.
La mise en œuvre de l’interface Guino est réalisée à l’aide d’instructions que l’on insère dans le programme Arduino.
Initialiser l’interface
Dans le programme Arduino (partie Setup), il faut insérer l’instruction gBegin(0); où le nombre représente un code personnel pour sauvegarder les données en EEPROM.
Définir l’interface
Dans le programme Arduino (partie Loop), il faut insérer au tout début l’instruction guino_update(); pour mettre à jour les différentes variables et objets de l’interface puis insérer une fonction void gInit() pour dessiner l’interface (curseurs, graphes, boutons, etc).
Modifier la couleur de fond
Par défaut, la couleur de fond de l’interface est rouge. On peut changer cette couleur par l’instruction gSetColor(r,g,b); où r, g et b représentent les nuances de rouge, vert et bleu (nombre compris entre 0 et 255). Cette instruction doit être insérée dans la fonction gInit().
Ajouter un label fixe (titre)
Dans la fonction gInit(), il faut ajouter l’instruction gAddLabel("TITRE",1); où "TITRE" représente le nom du label qui sera affiché et le nombre représente la taille (0 : grande taille à 2 : petite taille)
Ajouter un label variable
Au paragraphe précédent, nous avons vu comment afficher un label. Nous allons maintenant voir comment modifier un label en fonction de l’état d’une variable.
-
Il faut créer une variable de type int (ex : ma_variable)
-
Il faut ajouter dans la fonction gInit() le label de la façon suivante : ma_variable=gAddLabel (" MA VARIABLE ",2);
-
Il faut, dans la partie Loop, mettre à jour le label en fonction d’une variable (ex : etat) de la façon suivante :
if(etat)
{
gUpdateLabel(ma_variable, "ACTIF");
}
Ajouter un trait
Il est parfois intéressant d’insérer un trait pour délimiter les différentes parties de l’interface. Il faut ajouter dans la fonction gInit(), l’instruction gAddSpacer(1); où le nombre représente la taille du trait.
Ajouter une colonne
Dans la fonction gInit(), il faut ajouter l’instruction gAddColumn();
Ajouter un bouton à deux états (Toggle)
Pour commander une led, un relais, tout autre composant ayant deux états de fonctionnement ou pour modifier l’état d’une variable booléenne, nous utilisons un bouton appelé Toggle.
-
Il faut créer une variable de type int pour la variable booléenne (ex : ma_variable). Cela peut paraître aberrant mais nous dépendons de GUINO !!!!
-
Il faut ajouter dans la fonction gInit(), l’instruction gAddToggle("MA VARIABLE",&ma_variable);
-
Il faut, dans la partie Loop, mettre à jour la variable en ajoutant l’instruction gUpdateValue(&ma_variable);
Ajouter un bouton
Un bouton est utilisé pour modifier la valeur d’une variable non booléenne.
-
Il faut créer une variable de type int pour le bouton (ex : buttonId)
-
Il faut créer la variable à modifier de type int (ex : ma_variable)
-
Il faut ajouter dans la fonction gInit(), l’instruction buttonId = gAddButton("Pause=100ms");
-
Il faut compléter la fonction void gButtonPressed(int id) en précisant la nouvelle valeur de la variable sans oublier de la mettre à jour.
if(buttonId == id)
{
ma_variable = 1000;
}
Ajouter un potentiomètre rectiligne
Dans le paragraphe précédent, la variable ne peut prendre que quelques valeurs. L’utilisation d’un potentiomètre permet de faire varier la valeur de la variable entre un minimum et un maximum.
-
Il faut ajouter dans la fonction gInit(), l’instruction gAddSlider(0,127,"MA VARIABLE", &ma_variable); où le premier nombre représente la valeur minimale de la variable, le second nombre représente la valeur maximale de la variable, "MA VARIABLE" représente le nom du curseur et ma_variable représente la variable.
-
Il faut, dans la partie Loop, mettre à jour la variable en ajoutant l’instruction gUpdateValue(&ma_variable);
Remarque : un curseur peut être utilisé pour une entrée (ex : tension issue d’un potentiomètre) ou une sortie (ex : intensité lumineuse d’une led).
Ajouter un potentiomètre rotatif
Il est parfois intéressant de positionner sur l’interface des curseurs ayant la forme d’un bouton rotatif. La méthode est identique au paragraphe précédent, seule la syntaxe change. L’instruction est gAddRotarySlider(0,127,"MA VARIABLE", &ma_variable);
Ajouter un graphe
Pour visualiser la variation d’un paramètre, nous allons placer un graphe.
-
Il faut créer une variable de type int pour la variable booléenne (ex : ma_variable).
-
Il faut ajouter dans la fonction gInit(), l’instruction gAddMovingGraph("MA VARIABLE",0,1023, &ma_variable, 10); où "MA VARIABLE" représente le nom du graphe qui sera affiché, 0,1023 représente la plage de variation de la variable (et par conséquent du graphe), ma_variable représente la variable que l’on affiche et 10 représente la taille du graphe.
-
Il faut, dans la partie Loop, mettre à jour la variable en ajoutant l’instruction gUpdateValue(&ma_variable);
Remarque : Il existe une instruction gAddFixedGraph("MA VARIABLE",0,1023,10,&ma_variable,10); pour laquelle le troisième paramètre est la vitesse de balayage du graphe.
Exemple :
/* Ce programme permet de faire clignoter la Led L avec des fréquences différentes depuis une interface Guino */
int led=13;
int pause=100;
int buttonId1 = 0;
int buttonId2 = 0;
int buttonId3 = 0;
void setup()
{
pinMode(led, OUTPUT);
digitalWrite(led,LOW);
// Start the guino dashboard interface.
// The number is your personal key for saving data. This should be unique for each sketch
// This key should also be changed if you change the gui structure. Hence the saved data vill not match.
gBegin(34236);
}
void loop()
{
guino_update();
digitalWrite(led,LOW);
delay(pause);
digitalWrite(led,HIGH);
delay(pause);
gUpdateValue(&pause);
}
void gInit()
{
gAddLabel("BOUTONS",1);
gAddSpacer(1);
buttonId1 = gAddButton("Pause=100ms");
buttonId2 = gAddButton("Pause=500ms");
buttonId3 = gAddButton("Pause=1000ms");
}
void gButtonPressed(int id)
{
if(buttonId1 == id)
{
pause= 100;
gUpdateValue(&pause);
}
if(buttonId2 == id)
{
pause= 500;
gUpdateValue(&pause);
}
if(buttonId3 == id)
{
pause= 1000;
gUpdateValue(&pause);
}
}
void gItemUpdated(int id)
{
}