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

12
4882
GARD Pro Not Registered

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:

 

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

 

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á.

GARD Pro Not Registered

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.

GARD Pro Not Registered

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.

Compartir
Ingeniero Electromecánico, graduado de la Universidad Tecnológica de Panamá. Miembro fundador de Panama Hitek. Entusiasta de la electrónica y la programación.
  • Ivan Barrios

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

  • Jose Velasco

    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

      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

    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

    como harias eso en CCS Pic Compiler y un pic18F4550?

  • Uriel Uribe

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

  • felix vargas

    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.

  • Santiago

    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

    • Victor Becerra

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

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