Le programme sur l'arduino est le suivant.
CODE
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println((int)incomingByte, DEC);
}
}
L'un des problèmes majeur est que via le terminal nous envoyons des caractères ASCII et non pas des valeurs
If input a 1 in it should show 1 right?
Well it instead it says:
I received: 49
For the letter A it says:
I received: 69
OUPS
L'une des idées est d'envoyer des valuers entières via processing sur le port série et de lire les réponses donnée par l'arduino
CODE sous processing
// Example by Tom Igoe
import processing.serial.*;
// The serial port:
Serial myPort;
// List all the available serial ports:
println(Serial.list());
/* I know that the first port in the serial list on my mac
is always my Keyspan adaptor, so I open Serial.list()[0].
Open whatever port is the one you're using.
*/
myPort = new Serial(this, Serial.list()[0], 9600);
// Send a capital A out the serial port:
while(keyPressed != true)
{
myPort.write(65);
}
L'une des difficultés est maintenant de faire lire à processing des données rentrées au clavier dans le même programme.
Attention pour rentrer les valeurs il faut selectionner la fenêtre de dessin
Code processing pour rentrer des valeurs
void draw() {
println(key);
}
Autre truc: il faut a chaque fois fermer le terminal avant de lancer une nouvelle utilisation du port série.
code processing
import processing.serial.*;
Serial myPort; // The serial port
int whichKey = -1; // Variable to hold keystoke values
int inByte = -1; // Incoming serial data
void setup() {
size(400, 300);
// create a font with the third font available to the system:
// List all the available serial ports:
println(Serial.list());
// I know that the first port in the serial list on my mac
// is always my FTDI adaptor, so I open Serial.list()[0].
// In Windows, this usually opens COM1.
// Open whatever port is the one you're using.
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
}
void draw() {
}
void keyPressed() {
// Send the keystroke out:
myPort.write((int)key);
whichKey = key;
}
meme probleme les caractéres arrivent en ascii
code
import processing.serial.*;
Serial myPort; // The serial port
int whichKey = -1; // Variable to hold keystoke values
int inByte = -1; // Incoming serial data
void setup() {
size(400, 300);
// create a font with the third font available to the system:
// List all the available serial ports:
println(Serial.list());
// I know that the first port in the serial list on my mac
// is always my FTDI adaptor, so I open Serial.list()[0].
// In Windows, this usually opens COM1.
// Open whatever port is the one you're using.
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
}
void draw() {
}
void keyPressed() {
// Send the keystroke out:
int entier;
//char[] ascii;
//ascii=key;
entier=int(key);
myPort.write(entier);
println(key);
}
liens
http://wiki.processing.org/w/Tom_Igoe_Interview
Aucun commentaire:
Enregistrer un commentaire