Communiquer avec un serveur sous Processing parait for simple mais un même programme peut-il fonctionner sur Android et sur PC voir en javascript.
Pour ce qui est du javascript je n'y suis pas encore arrivé mais pour Android et PC c'est possible. Cependant il faudra proposer à processing de changer sa librairie Processing.net pour une autre. Pour ce faire il suffit de créer un dossier code à la racine de notre projet et de coller dedans le fichier net.jar ci-dessous.
Impossible de trouver le layout
Le code :
/* @pjs preload="LEDBrillante.png, LEDEteinte.png, PotarVide.png, arduinoledpotar.png"; */ /************************** JAVASCRIPT ***************************** /******************************************************************* Attention pour le javascript il faut inclure les images en faisant "JavaScript > Playback Setting (Directives) " puis scan dans la partie preloaded images (ce qui rajoute les deux lignes ci-dessus.) /**************************** ANDROID ****************************** /******************************************************************* Attention pour Android (processing.net n'existe pas pour android) il faut ajouter la librairie net.jar dans le dossier code. Ne pas oublier de donner la permission "internet" en faisant Android>Sketch permissions */ // Les lignes estampillées "Pour débogage" ne sont pas nécessaires import processing.net.*; //********************* Déclarations ************************** Client myClient; int ValeurRetour; PImage Cablage; PImage LEDBrillante; PImage LEDEteinte; PImage PotarVide; int XLED=338; int YLED=466; int LargeurLED=43; int HauteurLED=48; boolean EtatLED=false; float Angle; //********************* Setup ********************************* void setup() { smooth(); size(1024,768); // normalement pas de size pour android mais ça passe quand même background(252,250,190); myClient = new Client(this, "192.168.0.150", 50000); // Indiquer ici l'adresse et le port Cablage = loadImage("arduinoledpotar.png"); LEDBrillante = loadImage("LEDBrillante.png"); LEDEteinte = loadImage("LEDEteinte.png"); PotarVide = loadImage("PotarVide.png"); image(Cablage, 20, 20); textSize(32); fill(0); text("Cliquer ou toucher la LED pour l'allumer sur la carte Arduino. Faire tourner le potentiomètre sur la carte Arduino pour le voir bouger sur l'image.", 510,20,(1024-510),(768-20)); } //********************* Draw ********************************* void draw() { ValeurRetour=myClient.read(); if (ValeurRetour!=-1) { pushMatrix();// Sauvegarde le système de coordonnées Angle=map(ValeurRetour,0,255,340,20); print(ValeurRetour);//Pour débogage print(" soit "); image(PotarVide, 253, 389); translate(264, 398);//décalage de l'origine Angle=radians(Angle);// rotation du plan println(Angle);//Pour débogage rotate(Angle); fill(255,0,0); stroke(255,0,0); rect(0,0,2,7); popMatrix();// Restaure le système de coordonnées } } //********************* mousePressed ************************* void mousePressed() { if ((mouseX>XLED)&& (mouseX<XLED+LargeurLED)&&(mouseY>YLED)&& (mouseY<YLED+HauteurLED)) //Si clic sur LED { if (EtatLED==true) { EtatLED=false; image(LEDEteinte, XLED, YLED); myClient.write(101);//101 Pour éteindre la LED jaune } else { EtatLED=true; image(LEDBrillante, XLED, YLED); myClient.write(100);//100 Pour allumer la LED jaune } } }
On peut tester ce projet avec une carte Arduino équipée d'un shield WiFi par exemple voir cet article : Communication bidirectionnelle en WiFi d’une carte Arduino UNO vers un PC ou une Tablette.
Impossible de trouver le layout