En la actualidad, saber cómo manipular dispositivos físicos desde una computadora se ha vuelto una competencia valiosa para aquellos apasionados por la electrónica. En este artículo, avanzaremos en esta dirección, mostrándote cómo activar un LED a través de las teclas de tu computadora utilizando la Comunicación Serial con Arduino.
¿Por qué un LED? A pesar de su simplicidad, el LED es un componente fundamental en la electrónica. Controlarlo te brinda una base sólida para gestionar dispositivos más avanzados en el futuro.
La operación es directa: al pulsar la tecla «1» de tu teclado, ya sea alfanumérico o numérico, el LED se activará. Cualquier otra tecla lo desactivará. Esta interacción entre tu computadora y un hardware externo demuestra la convergencia entre el ámbito digital y el físico.
El fundamento de esta interacción radica en la Comunicación Serial, un protocolo que facilita la transferencia de datos entre tu computadora y el Arduino. Si deseas entender a fondo este proceso, te sugiero revisar mi artículo previo sobre los principios de la Comunicación Serial con Arduino.
Ahora, profundicemos en el aspecto técnico: el código. A continuación, encontrarás el código esencial para ejecutar esta función.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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 } } } |
El código que hemos desarrollado utiliza una estructura selectiva doble para controlar la acción del LED. A través del comando if, el programa verifica el valor ingresado en input. Si el valor ingresado es 1, el programa activará el LED. En caso contrario, es decir, si el valor es diferente a 1, lo que definimos con el comando else, el LED se desactivará.
Una vez que el código esté finalizado, es momento de transferirlo al microcontrolador para verificar su funcionamiento. Es esencial que conecten el LED correctamente: el ánodo debe ir al Pin 13 del Arduino y el cátodo al pin GND. Afortunadamente, no se requiere una resistencia adicional para proteger el circuito. Para detalles más específicos sobre la conexión, les sugiero revisar el artículo cómo encender un LED con Arduino.
Para controlar el LED, usaremos el Monitor Serial de Arduino. Al ingresar el número 1 y presionar ENTER, el LED se activará. Si ingresamos cualquier otro carácter y presionamos ENTER, el LED se desactivará. Tal como podemos apreciar en el video, la implementación es directa y efectiva, convirtiéndose en un recurso esencial para quienes buscan desarrollar proyectos más avanzados, como un PLC o Control Lógico Programable.
Imaginen las aplicaciones prácticas de este conocimiento. Por ejemplo, podríamos controlar la iluminación de nuestra vivienda desde un ordenador si conectamos las luces a Arduino mediante un dispositivo de conmutación.
Dependiendo de la corriente, podríamos usar un TRIAC (acompañado de su optoacoplador correspondiente) para corriente alterna, o un transistor, ya sea NPN o PNP, para corriente directa. Arduino ofrece un mundo de posibilidades.
Con las líneas de código que hemos explorado en este artículo, tienen en sus manos la llave para desbloquear un sinfín de proyectos innovadores y soluciones tecnológicas.
En conclusión, espero que este artículo les haya proporcionado una visión clara y práctica de lo que pueden lograr con Arduino y la Comunicación Serial. La interacción entre el mundo digital y el físico es fascinante, y cada uno de ustedes tiene el potencial de crear soluciones innovadoras.
Los invito a compartir sus experiencias, dudas o proyectos en la sección de comentarios. Su participación enriquece nuestra comunidad y nos inspira a seguir explorando y compartiendo.
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.
Revisa el código que debe haber algo que este faltando
al teclear cualquier otra letra se debe apagar, ami me funciono bien
int input;
void setup() {
pinMode(12,OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()>0) {
input=Serial.read();
if (input==’1′){
digitalWrite(12,HIGH);
Serial.println(input);
}
else
{
digitalWrite(12,LOW);
Serial.println(input);
}
}
}
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.
Gracias por reportar el error
Gracias, con tu corrección , si funciona
Muchas gracias por la ayuda!!.
@santiago… pq estas usando comillas dobles para un solo caracter se usa solo una comilla 😉 (‘1’)
como harias eso en CCS Pic Compiler y un pic18F4550?
al que le aparesca el error solo copia y pega esto.
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
}
}
}
Antony un saludo, podrias modificar el código para poder controlar 4 o 5 leds? o sea tecla 1 un led, tecla 2 otro led, etc. .. o dime qe hay que modificar en el código. GRACIAS
Bueno, si lo que hicimos en este post es agregar una salida (pinmode) para el pin 13, debes agregar una para cada uno de los pines de salida que vayas a usar. Luego solo te limitas a agregar condiciones para los caracteres que recibas
Como hago para controlar varios leds por puerto serial con pwm?, ayuda por favor.
se puede usar letras!!!
que con la letra «E»mayúscula ENCIENDA y con la «e» se apague!!!!
Viendo los caracteres como ASCII
¿Como podría hacerle para utilizar mas de 2 caracteres?
https://panamahitek.com/enviar-numeros-de-mas-de-un-digito-a-arduino/
Hola. Ya hice todas las pruebas y no logro hacerlo andar. Cuando escribo 1 en el monitor serial, el led solo pestañea o sea prende y apaga en un segundo y no logro que quede encendido. Tengo el arduino uno. Ayuda porfa!!!
Posiblemente es porque tienes el monitor serie en «Nueva línea». Cambia la configuración a «sin salto de linea»
como hago esto con texto
Antony mil gracias, me funciono perfecto, me abre grandes posibilidades.
Un abrazo!
Camilo Forero Q.
COMO PUEDO PRENDER Y APAGAR UN LED CON LA MISMA LETRA, O CON EL MIS CARACTER.
Eso es un problema de programación. Fácil de resolver con un poco de lógica
La clásica es utilizar una variable boolena.
bool estadoLed = true;
…
…
bool alPrecionarCarcacter(){ //eventos
estadoLed = – estadoLed; //Se permuta entre true y false
}
Almacena en memoria un valor numérico, realiza también la colocación de 3 LED’s, usando los pines 10, 11 y 12, luego provoca la lectura de dicho valor, si el valor leído es igual a 0, que muestre en el monitor serial la frase «Qué frío» y todos los leds apagados.
Si el valor leído es igual a 20 la frase «clima agradable» y deberá encenderse uno de los led.
Si el valor leído es igual a 30, que muestre en el monitor serial la frase «Qué calor» y encender dos led.
Si el valor leído es superior a 42, que muestre en el monitor serial la frase «Insoportable» y deberán encenderse los tres led.
Puede ayudarme con mi ejercicio? ;(
No
Para que sirve y para que se utiliza
Este es el principio fundamental de cualquier proyecto de control. Esas luces parecen poco, pero con la electrónica adecuada podrían ser las luces de tu casa, el aire acondicionado, un motor eléctrico o lo que sea. Con la programación mostrada se pueden lograr muchas cosas en el mundo de la electrónica
hola me gusta este tutorial, sigue adelante, que Dios te bendiga, mi pregunta es porque no corre el programa si en vez de int uso String
Donde?
Hola,si quiero regular la intensidad con un valor que le ingrese al monitor serial del arduino,como le hago??????
Tienes que usar PWM con la función analogWrite para cambiar la intensidad del LED