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

34
59198

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.

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

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.

5 1 vote
Article Rating
Suscríbete
Notify of
guest

34 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
osvaldo
osvaldo
11 months ago

Hola,si quiero regular la intensidad con un valor que le ingrese al monitor serial del arduino,como le hago??????

yakelin
yakelin
1 year ago

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

Laura
Laura
3 years ago

Para que sirve y para que se utiliza

Rey Valdés
Rey Valdés
3 years ago

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… Read more »

Rey Valdés
Rey Valdés
3 years ago
Reply to  Rey Valdés

Puede ayudarme con mi ejercicio? ;(

JULIAN BETANCUR
JULIAN BETANCUR
3 years ago

COMO PUEDO PRENDER Y APAGAR UN LED CON LA MISMA LETRA, O CON EL MIS CARACTER.

Yeyo
Yeyo
3 years ago

La clásica es utilizar una variable boolena.
bool estadoLed = true;


bool alPrecionarCarcacter(){ //eventos
estadoLed = – estadoLed; //Se permuta entre true y false
}

Camilo Forero Q.
Camilo Forero Q.
3 years ago

Antony mil gracias, me funciono perfecto, me abre grandes posibilidades.
Un abrazo!

Camilo Forero Q.

Dante
Dante
4 years ago

como hago esto con texto

Julian
Julian
4 years ago

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!!!

Mario
Mario
5 years ago

¿Como podría hacerle para utilizar mas de 2 caracteres?

isaac ortiz
isaac ortiz
5 years ago

se puede usar letras!!!
que con la letra «E»mayúscula ENCIENDA y con la «e» se apague!!!!

Ivan Barrios
Ivan Barrios
6 years ago

Como hago para controlar varios leds por puerto serial con pwm?, ayuda por favor.

Jose Velasco
Jose Velasco
7 years ago

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

Antony García González
Antony García González
7 years ago
Reply to  Jose Velasco

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

Jose Velasco
Jose Velasco
7 years ago

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

}

}
}

Adrian Martinez
Adrian Martinez
7 years ago

como harias eso en CCS Pic Compiler y un pic18F4550?

Uriel Uribe
Uriel Uribe
10 years ago

@santiago… pq estas usando comillas dobles para un solo caracter se usa solo una comilla 😉 (‘1’)

felix vargas
felix vargas
10 years ago

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.

antonygarciagonzalez
10 years ago
Reply to  felix vargas

Gracias por reportar el error

walo
walo
5 years ago
Reply to  felix vargas

Gracias, con tu corrección , si funciona

Lean
Lean
5 years ago
Reply to  felix vargas

Muchas gracias por la ayuda!!.

Santiago
Santiago
10 years ago

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.

antonygarciagonzalez
10 years ago
Reply to  Santiago

Revisa el código que debe haber algo que este faltando

Victor Becerra
Victor Becerra
6 years ago
Reply to  Santiago

al teclear cualquier otra letra se debe apagar, ami me funciono bien

Victor Becerra
Victor Becerra
6 years ago
Reply to  Victor Becerra

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);
}
}
}