Je souhaite synchroniser un stroboscope programmé dans le arduino avec max msp.
Voilà le code que j'utilise pour le stroboscope :
/*
Police Strobe Light
Create police strobe light effect with speed control of the blink.
Coded by: arduinoprojects101.com
*/
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
int sensorValue = 0; // value read from the pot
int timer = 0; // delay value
void setup() {
// initialize the digital pin 12, 11 as an output.
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map sensorValue reading to match timer delay between 10ms to 500ms
timer = map(sensorValue, 0, 1023, 10, 500);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
delay(2);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
delay(timer);
}
Il fonctionne très bien avec un potentiomètre sur l'entrée A0.
J'aimerai maintenant pouvoir modifier le valeur timer via max msp.
J'ai trouvé plusieurs pistes ça et là.
J'avais réussi à faire clignoter une led avec max msp via le patch "ArduinoMax_InOut_forDummies" disponible en bas de page à cette adresse : Arduino Playground - MaxMSP
Le problème est que max msp ne fait pas clignoter les leds de manière précise. il ya des bugs dans la fréquence de clignotement.
Du coup j'aimerai laisser le programme du arduino activer le clignotement car il le fait très bien
Au final, je souhaite envoyer une valeur de timer, de 0 à 1024, de max msp vers arduino.
J'ai fait des recherches aussi via une communication midi virtuel via "loopbe" mais sans résultat.
La plupart des pistes que j'ai trouvé contrôle directement les sorties et ce n'est pas ce que je souhaite. Finalement je souhaite juste envoyer une valeur nombre au arduino.
Est ce quelqu'un aurait une idée sur la manière de procéder ?
Je relance ce topic car j'aimerai faire évoluer mon stroboscope.
J'aimerai à la fois contrôler le temps, la valeur "timer", mais aussi cette valeur : delay(2); qui correspond au temps où les leds restent allumées.
Mais j'ai vraiment du mal à comprendre quelle partie de ce code je dois utiliser. Est ce que quelqu'un aurait une idée des lignes à insérer dans mon code ?
const int ledPin = 13;
int timer = 0;
int vitesse = 0;
void setup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
int red = Serial.parseInt();
// do it again:
int green = Serial.parseInt();
if (Serial.read() == '\n') {
timer = green;
vitesse = map(red, 0, 255, 0, 127);
}
}
digitalWrite(13, HIGH);
delay(timer);
digitalWrite(13, LOW);
delay(vitesse);
}
J'ai gardé les noms des constantes red et green par flème.
Mon code est surement limite car c'est de la bidouille, mais ça fonctionne pas trop mal.
J'ai des petits soucis quand je bouge les faders trop vite car ça fait bugguer le arduino. Trop d'infos en même temps je pense mais ça se rétablit au bout de quelques secondes.
Si quelqu'un est intéressé, je peux mettre un lien vers mon patch max/msp (je ne peux pas poster le code ici car il est trop long). C'est un patch qui réceptionne des données de faders de l'application android "TouchOSC" et les envoie au arduino après traitement.
Décidément ce topic n'intéresse pas grand monde
Ou alors...
je trouve les réponses trop rapidement.