Je reprends le fil.
Processing marche très bien avec Arduino. Je vais utiliser cela pour mon module HOe.
En tout cas, cela marche bien avec les DEL donc avec les autres trucs aucun souci.
Donc voici les 1ères lignes du code :
/*Programme de gestion du module HOe via le PC*/
//Importation des lib
import processing.serial.*;
import g4p_controls.*;
//Configuration de la voie série
Serial arduino;
boolean serialConnected = false;
//Bouton voie série
GDropList serialPortListMenu;
GButton connectButton;
String[] serialPortList;
//Bouton commande canton
GButton Bcanton1;
GButton Bcanton2;
GButton Bcanton3;
boolean canton1 = false;
boolean canton2 = false;
boolean canton3 = false;
void setup()
{
size(1024, 600);
serialSetup();
cantonSetup();
}
void draw()
{
background(255);
fill(0);
stroke(0);
//Décor des commandes 1
text("Port série", 630, 35);
text("Module HOe", 10, 20);
line(620, 0, 620, 600);//Ligne verticale
line(0, 40, 620, 40);//Ligne Gauche Ht
line(620, 80, 1024, 80);//Ligne Droite Ht
text("Commandes des cantons", 10, 60);
//Dessin du réseau
text("Canton 1", 80, 105);
text("Canton 2", 30, 145);
text("Canton 3", 80, 185);
//Lignes canton 1
if (canton1 == true) {
stroke(#2ECC71);
} else {
stroke(#FF0000);
}
line(150, 100, 250, 100);
line(250, 100, 300, 140);
//Lignes canton 2
if (canton2 == true) {
stroke(#2ECC71);
} else {
stroke(#FF0000);
}
line(100, 140, 300, 140);
//Lignes canton 3
if (canton3 == true) {
stroke(#2ECC71);
} else {
stroke(#FF0000);
}
line(150, 180, 250, 180);
line(250, 180, 300, 140);
//Plaque tournante
fill(255);
stroke(0);
ellipse(300, 140, 70, 70);
//Décor des commandes 2
line(0,240,620,240);
}
// Fonctions pour la voie série
void serialSetup()
{
serialPortList = Serial.list();
serialPortListMenu = new GDropList(this, 700, 20, 300, serialPortList.length*24, serialPortList.length);
serialPortListMenu.setItems(serialPortList, 0);
connectButton = new GButton(this, 900, 50, 100, 22, "Connecter");
}
boolean connectSerial(String serialName)
{
arduino = new Serial(this, serialName, 115200);
serialConnected = true;
return true;
}
void disconnectSerial()
{
serialConnected = false;
arduino.stop();
}
//Handler pour les boutons
void handleButtonEvents(GButton button, GEvent event) {
if (button == connectButton && event == GEvent.CLICKED) {
if (! serialConnected) {
if (connectSerial(serialPortListMenu.getSelectedText())) {
connectButton.setText("Deconnecter");
}
} else {
disconnectSerial();
connectButton.setText("Connecter");
}
}
if (button == Bcanton1 && event == GEvent.CLICKED) {
actionCanton1();
}
if (button == Bcanton2 && event == GEvent.CLICKED) {
actionCanton2();
}
if (button == Bcanton3 && event == GEvent.CLICKED) {
actionCanton3();
}
}
//Commande des cantons
void cantonSetup() {
Bcanton1 = new GButton(this, 400, 89, 100, 22, "Canton 1");
Bcanton2 = new GButton(this, 400, 129, 100, 22, "Canton 2");
Bcanton3 = new GButton(this, 400, 169, 100, 22, "Canton 3");
}
void actionCanton1() {
canton1 = ! canton1;
}
void actionCanton2() {
canton2 = ! canton2;
}
void actionCanton3() {
canton3 = ! canton3;
}
//Fonctions pour les boutons de trains
//Touches de clavier qui définit aussi les actions pour le module HOe
Il me reste à insérer les handlers des touches pour faire des raccourcis et après à envoyer les ordres correspondants à l'Arduino. Il faut simplement faire une table de correspondance.
Ci joint une image, les couleurs des voies changent.
Pour l'essayer, téléchargez Processing3 et installez la lib G4P. Très simple, vous allez dans le gestionnaire de lib la cherchez et l'installez.