Hola!
Tengo una duda al respecto del modo de comunicacion serial de arduino.
Resulta que mediante consola de Linux(Shell) mando el comando: $echo 'e' > /dev/ttyACM0 el lo que hace es mandar por el puerto en que esta montado arduino la letra 'e'. Ahora, el ejemplo de arduino que uso es el que esta en esta pagina: http://arduino.cc/en/Tutorial/SwitchCase2.
Resulta que al mandar el comando, arduino si recibe el comando(Prende el led de Rx), pero no realiza la accion de encender el led correspondiente. Lo que se me ocurrio era ver lo que leia, asi que al ejemplo le agregue el la linea: Serial.print(char(inByte)); quedando el codigo asi:
void setup() {
// initialize serial communication:
Serial.begin(9600);
// initialize the LED pins:
for (int thisPin = 2; thisPin < 7; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// read the sensor:
if (Serial.available() > 0) {
int inByte = Serial.read();
// do something different depending on the character received.
// The switch statement expects single number values for each case;
// in this exmaple, though, you're using single quotes to tell
// the controller to get the ASCII value for the character. For
// example 'a' = 97, 'b' = 98, and so forth:
switch (inByte) {
case 'a':
digitalWrite(2, HIGH);
Serial.print(char(inByte));
break;
case 'b':
digitalWrite(3, HIGH);
Serial.print(char(inByte));
break;
case 'c':
digitalWrite(4, HIGH);
Serial.print(char(inByte));
break;
case 'd':
digitalWrite(5, HIGH);
Serial.print(char(inByte));
break;
case 'e':
digitalWrite(6, HIGH);
Serial.print(char(inByte));
break;
default:
// turn all the LEDs off:
for (int thisPin = 2; thisPin < 7; thisPin++) {
digitalWrite(thisPin, LOW);
}
}
}
}
En efecto, en la consola serial me muestra que si recibe la letra 'e', pero esta vez que abri la consola, el led enciende y despues apaga. Lo que me hace suponer una cosa: ¿Cuando se abre la terminal serial de arduino esta mandara una señal a la placa para activar el serial en modo recepcion? si es asi, cual? por que he notado de que cada vez que abro la consola, se envia una señal a la placa, y despues de ellos cualquier cosa que mande se recibe de manera adecuada. De lo contrario si recibe el dato pero no ejecuta lo que se establece en el codigo.
Cualquier comentario es bien recibido, Gracias!
Tengo una duda al respecto del modo de comunicacion serial de arduino.
Resulta que mediante consola de Linux(Shell) mando el comando: $echo 'e' > /dev/ttyACM0 el lo que hace es mandar por el puerto en que esta montado arduino la letra 'e'. Ahora, el ejemplo de arduino que uso es el que esta en esta pagina: http://arduino.cc/en/Tutorial/SwitchCase2.
Resulta que al mandar el comando, arduino si recibe el comando(Prende el led de Rx), pero no realiza la accion de encender el led correspondiente. Lo que se me ocurrio era ver lo que leia, asi que al ejemplo le agregue el la linea: Serial.print(char(inByte)); quedando el codigo asi:
void setup() {
// initialize serial communication:
Serial.begin(9600);
// initialize the LED pins:
for (int thisPin = 2; thisPin < 7; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// read the sensor:
if (Serial.available() > 0) {
int inByte = Serial.read();
// do something different depending on the character received.
// The switch statement expects single number values for each case;
// in this exmaple, though, you're using single quotes to tell
// the controller to get the ASCII value for the character. For
// example 'a' = 97, 'b' = 98, and so forth:
switch (inByte) {
case 'a':
digitalWrite(2, HIGH);
Serial.print(char(inByte));
break;
case 'b':
digitalWrite(3, HIGH);
Serial.print(char(inByte));
break;
case 'c':
digitalWrite(4, HIGH);
Serial.print(char(inByte));
break;
case 'd':
digitalWrite(5, HIGH);
Serial.print(char(inByte));
break;
case 'e':
digitalWrite(6, HIGH);
Serial.print(char(inByte));
break;
default:
// turn all the LEDs off:
for (int thisPin = 2; thisPin < 7; thisPin++) {
digitalWrite(thisPin, LOW);
}
}
}
}
En efecto, en la consola serial me muestra que si recibe la letra 'e', pero esta vez que abri la consola, el led enciende y despues apaga. Lo que me hace suponer una cosa: ¿Cuando se abre la terminal serial de arduino esta mandara una señal a la placa para activar el serial en modo recepcion? si es asi, cual? por que he notado de que cada vez que abro la consola, se envia una señal a la placa, y despues de ellos cualquier cosa que mande se recibe de manera adecuada. De lo contrario si recibe el dato pero no ejecuta lo que se establece en el codigo.
Cualquier comentario es bien recibido, Gracias!