Sei sulla pagina 1di 5

http://arduineando.matem.unam.

mx/proyectos/sensandoUnSwitch

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

Para este proyecto ahora vamos a usar un switch en lugar de un botn.


Un switch es un dispositivo que podemos dejar en una posicin fija,
abierto o cerrado, para as cerrar o abrir un circuito. Vamos ahora a
sensar el estado del switch y dependiendo de su estado,
encenderemos o apagaremos unos leds.
En este proyecto ahora usaremos ms leds, para hacerlo un poco ms
interesante. Si el switch est en 0 volts o tierra, encenderemos un led
verde y si el switch est en 5 volts, encenderemos alternadamente dos
leds rojos.
Para checar el estado del switch, usamos la funcin digitalRead(), que
nos permite conocer el estado de un pin de entrada. Esta funcin nos
devuele un HIGH si el voltaje en el pin es alto, 5 Volts, o un LOW si
est en 0 Volts, tierra.
al inicio

Componentes
arduino
protoboard
un led verde
dos leds rojos
un switch
tres resistencias de 220 oms (rojo, rojo, caf)
una resistencia de 10 Koms (caf, negro, naranja)

al inicio

Circuito
Este proyecto consiste en realidad en dos circuitos.
Un circuito con los leds. Un led verde que encenderemos cuando el
circuito del switch este en 0 volts o tierra y un par de leds rojos, que
encenderemos alternadamente cuando el circuito del switch este en 5
Volts. Los circuitos con estos leds son el mismo circuito que hemos
venido utilizando en otros proyectos.
El circuito con un switch como sensor. El switch o interruptor que
vamos a usar es uno con tres conectores o patas, y es el que se conoce
como un switch de dos polos y una via. Dependiendo de la posicin de
la palanca del switch, la pata central estar conectada a una u otra pata
de los extremos. Para utilizarlo conectaremos una de las patas
laterales a 5 Volts y la otra a tierra y la pata central ira al pin del arduino
que usaremos para sensar el estado del switch. De este modo, al
mover la palanca del switch a un lado tendremos 5 volts en la central y
al moverla al otro, tendremos 0 volts o tierra.
Como podrs notar, con este circuito ya no es necesaria la
resistencia pull down conectada a tierra, ya que un polo del switch est
conectado a 5 volts y el otro a tierra, lo que hace innecesaria esta
resistencia.

al inicio

Diagrama
al inicio

Cdigo
En este sketch vamos a hacer uso de la funcin digitalRead() que se
utiliza para leer el estado de un pin digital, definido como pin de entrada
en el 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
un LOW.
Y para poder responder al estado del pin, HIGH o LOW, usaremos la
estrucura de control if, que ya usamos en el proyecto sensando un
botn. sta nos permite checar si una condicin es verdadera o falsa
y actuar en consecuencia.
En el cdigo del sketch, checamos el estado del pin conectado
al switch y lo guardamos en una variable. Con la estructura de
control if, checamos el valor de esta variable y encendemos o
apagamos los leds correspondientes de acuerdo al valor que tenga
esta variable. Si es igual a HIGH encendemos intermitentemente los
leds rojos y si es igual a LOW encendemos el verde.
/*
Sketch Sensando un switch o interruptor
Sensa el estado de un switch

Si esta en 5 volts enciende y apaga dos leds rojos


intermitentemente y apaga un led verde

Si esta en 0 volts enciende un led verde y apaga los rojos

*/

// constantes para los numeros de los pines de los leds


const int pinLedR1 = 9;
const int pinLedR2 = 10;
const int pinLedV = 12;

// constante para el numero del pin del switch


const int pinSwitch = 7;

// variable para guardar el estdo del switch


int estadoSwitch = 0;

void setup() {
// inicializa los pines como output (salida)
pinMode(pinLedR1, OUTPUT);
pinMode(pinLedR2, OUTPUT);
pinMode(pinLedV, OUTPUT);
// inicializa el pin del switch como input (entrada)
pinMode(pinSwitch, INPUT);
}

void loop() {
// lee el valor del estado del switch y lo guarda en la
variable estadoSwitch
estadoSwitch = digitalRead(pinSwitch);
// checa el estado del switch con un if
if (estadoSwitch == HIGH) {
// si es HIGH, el switch esta prendido
// apagamos el led verde
digitalWrite(pinLedV, LOW); // pone el LED pinLedV en
LOW, apagado
// y encendemos los leds rojos intermitentemente
digitalWrite(pinLedR1, HIGH); // pone el LED pinLedR1 en
HIGH, encendido
digitalWrite(pinLedR2, LOW); // pone el LED pinLedR2 en
LOW, apagado
delay(500); // espera por 500
milisegundos
digitalWrite(pinLedR1, LOW); // pone el LED pinLedR1 en
LOW, apagado
digitalWrite(pinLedR2, HIGH); // pone el LED pinLedR2 en
HIGH, encendido
delay(500); // espera por 500
milisegundos
}
else
{
// entonces es LOW, el switch esta apagado
// apagamos los leds rojos
digitalWrite(pinLedR1, LOW); // pone el LED pinLedR1 en
LOW, apagado
digitalWrite(pinLedR2, LOW); // pone el LED pinLedR2 en
LOW, apagado
// y prendemos el led verde
digitalWrite(pinLedV, HIGH); // pone el LED pinLedV en
HIGH, apagado
}
}

- al inicio

Variantes
En la instruccin if podemos usar slo el valor de la variable con el
valor del sensor: if(estadoBoton) Qu pasara?
- al inicio

Referencias:
Arduino Reference: digitalRead()
Referencia Arduino: digitalRead()
Funcin para leer el estado de 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.
- al inicio

Ejemplos similares en otras pginas:


Button en la pgina del Arduino (ingles)
Button en la pgina del Arduino (espaol)

Potrebbero piacerti anche