my code stock.com

Alejandro Mascotto

Leccion 08 - Detección del cambio de estado de una entrada
by Alejandro Mascotto

Snippet options

Download: Download snippet as leccion-08-deteccion-del-cambio-de-estado-de-una-entrada.txt.
Copy snippet: For this you need a free my code stock.com account.
Embed code : You will find the embed code for this snippet at the end of the page, if you want to embed it into a website or a blog!

/* Detección del cambio de estado de una señal de entrada (detección de flanco)

 Por lo general no se necesita conocer todo el tiempo el estado de una entrada digital,
 sino simplemente estar al tanto de los cambios en la entrada de un estado a otro.
 Por ejemplo, se desea saber cuándo un pulsador cambia de un estado apagado (OFF)
 a un estado encendido (ON). A esto se le denomina detección de cambio de estado o 
 detección de flanco (en electrónica, el flanco de una señal son sus laterales: tenemos
 flanco ascendente o flanco descendente, es decir, las partes en las que la señal sube o baja).

 Este ejemplo muestra como detectar cuando un pulsador cambia de OFF a ON y de ON a OFF.
  	
 El circuito:
 * pulsador conectado al pin 12 desde los +5V
 * resistor de 10K conectado desde el pin 12 a tierra (estamos usando el modo PULL-DOWN)
 * LED conectado desde el pin 13 a tierra (o utilizar el LED ya incorporado en la placa)
 
 creado el  27 de Sep del 2005
 modificado el 30 de Ago del 2011
 por Tom Igoe

El código de este ejemplo pertenece al dominio público
	
 http://arduino.cc/en/Tutorial/estadoPulsadorChange
 
   ========================================================================
                         DECLARACION DE CONSTANTES
                      Las constantes no pueden cambiar
   ======================================================================== */

const int pinPulsador = 12;         // pin al cual se conecta el pulsador
const int pinLed = 13;              // pin al cual se conecta el LED

/* ========================================================================
                         DECLARACION DE VARIABLES
                       Las variables pueden cambiar
   ======================================================================== */

int contadorPulsaciones = 0;        // Contador: variable que acumula el numero de pulsaciones
int estadoPulsador = 0;             // Variable que almacena el estado actual del pulsador
int estadoAnteriorPulsador = 0;     // Variable que almacena el estado anterior del pulsador

void setup() {

  pinMode(pinPulsador, INPUT);       // Inicializa el pin del pulsador como entrada
  pinMode(pinLed, OUTPUT);           // Inicializa el pin del LED como salida
  Serial.begin(9600);                // Habilita la comunicación Serie
}

void loop() {

  estadoPulsador = digitalRead(pinPulsador);      // Se lee y almacena el estado del pulsador

  if (estadoPulsador != estadoAnteriorPulsador) { // Se compara la variable estadoPulsador 
                                                  //// con su valor anterior
    if (estadoPulsador == HIGH) {                 // Si el estado cambió, se incrementa el contador
                                                  // Si el estado actual es HIGH entonces el pulsador
      contadorPulsaciones++;                      //// pasó de un estado OFF a ON
      Serial.println("Encendido");
      Serial.print("numero de pulsaciones:  ");
      Serial.println(contadorPulsaciones);
    } 
    else {                                        // Si el estado actual es LOW entonces el pulsador
      Serial.println("Apagado");                  //// paso de un estado ON a OFF
    }
  }
                                                  // Se guarda el estado actual como ultimo estado
  estadoAnteriorPulsador = estadoPulsador;        //// para la siguiente vuelta de la función loop     
  
  if (contadorPulsaciones % 4 == 0) {             // Enciende el LED una vez cada 4 pulsaciones 
    digitalWrite(pinLed, HIGH);                   //// calculando el módulo del contador de pulsaciones.
  } else {                                        // La función módulo calcula el resto de una división 
   digitalWrite(pinLed, LOW);                     //// entre dos números. Si el resto es cero, significa
  }                                               //// que el dividendo es múltiplo del divisor.

}

Create a free my code stock.com account now.

my code stok.com is a free service, which allows you to save and manage code snippes of any kind and programming language. We provide many advantages for your daily work with code-snippets, also for your teamwork. Give it a try!

Find out more and register now

You can customize the height of iFrame-Codes as needed! You can find more infos in our API Reference for iframe Embeds.