WiFi WeMos OSC Processing

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

WiFi WeMos OSC Processing

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.

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/wifi-wemos-osc-processing.html

Lascia un commento

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.