bonjours,
je tente de faire un proto pour envoyer l'etat des pin digital d'un arduino mega vers un mac avec MAX MSP (language objet), via OSC
j'ai un peu pret tout et cela commence a marche mais un probleme sur laquel je calle.
voici le prog arduino:
#include <SPI.h>
#include <Ethernet.h>
#include <ArdOSC.h>
byte myMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte myIp[] = { 192, 168, 127, 11 }; //adresse du module
int destPort=12001;//port de communication idem sur max et module
byte destIp[] = { 192, 168, 127, 10 };//adresse de l'ordinateur
String adr1, adr2 ;
char adr3;
char oscadr;
OSCClient client;
const int firstPin = 2; // first digital input
const int inputNumber = 6; // number of inputs
int digitalStates[inputNumber];
//create new osc message
OSCMessage mes;
void setup(){
// configure all your inputs
for(int i = firstPin ; i < inputNumber + firstPin ; i++)
{
pinMode(i, INPUT);
}
Ethernet.begin(myMac ,myIp);
// initialize the pushbutton pin as an input:
adr1 = String("/Ard/");
adr2 = String ();
}
void loop(){
//////etat des entres numerique//////
for(int i = firstPin ; i < inputNumber + firstPin ; i++)
{
int currentPinState = digitalRead(i);
adr2 = adr1 +i ;
char adr3[50];
adr2.toCharArray(adr3, 50);
[color=green] char oscadr[]= adr3();[/color]
mes.setAddress(destIp,destPort);
mes.beginMessage(oscadr);
mes.addArgInt32(currentPinState);
client.send(&mes);
mes.flush(); //object data clear
delay(500);
}
}
le probleme est qu'il faut une adresse en char pour OSC
je doit avoir un Pb de class
mais je ne vois pas
j'ai une erreur: 'adr3' cannot be used as a function
quelqu'un peut m'aider
Edit de Jean-François : Merci de mettre le code entre les balises, le bouton avec le " # "
Pourquoi remets tu ton code faux que j'ai déjà corrigé ci-dessus ? char oscadr[] = adr3(); est FAUX et ARCHI FAUX pour plusieurs raisons
adr3 est un tableau de char, donc ça n'a aucun sens de lui accoler des parenthèse qui sont l'appanage des fonctions. char oscadr[] est une déclaration de variable illégale. Acceptable comme déclaration de paramètre de fonction, cette syntaxe n'alloue pas de variable.
la fonction int16_t OSCMessage::beginMessage( const char *_addr); attend donc comme paramètre un pointeur sur char.
Comme indiqué dans ma 1ere répondre, c'est adr3 qu'il faut passer
Tu as déjà fait : adr1 = String("/Ard/"); --> adr1 = "/Ard/";
puis adr2 = adr1 + i; --> adr2 = "/Ard/2" ... adr2 = "/Ard/8"
Ensuite tu copie dans un tableau de char :