InicioCiencia EducacionTutoriales Arduino, Proyecto 8: LED controlado por botón

Tutoriales Arduino, Proyecto 8: LED controlado por botón

Ciencia Educacion•12/12/2016
Proyecto 8: LED controlado por botón




Introducción:


Puerto I/O significa puerto de ENTRADA /SALIDA (INPUT / OUTPUT). Hasta este punto hemos utilizado los pines digitalescomo salida, en este experimento utilizaremos uno de los pines digitales como entradapara leer el dispositivo conectado a él, en este caso un botón, sin oprimir(abierto, 0v, LOW) y cuando se oprime (cerrado, 5v, HIGH).


Hardwarea Utilizar


Placa Arduinio
Cable USB
Switch de botón
LED
Resistencia 220 ohms
Resitencia 10K ohms (marrón, negro, naranja)
Protoboard
Cables



Diagrama esquemático



Conexión del circuito



Sketch de ejemplo:

Cuando oprimimos y soltamos el botón se encenderá el LED y
permanecerá encendido, al volver a presionar y soltar el botón elLED se apagará y permanecerá apagado.
Primero realizaremos el sketch suponiendo que el botón entrega un pulso limpio y sin rebotes, probaremos el circuito y veremos que su funcionamiento es errático.

Para hacer el sketch mucho más corto utilizaremos una nuevatécnica llamada
interrupciones de hardware que explicaremos mas adelante


/////
int LED = 11;
int PULSADOR =2;
volatile int estado = LOW;

void setup()
{
pinMode (LED,OUTPUT);
pinMode (PULSADOR,INPUT);
attachInterrupt(digitalPinToInterrupt(PULSADOR),manejadorpulsador,RISING);
digitalWrite (LED,estado);
}

void manejadorpulsador()
{
estado = !estado;
}

void loop()
{
digitalWrite(LED,estado);

}
/////


Revisa y sube el sketch a tu placa Arduino, comprueba el funcionamiento del circuito.
Como te habrás dado cuenta el circuito funciona, a veces si, a veces no, tienes que insistir varias veces para obtener el resultado que se espera, ya sea que prenda el LED o que apague.

Ahora utilizaremos un código totalmente diferente al anterior, sin interrupciones de hardware, basándonos en el sketch del proyecto antirrebote


/////
const int boton
  = 2; // declaramos constante entera botón
const int tiempoAntirebote = 10;
  //declaramos constante entera tiempoAntirrebote
int estadoBoton;
  // declaramos variable entera estadoBoton, no se le asigna valor
int estadoBotonAnterior;
  // declaramos variable entera estadoBotonAnterior,
int ledPin = 11;
boolean LED;

 
booleanantirebote(int pin) // inicia función antirrebote
{
int contador = 0; //declara variable entera contador y la iguala a cero
boolean estado; //declara variable tipo boolean estado, no le asigna valor

booleanestadoAnterior; //declara variable tipo boolean estadoAnterior, no le asigna valor inicial
 
do   //inicia función do while
{
estado = digitalRead(pin);   // lee el estado de pin y le asigna el valor a la variable estado
if(estado !=estadoAnterior) //comparamos el estado actual con el anterior
{
contador = 0;           //Reiniciamos el contador
estadoAnterior =estado; // asigna el valor de estado a la variable estadoAnterior
}
else   //si estado no es diferente a estadoAnteriorse ejecutan instrucciones de función else
{
contador =contador + 1; //la variable contador se incrementa en uno
}
delay(1);      // espera un milisegundo
}
while(contador< tiempoAntirebote); //ejecuta las instrucciones do si contador es menor que tiempoAntirrebote
  return estado;    // regresa la variable estado al programa para continuar ejecución
}      //termina función antirrebote
 
void setup()     //inicia función de configuración
{
pinMode(boton,INPUT);         // Declaramos el botón como entrada
pinMode (ledPin,OUTPUT);
LED = false;
}
 
void loop()
{
estadoBoton =digitalRead(boton);           // Leemos el estado del botón
if(estadoBoton !=estadoBotonAnterior) // si hay cambio con respecto al estado anterior del botón
{
if(antirebote(boton)==true)// checamos si esta presionado y si lo esta
{
LED =! LED;
digitalWrite(ledPin,LED);
}
estadoBotonAnterior= estadoBoton;         //Guardamos el estado del botón
}
}
/////


Revisa y sube el sketch a la placa Arduino, oprime el botón, oprímelo varias veces, intenta hacer fallar el circuito, verás que es estable y libre de fallas.


LED =! LED          Adivinaste qué es lo que hace esta instrucción? El signo de admiración equivale a NEGACION, si LED era HIGH al negarlo se convierte en LOW y viceversa.

Reto de Proyecto: Agrega un segundo LED con su respectiva resistencia, conéctalo al pin 10, haz que este encienda y apague al contrario del primer LED (cuando uno está encendido el otro está apagado y viceversa)
********************************************************************************
            
Problemas escribiendo el código? descarga los ejemplos desde mi carpeta compartida en Dropbox: 

https://www.dropbox.com/sh/w5h38cdrynqdwhf/AABP7b9T3ADbO4KqiPm4pO-9a?dl=0   
     
Datos archivados del Taringa! original
0puntos
55visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
9visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

m
mircaed🇦🇷
Usuario
Puntos0
Posts35
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.