bonjour à tous,
malgré les exemples trouvés sur le net ("arduino meets processing") et etant debutant, je n'arrive pas a récuperer dans processing la valeur d'un capteur envoyée depuis mon arduino via le port serial.
quelqu'un pourrai eventuellment m'expliquer la maniere la plus simple d'y parvenir?
merci d'avance à ceux qui pourront m'aider.
Hors ligne
Salut,
difficile de te répondre, si tu ne donnes pas plus d'infos sur le montage arduino, sa programmation,
et le sketch processing.
Pour commencer,
Es tu sur que ta carte Arduino est ok ?
Es tu sur que ton sketch utilise le bon port serial ?
Dernière modification par ibakusha (2008-04-20 12:46:35)
Hors ligne
salut, merci pour ta reponse,
c'est bon du coté arduino, j'arrive a avoir ma valeur,
mais j'ai rien dans processing, voici mes sketches:
arduino:
int pin1 = 0;
int led = 13;
int val = 0;
void setup()
{
pinMode(led, OUTPUT);
pinMode(pin1, INPUT);
beginSerial(9600);
}
void loop()
{
val = analogRead(pin1);
digitalWrite(led, HIGH);
delay(val);
digitalWrite(led, LOW);
delay(val);
}
et processing:
import processing.serial.*;
Serial port;
int val;
void setup()
{
size(100, 100);
port = new Serial(this, 9600);
}
void draw()
{
if (0 < port.available()) {
val = port.read();
}
background(val/4);
ma couleur ne change pas...snif
}
Dernière modification par ariel (2008-04-20 12:57:36)
Hors ligne
Dans ton prog arduino
void loop() { analogValue = analogRead(pin1); Serial.print(analogValue, BYTE); delay(100); /* A mon avis inutile ne fait qu'ajouter de l'attente digitalWrite(led, HIGH); delay(val); digitalWrite(led, LOW); */ //pour avoir un controle sur la led if (analogValue < 512) digitalWrite(led, HIGH); else digitalWrite(led, LOW); }
Pour que cela fonctionne moi je dois ajouter au sketch processing une variable pour le nom du port
String portname = "le port serial de l'arduino";
et changer
port = new Serial(this, portname, 9600);
Il faut que tu regardes Serial.print dans la doc arduino
pour voir comment utiliser les données que tu envoies avec la carte.
Hors ligne
merci,
donc comme ça dans arduino, ça devrait fonctionner?
int capteur1 = 0;
int LED1 = 13;
int lum1 = 0;
void setup()
{
pinMode(LED1, OUTPUT);
Serial.begin(9600);
}
void loop() {
lum1 = analogRead( capteur1);
{ Serial.print(lum1,BYTE);
delay(lum1);
}
digitalWrite(LED1, HIGH);
delay(lum1);
digitalWrite(LED1, LOW);
delay(lum1);
}
or les valeurs que je reçois dans le serial monitor sont des lettres.... pas de valeur "normales"
PS: est ce que chez vous les exemples du site arduino meets processing fonctionnent? merci:)
Dernière modification par ariel (2008-04-20 19:29:43)
Hors ligne
Un truc genre hello world potentiometre qui fonctionne chez moi.
avec le même montage que tu trouves ici
http://webzone.k3.mah.se/projects/ardui … /poti.html
Fonctionne avec d'autres capteurs bien sur
/* processing potentio_test.pde */ import processing.serial.*; Serial port; String portname = "/dev/ton port serie a mettre ici"; int value; void setup() { size(100, 100); port = new Serial(this, portname, 9600); } void draw() { if (0 < port.available()) { value = port.read(); println(value); } fill(value); rect(0,0,100,100); }
/*Arduino ptentiometre_test*/ int analogInput = 3; int led = 13; int analogValue = 0; void setup() { pinMode(led, OUTPUT); pinMode(analogInput, INPUT); beginSerial(9600); } void loop() { analogValue = analogRead(analogInput); Serial.print(analogValue/4, BYTE);//1024/4 = 256 // pour voir si le montage fonctionne if (analogValue < 512) digitalWrite(led, HIGH);else digitalWrite(led, LOW); delay(100); }
Tu devrais lire ca
http://www.arduino.cc/en/Serial/Print
Hors ligne
oui j'avais lu la doc de la librairie serial.
merci beaucoup en tout cas, je vais essayer ça...
bonne soirée
Hors ligne