Go Down

Topic: Arduino-Processing une histoire de com. (Read 1 time) previous topic - next topic

firimeldaie

Aug 30, 2011, 10:11 pm Last Edit: Aug 30, 2011, 10:20 pm by firimeldaie Reason: 1
Bonjour à tous,

Voilà je débute dans la prog.arduino et processing, et je tente de faire communiquer les deux. Le soucis que je rencontre c'est que ça n'afficher pas la valeur que je veux sous processing.


Voici le code de l'arduino, piloter par un potar sur l'entrée A0(NDLR: un code trouvé sur un autre forum d'ailleurs "http://codelab.fr/104")

Quote
int analogInput = 0;  
int led = 13;  
int analogValue = 0;  
void setup()
{
pinMode(led, OUTPUT);
pinMode(analogInput, INPUT);
Serial.begin(9600);
}
void loop()
{
analogValue = analogRead(analogInput);  

// pour voir si le montage fonctionne
if (analogValue < 512) digitalWrite(led, HIGH);else digitalWrite(led, LOW);
Serial.println(analogValue/2.84,BYTE);
delay(250);
}



Le code processing:

Quote
import processing.serial.*;

Serial port;  
String portname = Serial.list()[2];  
int value;      


void setup()  
{
 port = new Serial(this, portname, 9600);
}

void draw()
{
 if (0 < port.available()) {  
  value = port.read();  
   println(value);    
 }

}


Au final je sais qu'en faisant varier le potar de 0 à 360 je récupère cette valeur sous le serial monitor d'ailleurs. Quand je lance alors processing j'ai pas du tout ça mais des valeurs entre 10 et 51.

Serial Monitor Arduino




Sous processing




Voilà si quelqu'un pourrait m'éclairer à ce sujet pour un petit newbie que je suis....... un grand merci

fdufnews

Ce que tu affiches sous processing c'est le code ASCII des caractères.
Dans ta copie d'écran on reconnait le code des nombres (51=3, 53=5, 13=fin de ligne, 10=saut de ligne).

firimeldaie

Merci pour la réponse, donc si je comprend bien les données que reçois proccessing il les traduits en ASCII ?
J'ai des valeurs sous arduino qui varie de 0 à 360, comment sous processing je peux afficher les valeurs ? dois je convertir chaque chiffre en code ASCII ?
(là ce sont des vrais question de débutants)

Parce que dans le programme d'origine il y a cette ligne
Quote
Serial.print(analogValue/4, BYTE);//1024/4 = 256


à la place de
Quote
Serial.println(analogValue/2.84,BYTE);


Dans le premier cas, ça affiche bien les 256 valeurs et dans mon cas je n'affiche pas les 360 valeurs.

Ce que j'aimerais faire en faite c est à partir d'un module IMU, afficher une horizon artificielle mais juste en roulage pour commencer. Mon soucis vient surtout de récupérer une donnée analogique en temps réels de l'arduino et de l'exploiter sous processing.

Je sais pas si c'est clair ou réalisable ce que je veux faire  =(

Go Up