Bonjour,
Ayant découvert que l'on pouvait utiliser TouchOSC pour communiquer avec les cartes arduino, je me suis attelé à la tâche mais j'ai un petit soucis car ma carte crash lorsque j'utilise des faders sur mon interfaces.
Je pense qu'elle sature par l’afflux de données qu'elle reçoit mais je ne sais pas comment arranger ça.
J'ai mis une fonction flush mais ça ne fait rien, ça plante pareil donc si quelqu'un aurait une petite idée d'où cela pourrait provenir je suis preneur
Voici mon code pour ceux que ça interesse :
#include <SPI.h>
#include <Ethernet.h>
#include <ArdOSC.h>
byte myMac[] = { 0x90, 0xA2, 0xDA, 0x06, 0x00, 0xD2 };
byte myIp[] = { 192, 168, 0, 36 };
int serverPort = 10000;
int destPort=12000;
// int ledPin = 12;
//int flag=0;
OSCServer server;
OSCClient client;
OSCMessage global_mes;
int led4 = 3;
int led2 = 5;
int led3 = 8;
int led1 = 9;
int led5 = 10;
int led6 = 14;
// initialize the stepper library on pins 8 through 11:
long val1 = 0;
long val2 = 0;
long val3 = 0;
long val4 = 0;
long val5 = 0;
long val6 = 0;
long val7 = 0;
long val8 = 0;
long val9 = 0;
long val10 = 0;
void setup(){
Serial.begin(9600);
Serial1.begin(9600);
Ethernet.begin(myMac ,myIp);
server.begin(serverPort);
//set callback function & oscaddress
server.addCallback("/2/red",&func1);
server.addCallback("/1/green",&func2);
server.addCallback("/2/blue",&func3);
server.addCallback("/1/fpink",&func4);
server.addCallback("/2/fred",&func5);
server.addCallback("/1/pc1",&func6);
server.addCallback("/1/pc2",&func7);
server.addCallback("/1/autoset",&func8);
server.addCallback("/1/LAN",&func9);
server.addCallback("/1/mute",&func10);
//pinMode(led6, OUTPUT);
// pinMode(ledPin, OUTPUT);
// stepper.setSpeed(50);
}
void loop(){
if(server.aviableCheck()>0){
// Serial.println("alive! ");
}
/*analogWrite(led1, val1);
analogWrite(led2, val2);
analogWrite(led3, val3);
analogWrite(led4, val4);
analogWrite(led5, val5);
analogWrite(led6, val6);*/
}
//LED 9
void func1(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val1 = (long)(value*255);
//Serial.println(val1);
switch (val1){
case 0:
digitalWrite(led1, LOW);
break;
case 255:
digitalWrite(led1, HIGH);
break;
}
global_mes.flush();
}
//VP ON
void func2(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val2 = (long)(value*255);
//Serial.println(val2);
switch (val2){
case 0:
//Serial.println ("le bouton vert est désactivé");
Serial1.println("PWR OFF");
Serial1.println("PWR OFF");
delay (500);
Serial1.println("PWR OFF");
Serial1.println("PWR OFF");
delay (500);
Serial1.println("PWR OFF");
Serial1.println("PWR OFF");
break;
case 255:
//Serial.println ("le bouton vert est activé");
Serial1.println("PWR ON");
Serial1.println("PWR ON");
delay (500);
Serial1.println("PWR ON");
Serial1.println("PWR ON");
delay (500);
Serial1.println("PWR ON");
Serial1.println("PWR ON");
delay (500);
Serial1.println("PWR ON");
Serial1.println("PWR ON");
break;
}
global_mes.flush();
}
//RELAIS LIGHT
void func3(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val3 = (long)(value*255);
//Serial.println(val3);
switch (val3){
case 0:
digitalWrite(led3, LOW);
break;
case 255:
digitalWrite(led3, HIGH);
break;
}
global_mes.flush();
}
//SON PC
void func4(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val4 = (long)(value*255);
//Serial.println(val4);
global_mes.flush();
}
//GRADA LIGHT
void func5(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val5 = (long)(value*255);
//Serial.println(val5);
global_mes.flush();
}
//PC1
void func6(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val6 = (long)(value*255);
//Serial.println(val6);
switch (val6){
case 0:
//Serial.println ("le bouton vert est désactivé");
break;
case 255:
//Serial.println ("le bouton vert est activé");
Serial1.println("SOURCE 11");
Serial1.println("SOURCE 11");
Serial1.println("SOURCE 11");
Serial1.println("SOURCE 11");
break;
}
global_mes.flush();
}
//PC2
void func7(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val7 = (long)(value*255);
//Serial.println(val6);
switch (val7){
case 0:
//Serial.println ("le bouton vert est désactivé");
break;
case 255:
//Serial.println ("le bouton vert est activé");
Serial1.println("SOURCE 21");
Serial1.println("SOURCE 21");
Serial1.println("SOURCE 21");
Serial1.println("SOURCE 21");
break;
}
global_mes.flush();
}
//AUTOSET
void func8(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val8 = (long)(value*255);
//Serial.println(val6);
switch (val8){
case 0:
//Serial.println ("le bouton vert est désactivé");
break;
case 255:
//Serial.println ("le bouton vert est activé");
Serial1.println("KEY 4A");
Serial1.println("KEY 4A");
Serial1.println("KEY 4A");
Serial1.println("KEY 4A");
break;
}
global_mes.flush();
}
//LAN
void func9(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val9 = (long)(value*255);
//Serial.println(val6);
switch (val9){
case 0:
//Serial.println ("le bouton vert est désactivé");
break;
case 255:
//Serial.println ("le bouton vert est activé");
Serial1.println("SOURCE 50");
Serial1.println("SOURCE 50");
Serial1.println("SOURCE 50");
Serial1.println("SOURCE 50");
break;
}
global_mes.flush();
}
//MUTE
void func10(OSCMessage *_mes){
float value = _mes->getArgFloat(0);
val10 = (long)(value*255);
//Serial.println(val6);
switch (val10){
case 0:
//Serial.println ("le bouton vert est désactivé");
Serial1.println("MUTE OFF");
Serial1.println("MUTE OFF");
Serial1.println("MUTE OFF");
Serial1.println("MUTE OFF");
break;
case 255:
//Serial.println ("le bouton vert est activé");
Serial1.println("MUTE ON");
Serial1.println("MUTE ON");
Serial1.println("MUTE ON");
Serial1.println("MUTE ON");
break;
}
global_mes.flush();
}