Salut,
Je débute sur Processing et je recherche depuis plus de 5 heures comment récupérer des valeurs sur port série envoyées par Arduino.
Si quelqu'un pouvait m'aider, ce serait sympa
Hors ligne
Bonjour,
Va voir dans les exemples d'Arduino, tout en bas du sketch dans les commentaires figure le sketch Processing pouvant lire les données envoyées.
Sinon :
http://processing.org/reference/librari … read_.html
Mais tout dépend comment sont formatées les données en votées par l'Arduino. Donne nous le sketch Arduino pour que nous puissions te répondre et t'aider à avancer.
Hors ligne
Merci, a quoi correspondent les sketch Arduino ?
Hors ligne
Je suis pas sûr d'avoir compris ta question mais si c'est la signification de sketch que tu ne comprend pas, c'est comme ça qu'on appelle le fichier texte qui contient le code, donc envoie-nous ton code en fait !
Sinon voilà un exemple complet d'une communication simple entre Arduino et Processing, avec un code très bien annoté.
=> http://www.mon-club-elec.fr/pmwiki_mon_ … raphiquePC
Bon courage !
Hors ligne
Voici mon programme Arduino sur lequel j'envoie des infos sur le port série :
#define trigPin 8 // envoyer une info sur trigPin
#define echoPin 7 // lire la valeur d'echoPin sur la broche 7
#define trigPin2 10 // envoyer une info sur trigPin2
#define echoPin2 3 // lire la valeur d'echoPin2 sur la broche 3
long duration, distance; //durée utilisée pour calculer la distance pour le capteur 1
long duration2, distance2; //durée utilisée pour calculer la distance pour le capteur 2
float time;
float time1;
float time2;
float temps;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(trigPin2,OUTPUT);
pinMode(echoPin, INPUT);
pinMode(echoPin2,INPUT);
}
void loop() {
time = millis();
digitalWrite(trigPin, LOW);
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance = duration/58.2;
distance2 = duration2/58.2;
if (distance <= 10) {
time1 = millis();
time1 = time1 - time;
}
if (distance2 <= 10) {
time2 = millis();
time2 = time2 - time;
}
temps = time2 - time1;
Serial.println(temps);
//Delay 50ms before next reading.
delay(50);
}
J'aimerai pouvoir lire les valeurs de ma variable "temps" sur Processing afin de les exploiter et faire bouger une image.
Dernière modification par Kilian (2014-02-14 16:40:29)
Hors ligne
Merci
Hors ligne
Au vu de ton programme Arduino, la variable temps que tu envoies est un float (nombre à virgule) et la méthode que tu utilises Serial.println() alors dans Processing tu recevras une chaîne de caractère (String).
Je t'orienterais donc ici :
http://processing.org/reference/librari … ring_.html
Tu sembles utiliser des capteurs à Ultrasons SRF05 et je ne vois pas ce que tu cherches à récupérer.
Bon courage.
Hors ligne
Les capteurs que j'utilise sont des capteurs ultrasons HC-SR04
Je cherche en fait a programmer un semblant d'interface gestuelle et faire défiler des images avec les mains.
ma variable "temps" calcule le temps que met ma main à atteindre le second capteur, et selon le signe de la valeur obtenu, je connais le sens dans lequel je devrais faire défiler mon image.
Mes capteurs sont disposés ainsi:
Hors ligne
Pour obtenir deux mesures tu dois mettre les pins de déclenchement juste avant la lecture :
digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); digitalWrite(trigPin2, HIGH); delayMicroseconds(10); digitalWrite(trigPin2, LOW); duration2 = pulseIn(echoPin2, HIGH);
Comme les faisceaux de détection des capteurs sont peu larges, on peut postuler que la main ne croise pas les deux en même temps.
Je ferais un truc dans le genre :
Je n'ai pas de capteurs sous la main, donc c'est une idée que je te soumet.
Dernière modification par Mushussu (2014-02-16 08:57:54)
Hors ligne
Pages: 1