EJERCICIO Lectura de un pulsador

Descripción del ejercicio

El pulsador es un componente que conecta dos puntos de un circuito cuando es presionado.

Para generar una señal de tensión con el pulsador, se necesita un divisor de tensión.

Ejemplo:

La resistencia Rabajo(pull-down) en el primer circuito fuerza a Vout, llegando a nivel CERO, hasta que se acciona el pulsador. Este circuito entrega una tensión alta, cuando se presiona el pulsador. Un valor para la resistencia de 10 k es adecuada.

En el segundo circuito, la resistencia Rarriba (pull-up) fuerza a nivel ALTO a Vout, mientras no se actúe sobre el pulsador. Al presionar el pulsador, se conecta Vout directamente con 0 V. Es decir, este circuito entrega un nivel BAJO cuando se presiona el pulsador.

Elementos necesarios:

  • Un resistencia de 1K Ohmios.
  • Un pulsador.
  • Una placa protoboard.
  • Cables para realizar las conexiones.

Se utiliza una resistencia pull-dowm, junto con un pulsador, para conectarla a un pin de entrada digital, y de esta forma, poder saber cuando el pulsador es presionado. Si el pulsador está presionado, el valor del pin 10 será de 0 voltios (LOW) en caso contrario será de + 5 voltios (HIGH).

En una placa protoboard debe haber una resistencia de 10K conectada entre el pin de entrada y tierra como se ve el esquema y foto inferiores.

Esquema

Todo montado en la placa

ERRATA en la foto - En el momento de la foto los cables de alimentación se colocaron al revés. Si se colocan como en la imágen, el LED estaría siempre encendido y se apagaría al pulsar el botón. Puedes hacerlo como prueba.

Código fuente

/* Pulsador

 * --------
 *
 * Detecta si el botón ha sido presionado o no
 * y enciende el LED en consecuencia. 
 *
 * Massimo Banzi
 *
 */

 int ledPin = 13;                    // PIN del LED
 int inPin = 10;                     // PIN del pulsador
 int value = 0;                      // Valor del pulsador

void setup() {

  pinMode(ledPin, OUTPUT);          // Inicializa el pin 13 como salida digital
  pinMode(inPin, INPUT);            // Inicializa el pin 10 como entrada digital

}

void loop() {

  value = digitalRead(inPin);       // Lee el valor de la entrada digital 
  digitalWrite(ledPin, value);           

}