En esta entrega nos enfocaremos en encender un LED con las teclas de nuestra computadora, utilizando Comunicación Serial con Arduino.
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:
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 } } } |
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.
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
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?
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
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 »
Puede ayudarme con mi ejercicio? ;(
No
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
}
Antony mil gracias, me funciono perfecto, me abre grandes posibilidades.
Un abrazo!
Camilo Forero Q.
como hago esto con texto
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 podría hacerle para utilizar mas de 2 caracteres?
https://panamahitek.com/enviar-numeros-de-mas-de-un-digito-a-arduino/
se puede usar letras!!!
que con la letra «E»mayúscula ENCIENDA y con la «e» se apague!!!!
Viendo los caracteres como ASCII
Como hago para controlar varios leds por puerto serial con pwm?, ayuda por favor.
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
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
}
}
}
como harias eso en CCS Pic Compiler y un pic18F4550?
@santiago… pq estas usando comillas dobles para un solo caracter se usa solo una comilla 😉 (‘1’)
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!!.
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);
}
}
}