Arduino: Cambiar color de una LED RGB por puerto serie desde python (1/3)
Esta vez, la idea es tener una LED RGB en nuestra Arduino y cambiar el color de la misma enviando los valores correspondientes rojo, verde y azul por el puerto serie. Probablemente no tengáis puerto serie en vuestro PC, pero eso no es problema ya que, aunque conectamos la Arduino por USB, en realidad el acceso es por puerto serie.
Antes de ponernos manos a la obra, veamos el resultado final:
Empezaremos programando nuestra Arduino. Lo primero es hacer las conexiones de los componentes. Debería quedar así:
Base del diseño de esta imagen hecha con Fritzing |
Una vez conectado todo, vamos con el código:
// recibo por puerto serie unos colores indicados por un programa // en python y enciendo el color correspondiente en una LED RGB #define PINROJO 11 #define PINVERDE 10 #define PINAZUL 9 void setup() { // cambio el modo de los pines a salida pinMode(PINROJO, OUTPUT); pinMode(PINVERDE, OUTPUT); pinMode(PINAZUL, OUTPUT); // inicializo el puerto serie Serial.begin(9600); } void loop() { // si tenemos conectado el puerto serie... while(Serial.available() > 0) { // buscamos el siguiente entero correcto en la cadena de datos int rojo = Serial.parseInt(); // otra vez int verde = Serial.parseInt(); // y otra int azul = Serial.parseInt(); // buscamos el fin de línea if (Serial.read() == '\n') { // adaptamos los valores a 0 a 255 rojo = constrain(rojo, 0, 255); verde = constrain(verde, 0, 255); azul = constrain(azul, 0, 255); // encendemos los distintos colores de la LED analogWrite(PINROJO, rojo); analogWrite(PINVERDE, verde); analogWrite(PINAZUL, azul); // Mostramos los 3 numeros en hexadecimal en el monitor serial Serial.print(rojo, HEX); Serial.print(" "); Serial.print(verde, HEX); Serial.print(" "); Serial.println(azul, HEX); } } }
Como vemos, no es muy complicado. La última parte, la de mostrar en hexadecimal el color, es simplemente para comprobar que se ha recibido bien.
Aquí tenéis el archivo .ino: archivo.
Ahora que ya hemos programado nuestra Arduino, vamos a probar si funciona.
Con el IDE abierto, abrimos el Monitor Serial:
El monitor serial se encuentra arriba a la derecha, como podemos ver en la imagen anterior. También debemos cambiar abajo el modo a Nueva Línea si no lo tenemos ya así.
Para comprobar que funciona correctamente, escribiremos en la parte superior los valores RGB (rojo, verde, azul) que queramos, siempre que sean números de 0 a 255 y lo hagamos separados por comas. Por ejemplo, 255,0,0 para el color rojo:
Una vez escrito, pulsaremos la tecla Enter (o pulsaremos el botón Enviar). Vemos como nuestra Arduino ha respondido con el color en hexadecimal, así que sabemos que el dato ha sido recibido y hemos llegado a la última parte del código.
Pero, ¿ha funcionado? Miramos hacia nuestra LED RGB y vemos que el resultado ha sido el correcto:
En la siguiente entrega veremos cómo diseñar el programa con Qt Designer y, en la posterior, cómo programarlo en python.
Un saludo.
Comentarios
Publicar un comentario
En entradas antiguas, los comentarios quedarán pendientes de moderación. Si tu comentario tarda en aparecer, ten paciencia ;D