I am trying to get my Arduino Uno to communicate with Processing in order to use my Kinect Sensor, and ran in to trouble passing data from the Processing to the Uno. I tried running a basic sketch to change the brightness of an LED based on the serial input, and got some unusual results. No matter what I type into the Serial Monitor, Serial.read() returns -1. Please help!
void setup(){
pinMode(11, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
int input = Serial.read();
// debug serial input
Serial.println(Serial.read());
Serial.println(input);
// write to LED on PWM 11
analogWrite(11, input);
}
}
That output is correct (of course).
If Serial.available() is non-zero, which is what you test for, you are only guaranteed that there is at least one character in the queue. You are reading two.
You are printing each character as a decimal number. Each character is represented using ASCII code. Look up an ASCII table on Google. You'll find that the character for 1 is represented by the decimal number 49.
Changing "int input" to "byte input" will cause the variable to be printed as a character instead of as a decimal number.
I added debugging lines to the code I was actually using while communicating with Processing, and got different results. Now the serial input never equals 1 and byte input always equals 255
I don't know why I had that. Thanks. So that solved my main problem of the Arduino not talking to Processing (silly me). Now this is probably a really stupid question, but how do I get the serial input to read integers (i.e. values from 0 - 255)?