Beruflich Dokumente
Kultur Dokumente
mx/proyectos/sensandoUnBoton
Sensando un botn
- componentes - circuito - diagrama - imgenes - cdigo - variantes - referencias - otros -
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
}
*/
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.