WiFi WeMos OSC Processing conclude la serie di articoli dedicati alla trasmissione i2c e Osc da WeMos.

Se hai letto i precedenti articoli:
- Attiny85 IIC WeMos
- WiFi Wemos IIC Attiny85
sai che abbiamo acquisito i segnali analogici e digitali di un joystick mediante attiny85 e trasferito tali informazioni alla WeMos via I2C perchè potesse codificarla e rimandarla sulla rete WiFi con il protocollo OSC.
In questo articolo leggerai come realizzare u programma in Processing per la ricezione di tali informazioni ed il render grafico della posizione del joystick.
Lo schema dei collegamenti non è presente in questo articolo in quanto lavorerai solo sul computer e non sulle componenti hardware.
Lo sketch WiFi WeMos OSC Processing
WiFi WeMos OSC Processing sketch deve essere eseguito in Processing e NON nell’IDE arduino in quanto, sebbene graficamente simili, non sono identici.
import oscP5.*;
import netP5.*;
OscP5 oscP5;
void setup() {
size(300,300);
frameRate(30);
//set this to the receiving port
oscP5 = new OscP5(this,9001);
}
void draw() {
background(0);
textSize(12);
text("digital:", 50, 260);
text(digitalValue1, 150, 260);
text("analog0:", 50, 270);
text(mouseStepX, 150, 270);
text("analog1:", 50, 280);
text(mouseStepY, 150, 280);
//make a box where it should go
noFill();
stroke(255);
rect(50, 20, 200, 200);
//and a square where the mouse is
if (digitalValue1 == 0) fill(255,0,0);
else fill(255);
float mouseXPos = map(mouseStepX, 1024, 0, 50, 230);
float mouseYPos = map(mouseStepY, 0, 1024, 20, 200);
rect(mouseXPos, mouseYPos, 20, 20);
fill(255);
}
int digitalValue1 = 0;
int mouseStepX = 0;
int mouseStepY = 0;
// incoming osc message are forwarded to the oscEvent method.
void oscEvent(OscMessage theOscMessage) {
//println(theOscMessage.addrPattern());
if (theOscMessage.addrPattern().equals("/analog/0")){
mouseStepX = theOscMessage.get(0).intValue();
} else if(theOscMessage.addrPattern().equals("/analog/1")){
mouseStepY = theOscMessage.get(0).intValue();
} else if(theOscMessage.addrPattern().equals("/digital/1")){
digitalValue1 = theOscMessage.get(0).intValue();
}
}
Descrizione dello sketch
le prime due linee 01 e 02: importano le librerie osc e net necessarie alla comunicazione di rete ed al protocollo OSC;
linea 04: inizializza la classe OscP5 definendo l’oggetto oscP5;
linea 07: definisci la dimensione della finestra in pixel;
linea 08: stabilisci il framerate di refresh dell’immaine a 30fps;
linea 10: usa l’istanza oscP5 come nuovo oggetto in ascolto sulla porta 9001;
linea 15: imposta lo sfondo nero;
linee 17-23: imposta la dimensione del font e scrivi i testi delle linee 18,20,22 seguite dai valori 19,21,23 che saranno popolati dai dati ricevuti via network;
linea 25: imposta che la prossima figura disegnata sia vuota;
linea 26: imposta il bordo bianco;
linea 27: disegna un quadrato, ache se definito come rettangolo, di 200×200 pixel partendo dalla coordinata 50x 20y;
linee 29-30: se il valore digitale presente sullo switch è 0 imposta il riempimento della figura, che disegnerai alla linea 33, come “rosso”, altrimenti bianco;
linee 31-32: calcola la posizione di X e Y rimappando i valori letti dal Joystick per ogni canale da 0 a 1023 in luogo delle coordinate del quadrato disegnato 50,230;
linea 33: disegna un rettangolo 20×20 in posizione X ed Y come calcolate alle lilnee precedenti;
linea 34: riporta il riempimento a bianco per essere certo che indifferentemente dal valore dello switch i successivi disegni abbiano riempimento bianco;
Il video
Il video è la dimostrazione del WiFi WeMos OSC Processing partedo dal processo di acquisizione dei dati dal Joystick, la trasmissione WiFi OSC fino a Processing per la visualizzazione:
ho cercato di ottenere la migliore sincronia possibile tra le due componenti del video.


Il blog mauroalfieri.it ed i suoi contenuti sono distribuiti con Licenza