Los pulsadores son elementos muy utilizados para mandar señales “todo” o “nada” a dispositivos electrónicos que trabajan con lógica TTL (lógica transistor a transistor), como es el caso de los pines digitales de Arduino.
Los pulsadores, también conocidos como interruptores o conmutadores, son elementos de circuitos que permiten modificar el flujo de corriente en un circuito eléctrico. Esto hace que estos dispositivos sean especialmente útiles para aplicaciones en las que se requiere la participación de un ser humano.
Si realizamos una conexión PULL-DOWN entre el pulsador y una entrada digital cualquiera de Arduino, cuando activemos el botón, Arduino estará recibiendo +5V, que los codifica como estado alto (HIGH o “1” lógico), mientras que si el pulsador permanece en reposo, Arduino estará recibiendo un estado bajo (LOW o “0” lógico).
Mediante programación vamos a ser capaces de implementar un pulsador con enclavamiento de estado, para que cuando lo activemos, una salida digital de Arduino se ponga a “nivel alto” si se encontraba a “nivel bajo” y viceversa, es decir, seremos capaces de almacenar el estado de la salida digital para que esta cambie de “HIGH” a “LOW” o de “LOW” a “HIGH” cada vez que activemos el pulsador.
En la salida digital de Arduino con la que estemos trabajando, conectaremos un LED para poder comprobar que de verdad está cambiando el estado de la salida cada vez que activamos el pulsador (ON/OFF), aunque podríamos utilizar este tipo de configuración para “activar” o “desactivar” multitud de dispositivos electrónicos como relés, buzzers, motores, etc.
Lista de Materiales
- Arduino UNO Rev.3
- Cable USB tipo A-B
- LED 5mm (de cualquier color)
- Pulsador
- Resistencias de 10KΩ y 220Ω
- Protoboard
- Cables de conexión
Código del programa
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
/* TITULO: Pulsador con enclavamiento de estado. AUTOR: MARIANO DEL CAMPO GARCÍA (@2015) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA Con este programa controlamos el encendido y apagado de un mismo LED con un solo pulsador. Cuando pulsamos por primera vez, se enciende el LED, por segunda vez se apaga en LED y así sucesivamente. ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| LED(+) | [ ]GND -| R |- 8[ ] | PA | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | | -| I |- 6[ ]~| | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Cátodo(-) del LED (pata más corta) a GND a través de una R=220 omhs. - Los pulsadores suelen tener dos pines, que vamos a denominar PA y PB (si es de 4 sólo usamos 2 de ellos) - Conexión PULL-DOWN del pulsador. - PB conectado a VCC. - PA conectado a GND a través de una R=10K omhs. */ int PULSADOR = 8; // Pin digital para el pulsador int LED = 9; // Pin digital para el LED // Inicializamos las variables internas int encender = 0; int anterior = 0; int estado = 0; void setup() { pinMode(PULSADOR, INPUT); // Pin digital del pulsador como entrada pinMode(LED, OUTPUT); // Pin digital del LED como salida digitalWrite(LED, LOW); // LED apagado } void loop() { estado = digitalRead(PULSADOR); // Guardamos el estado actual del pulsador if(estado && anterior == 0) // Comparamos el estado actual y el anterior del pulsador { encender = 1 - encender; delay(300); // Evita los rebotes del pulsador. } anterior = estado; // Actualizamos el estado del pulsador. if(encender) // Si el estado interno del pulsador pasa de "LOW" a "HIGH". { digitalWrite(LED, HIGH); // LED encendido } else // Si el estado interno del pulsador pasa de "HIGH" a "LOW". { digitalWrite(LED, LOW); // LED apagado } } |