S?guenos en Facebook
S?guenos en Twitter
S?guenos en Instagram
Crazy Design
Alicante
ROBÓTICA EDUCATIVA      •      IMPRESIÓN 3D      •      DISEÑO      •      WEB      •      TIENDA DE ELECTRÓNICA
Mi Carrito
    Total: 0€
    PARPADEO DE UN LED MEDIANTE PUERTO SERIE CON ARDUINO
    ¿Quieres comprar las piezas de este tutorial para experimentar en casa? Pulsando en lo botones de abajo se añadiran los productos del tutorial automaticamente a tu carrito. Pulsa sobre el botón Añadir Todo si quieres que se añadan todas las piezas necesarias para este tutorial incluido protoboard, cables dupont y placa (Arduino, Raspberry Pi, MicroBit, ESP...) o pulsa sobre Añadir solo sensores para añadir todas las piezas menos las protoboard, cables dupont y placa (Arduino, Raspberry Pi, MicroBit, ESP...).

    Es este tutorial vamos a aprender a comunicarnos vía puerto serie con nuestro arduino y tratar el dato para generar una acción. En este caso, capturaremos el dato introducido por el usuario para que éste actúe como número de parpadeos dentro del sistema. Si estás iniciándote en el campo de la eléctronica y aún no sabes cómo funciona internamente un led te recomendamos que visites el tutorial de ¿Qué es un led?.


    Para conectarlo, pondremos en nuestra placa de prototipos el led, recordando en qué conector hemos puesto la pata larga del led (+). En la pata larga pondremos la resistencia de 220 Ohm y el otro extremos lo conectaremos al pin digital número 9 de nuestro Arduino.

    La patita corta del led (-) la conectaremos a un pin GND de nuestro Arduino. En los siguientes esquemas os mostramos gráficamente cómo conectarlo.

    Con Arduino Uno


    Con Arduino Mega


    Con Arduino Nano


    Ya lo tenemos todo listo para pasar a la programación. En esta programación vamos a hacer que nuestra placa escriba por serial una pregunta para solicitar que ingresemos el número de parpadeos que queremos que realice el led y se quede a la espera de haber introducido un dato en la consola serial y tras recibir el dato ejecute el parpadeo del led con el parámetro introducido.


    Para ello, vamos a explicar las funciones que vamos a usar dentro de nuestro Arduino IDE:

    SETUP()

    En nuestro software Arduino, la función setup es una función que solo se ejecuta en el encendido de nuestro Arduino, por lo que aquí es donde pondremos la configuración de los pines (pinMode), los iniciadores (begin) que pueda tener cualquier librería que hayamos añadido o cualquier configuración del aparato o variables que queremos que se realicen durante el encendido.

    PINMODE()

    El pinMode se utiliza para configurar el uso de los pines digitales o analógicos que vayamos a usar de manera digital dentro del Arduino. Su estructura es pinMode(número de pin, Modo de uso), donde en el número de pin, pondremos el pin que queremos configurar (que hayamos conectado) y en Modo de uso pondremos:

    • INPUT (si va a ser una entrada, por ejemplo botones, lectura de sensores... )
    • OUTPUT (si va a ser una salida, por ejemplo, encendido de un led o encendido de sensor...)
    • INPUT_PULLUP (si va a ser una entrada pero queremos usar la resistencia PULLUP interna de nuestro arduino, en caso de botones por ejemplo)

    Esta función tendremos que añadirla tantas veces como pines de entrada o salida tengamos conectados en nuestro prototipo. En el caso de este tutorial solo lo pondremos una vez.

    SERIAL.BEGIN()

    Esta instrucción se utiliza dentro del Setup() para iniciar la comunicación serial en nuestro arduino. Su estructura es Serial.begin(baudrate de comunicación), introduciendo en el baudrate de comunicación la velocidad que queremos de la conexión serie (siendo generalmente por defecto 9600).

    SERIAL.AVAILABLE()

    Esta instrucción comprueba si hay una comunicación serial activa en el sistema. Si la hay, devolverá un true (verdadero), si no, devolverá un false (falso)

    SERIAL.PRINT()

    Esta instrucción se utiliza para escribir en la consola serial un texto o dato. Su estructura es Serial.print(texto o dato a imprimir), donde en texto o dato a imprimir introduciremos el nombre de la variable que queremos que muestre o un texto (debería ir entrecomillado "").

    SERIAL.PRINTLN()

    Lo mismo que el Serial.print() pero inserta un salto de línea tras escribir el texto. Su estructura Serial.println(texto o dato a imprimir), donde en texto o dato a imprimir introduciremos el nombre de la variable que queremos que muestre o un texto (debería ir entrecomillado "").

    WHILE()

    Esta función implementa un bucle que solo se ejecuta mientras la condición que tiene entre paréntesis es Verdadera. En este caso, ejecuta lo que tiene entre su llave de apertura { y su llave de cierre }. Si es falsa, este bucle se salta y no se ejecuta. Su estructura sería while(condición que debe cumplir) { funciones que han de ejecutarse cuando se cumpla; } siendo la condición a cumplir, el comparador de operación que debemos comprobar y funciones a ejecutarse, la salida que queremos que de el sistema cuando ésta sea verdadera.

    FOR()

    Esta función implementa un bucle que se ejecuta un determinado número de veces. La estructura de este bloque es la siguiente: for (tipo_de_variable nombre_de_variable = valor_al_inicio_del_bucle; condición_que_debe_cumplir_para_seguir_ejecutandose; incremento_de_la_variable_tras_cada_ciclo_del_bucle) { funciones a ejecutar tras cada paso del bucle }. Es más sencillo de ver con un ejemplo, por ejemplo, for(int i=0; i<5; i++) { } esto significa que en el bucle for se iniciara con un número entero (int) que vamos a llamar i que empezará siendo 0, se estará ejecutando mientras ese número i sea menor que 5, y en cada paso del bucle for este número i se incrementará en 1 (i++).

    PARSEINT()

    La instrucción parseInt() sirve para transformar/cambiar el valor de una variable a número entero.

    LOOP()

    En nuestro software Arduino, la función loop es una función que se ejecuta en bucle (continuamente) mientras nuestro arduino está en marcha de manera secuencial, es decir, en orden de líneas que existen dentro del loop. En ella pondremos todas las funciones y chequeos que va a realizar durante su ciclo normal de trabajo: lectura de sensores, encendido y apagado de leds, cálculos que necesitemos realizar con la captura de los sensores,...

    DIGITALWRITE()

    El comando digitalWrite se utiliza para escribir o cambiar el estado de un pin digital de encendido a apagado. Su estructura es la siguiente digitalWrite( número de pin, Estado), donde en el número de pin pondremos el pin sobre el que queremos realizar la acción y en estado pondremos:

    • HIGH (si queremos que encienda la salida, por ejemplo, encender un led)
    • LOW (si queremos que apague la salida, por ejemplo, apagar un led)

    DELAY()

    El comando delay se utiliza para añadir un tiempo de espera en el programa. Esta función tiene la siguiente estructura: delay(tiempo de espera en milisegundos), donde en tiempo de espera en milisegundos pondremos los milisegundos que queremos que espere el programa para continuar.


    Una vez visto un resumen del uso de los comandos, vamos a pasar a programar en nuestro Arduino IDE con el siguiente código:

    Código completo


    int dato = 0; //Declaramos la variable que va a guadar el número recibido por puerto serial
    void setup() {
        pinMode(9, OUTPUT);   //Declaramos el pin 9 como sálida
        Serial.begin(9600); //Iniciamos la comunicación por puerto serie a 96000baud
        Serial.println("ingrese numero de parpadeos que desea realizar");//Escribimos una linea por serial
    }
    
    void loop() {
           while(Serial.available()) { //Comprobamos si la comunicación serial esta activa
            dato = Serial.parseInt(); //transformamos el valor recibido por puerto serial a un entero
            if(dato != 0) { //Comprobamos si el valor recibido es distinto de cero
                Serial.println("iniciando parpadeo");
                Serial.print("Vamos a realizar ");
                Serial.print(dato);
                Serial.println(" parpadeos");
                for (int i=0; i//// Bucle de parpadeo que toma el valor que hemos introducido
                    digitalWrite(9, HIGH);  //Ponemos el pin 9 a Alto(Encendido) 
    
                delay(500);                 //Añadimos un retardo de 500 milisegundos
                digitalWrite(9, LOW); //Ponemos el pin 9 a Bajo(Apagado)                 delay(500); //Añadimos un retardo de 500 milisegundos             }            Serial.println("Fin del parpadeo");             Serial.println("ingrese numero de parpadeos que desea realizar");             dato = 0;         }     } }


    Para comprobar su funcionamiento, solo tendremos que subir el programa a nuestra placa y abrir la consola serial de nuestro Arduino IDE y podemos probar el correcto funcionamiento de nuestro montaje.