Inicio >> Aprende >> Arduino >> Aprende >> Arduino Digital: Detección de cambio de estado (detección de bordes)

Arduino Digital: Detección de cambio de estado (detección de bordes)

Una vez que se tiene un pulsador funcionando, a menudo se quiere hacer algo de acción basado en las veces que se pulsa el botón. Para ello, es necesario saber que el botón cambia el estado de apagado a encendido, y contar el número de veces que ocurre este cambio de estado. Esto se conoce como detección de cambio de estado o detección de bordes.

El IDE del Arduino nos proporciona una herramienta que nos permite enviar y visualizar los datos que se manejan a través del puerto Serial. Dicha herramienta se conoce como Monitor Serial y se puede encontrar en el menú de herramientas, en la opción “Monitor Serial”. En el presente proyecto se usara dicha herramienta para visualizar nuestros datos.

 

Hardware Requerido

 

  • Tarjeta Arduino
  • Pulsador
  • Resistencia (10K ohm)
  • Protoboard
  • LED
  • Resistencia (220 ohm)

 

Circuito

 

 

Conectar los tres cables a la tarjeta Arduino. Los dos primeros cables, rojo y negro, se conectan hacia las filas verticales en un lado del protoboard para proporcionar una fuente de 5 voltios y tierra. El tercer cable se conecta desde el pin digital 2 hacia una pata del pulsador. La otra pata del pulsador se conecta hacia hacia la fuente de 5 voltios y la resistencia, donde esta ultima se conecta a tierra. Al presionar el pulsador se conectan los dos puntos. Cuando el pulsador esta abierto (no presionado) no hay conexión entre sus 2 patas. Así que el pin es conectado hacia tierra y lo lee como LOW, o 0. Cuando el pulsador esta cerrado (presionado), esto crea una conexión entre sus dos patas, conectando el pin a 5 voltios, así que el pin lo lee como HIGH, o 1.

También conectamos una resistencia de 220-ohm al pin 13. Después conectamos la pata larga de un LED (la pata positiva, llamada ánodo) a la resistencia. Mientras que la pata corta (la pata negativa, llamada cátodo) a tierra.

 

Esquemático

 

 

 

Código: 

/*
  Detección de cambio de estado (detección de bordes)  
  A menudo, no es necesario conocer el estado de una entrada digital todo el tiempo, pero usted sólo   tiene que saber cuando la entrada cambia de un estado   a otro. Por ejemplo, usted quiere saber cuando un botón pasa de OFF a ON. Esto se conoce como detección de cambio de estado, o la detección de bordes.

  Este ejemplo muestra como detectar cuando un pulsador cambia de OFF a ON y de OFF a ON
  */



// las constantes no cambiaran su valor.
const int  buttonPin = 2;    // el número del pin, entrada del pulsador
const int ledPin = 13;       // el número del pin, salida al LED

// declaracion de variables
int buttonPushCounter = 0;   // contador para el numero de pulsadas
int buttonState = 0;         // estado actual del pulsador
int lastButtonState = 0;     // estado anterior del pulsador

void setup() {
  // inicializa el pin 2 como pin de entrada
  pinMode(buttonPin, INPUT);
  // inicializa el pin 13 como pin de salida
  pinMode(ledPin, OUTPUT);
  // inicializa la comunicación serial
  Serial.begin(9600);
}

void loop() {
  // lee el estado del pulsador
  buttonState = digitalRead(buttonPin);

  // compara el estado del pulsador con el estado previo del mismo
  if (buttonState != lastButtonState) {
    // si el estado cambio, el contador incrementa
    if (buttonState == HIGH) {
      // si el estado actual es HIGH entonces el pulsador

 

      // cambio de OFF a ON
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("numero de pulsadores presionados:  ");
      Serial.println(buttonPushCounter);
    }
    else {
      // si el estado actual del pulsador es LOW entonces el pulsador

 

      // cambio de ON a OFF
      Serial.println("off");
    }
  }
  // guarda el estado actual como el ultimo estado,
  lastButtonState = buttonState;
 
  // el LED se enciende cada cuatro pulsadas
  if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, HIGH);
  } else {
   digitalWrite(ledPin, LOW);
  }
 
}

Fuentes: