Sie sind auf Seite 1von 5

http://arduineando.matem.unam.

mx/proyectos/sensandoUnBoton

Sensando un botn
- componentes - circuito - diagrama - imgenes - cdigo - variantes - referencias - otros -

En este proyecto vamos a utilizar un botn de presin, uno de los


sensores digitales ms comunes. Con el arduino vamos a sensar el
estado en el que se encuentra el botn: abierto o cerrado y
dependiendo de este estado, encenderemos o apagaremos un led.
Si el botn est presionado, se cierra el circuito y entonces
encenderemos el led. Si el botn no est presionado, el circuito estar
abierto y apagaremos el led.
Para conocer el estado del botn, usamos la funcin digitalRead(), que
nos permite conocer el estado de un pin de entrada. Esta funcin nos
devuelve un HIGH o verdadero si el voltaje en el pin es alto, est en 5
volts, o un LOW o falso si el voltaje est en 0 volts, tierra.
al inicio

Componentes
arduino
protoboard
un led
un botn de presin
una resistencia de 220 oms (rojo, rojo, caf)
una resistencia de 10 Koms (caf, negro, naranja)

al inicio

Circuito
Este proyecto estar en realidad formado por dos circuitos.
Un circuito con un actuador, formado por un led y su resistencia. Es el
mismo circuito que hemos venido utilizando en otros proyectos, solo
que ahora encenderemos el led cuando se oprima el botn.
Y un circuito con un sensor digital, el botn de presin. De este botn
obtendremos dos posibles estados, un valor de 5 Volts, cuando al
oprimirlo se cierre el circuito y un valor de 0 Volts, cuando el botn este
suelto, dejando abierto el circuito. Para lograr sto, conectaremos un
lado de botn al pin de salida de 5 Volts del Arduino y el otro lado, a
un pin digital de entrada, donde sensaremos el estado del botn.
Cuando un pin del arduino no esta conectado, el valor que nos
devuelve la funcin digitalRead() est indeterminado y puede variar
aleatoriamente. Debido a esto y para garantizar que la funcin nos
devuelva un LOW cuando el botn no este oprimido, debemos poner
lo que se conoce como una resistencia pull down, en el lado del botn
conectado al pin de entrada. Esta resistencia pull down es una
resistencia con un valor alto, usaremos una de 10 KOhms, conectada
al pin de tierra o GND del Arduino.
De esta manera, cuando el botn est abierto, aseguramos tener un
valor de 0 Volts o LOW, dado por la resistencia pull down conectada a
tierra y cuando el botn est cerrado, tendremos un valor de 5 Volts
o HIGH, dado por la conexin a travs del botn a la salida de 5 Volts
del arduino.

al inicio

Diagrama
al inicio

Cdigo
En el sketch de este proyecto vamos a hacer uso de la
funcin digitalRead() que se utiliza para leer el estado de un pin digital,
definido como un pin de entrada en la funcin setup(). A la funcin le
pasamos como parametro el nmero del pin que queremos sensar y
nos devolver el estado del pin, un HIGH o verdadero o un LOW o
falso.
Para responder al estado del pin, HIGH o LOW, usaremos una
estrucura de control del lenguaje de programacin del Arduino, el if.
sta nos permite checar si una condicin es verdadera o falsa y actuar
en consecuencia. En este caso la condicin que vamos a checar es el
valor de la variable con el estado del botn. Si es HIGH la condicin
ser verdadera, si es LOW la condicin ser falsa.
La sintaxis del if es la siguiente:
if (condicin) {
//acciones cuando la condicin es verdadera
}
else
{
//acciones cuando la condicin es falsa
}

En el cdigo del sketch, leemos el estado del pin conectado al botn y


lo guardamos en una variable. Con la estructura de control ifchecamos
el valor de esta variable y de acuerdo a este valor, encendemos o
apagamos el led. Si el valor es igual a HIGH, verdadero, encendemos
el led y si es igual a LOW, falso, lo apagamos.
/*
Sensando un Boton para encender un led

En este proyecto encendemos o apagamos un led cuando se


oprime o suelta un boton

Utilizamos una resistencia de 10Koms del boton a tierra


lo que conoce como un pull down resistor

*/

// constantes para definir los pines del boton y del led


const int pinBoton = 12; // el numero de pin del boton
const int pinLed = 9; // el numero de pin del led

// variable para guardar el valor del sensor, el boton


int estadoBoton = 0;

void setup() {
// inicializa el pin del led como de salida
pinMode(pinLed, OUTPUT);
// inicializa el pin del boton como de entrada
pinMode(pinBoton, INPUT);
}

void loop(){
// lee el valor del estado del boton y lo guarda en la
variable estadoBoton
estadoBoton = digitalRead(pinBoton);
// checa el estado del boton con un if
if (estadoBoton == HIGH) {
// si es HIGH, el boton esta oprimido y enciende el led
digitalWrite(pinLed, HIGH);
}
else
{
// entonces es LOW, el boton no esta oprimido y apaga el
led
digitalWrite(pinLed, LOW);
}
}

- al inicio

Variantes
En la condicin de la instruccin if podemos usar slo el valor de la
variable que usamos para guardar el valor del
sensor: if(estadoBoton)Qu pasara?
Que tenemos hacer para que el led este encendido con el botn
suelto y se apague cuando oprimimos el botn?
Podemos usar dos leds de distinto color o el led bicolor y prender un
color cuando el bton este suelto y el otro color cuando el bton este
oprimido.
Podemos cambiar los pines que usamos para el botn y para el led, lo
que ya no tiene mucho chiste, pues ya sabemos usar las constantes y
variables :-)
- al inicio

Referencias:
Arduino Reference: digitalRead()
Referencia Arduino: digitalRead()
Funcin para leer el estado de un pin digital.

Arduino Reference: digitalWrite()


Referencia Arduino: digitalWrite()
Funcin para poner un valor HIGH, voltaje alto, o un LOW, voltaje bajo o 0, en un
pin digital.

Arduino Reference: if()


Arduino Reference: if()/else
Referencia Arduino: if()
Referencia Arduino: if()/else
Estructura de control para checar el valor de una condicin; verdadero o falso.

Das könnte Ihnen auch gefallen