Comunicación Serial con Arduino: Encender luces desde el teclado de nuestra computadora

En esta entrega nos enfocaremos en encender un LED con las teclas de nuestra computadora.

Para encender el LED utilizaremos la tecla 1 del teclado alfanumérico (o bien del numérico) y cualquier otra tecla se encargará de apagar el LED.

Nos basaremos en el ejemplo que publiqué en mi anterior post.

El código es el siguiente:

int input;
void setup(){
Serial.begin(9600);
}
 
void loop(){
if (Serial.available()>0){
 
input=Serial.read();
 
Serial.println(input);
 
}
}

A este código necesitamos agregarle algunas líneas para que funcione y cumpla con nuestros propósitos.

int input;
 
void setup(){
 
pinMode(13, OUTPUT); // Declaramos que utilizaremos el pin 13 como salida
 
Serial.begin(9600);
}
 
void loop(){
if (Serial.available()>0){
 
input=Serial.read();
 
if (input=='1'){
 
digitalWrite(13, HIGH); //Si el valor de input es 1, se enciende el led
 
}
 
else
 
{
 
digitalWrite(13, LOW); //Si el valor de input es diferente de 1, se apaga el LED
 
}
 
}
}

Como podemos apreciar, hemos agregado una estructura selectiva doble. El if nos ayuda a verificar el valor que tenga input. Cuando el valor que estemos tecleando sea 1, el LED se encenderá. Si el valor es diferente de uno (esto lo definimos con el else) entonces el LED se apagará.

Ahora que tenemos este código listo, podemos subirlo al microcontrolador y verificar si funciona o no.

Recuerden que deben colocar un LED con el ánodo en el Pin 13 de su Arduino y el cátodo en el pin GND de Arduino. No necesita resistencia de protección. Para más información consultar el post de Como encender un LED con Arduino.

Los comandos de encendido y apagado los enviaremos a Arduino utilizando el Monitor Serial. Cuando presionemos 1 y ENTER se encenderá el LED. Cuando presionemos cualquier otro caracter y ENTER se apagará.


Como podemos observar en el video, es muy sencillo lograr el resultado esperado. Esto supone una gran herramienta para cualquier persona que este interesada llevar a cabo proyectos de alto perfil. Este es el principio de un PLC o Control Lógico Programable.

Nosotros podríamos encender las luces de nuestra casa desde nuestra computadora si las conectamos a Arduino a través de un dispositivo de conmutación como un TRIAC (con su respectivo optoacoplador) para corriente alterna, o un transistor, dígase NPN o PNP para corriente directa. Las posibilidades con Arduino son inmensas y utilizando estas simples líneas de código que les he presentado en este post usted es capaz de abrirse a una infinidad de posibilidades.

Comments

comments

Antony García González

Nace el 30 de julio del año 1992 en Ciudad de Chitré, provincia de Herrera, Panamá. Crece y recibe su educación primaria y pre media en Guararé. Hacia el año 2008 inicia sus estudios de Bachillerato en Ciencias con Énfasis en Informática en el Instituto Coronel Segundo De Villarreal en la Villa de Los Santos. Se gradúa en el año 2010 e inicia sus estudios de Licenciatura en Ingeniería Electromecánica en la Universidad Tecnológica de Panamá (UTP), sede Azuero. En el 2013 inicia el proyecto Panama Hitek. Actualmente es el director del equipo de autores, cursa el séptimo semestre de su carrera y trabajar para la UTP como asistente de investigación, para la Unidad de Eficiencia Energética

8 Comments:

  1. Los he estado probando en el arduino UNO pero al compilar me saca errores primero con las comillas “1″ luego se las quite y enciende el led , pero nunca es capaz de apagarlo por mas que intente.

  2. amigos soy nuevo y tuve problemas con este codigo y lo pude corregir.. uso el arduino uno. primero quite las comillas y el numero uno por el valor ascii quedandome asi: if (input==49). me gusto el aporte… gracias.

  3. @santiago… pq estas usando comillas dobles para un solo caracter se usa solo una comilla ;) (’1′)

  4. al probar este código en el arduino me di cuenta que al poner numero como el 131 , 121, entre otro el led también se enciende , y con otro el led parpadea, a que se debe que esto ocurra?

    • antony.garcia.gonzalez@gmail.com

      Cuando se envían datos por el puerto Serie lo que sucede es que se envía caracter a caracter como si fuera una fila, donde cada caracter es leído de forma individual y por turnos. Al enviar el 131 estás en realidad enviando 1-3-1, lo que se interpreta como ON-OFF-ON. Por eso el LED parpadea. Se trata de enviar caracteres individuales y no cantidades compuestas, de más de 2 dígitos, aunque hay “métodos” para lograr esto

Leave a Reply