Contador con límite

fluxo_while_contador_ifDescrición:

Imos poñer un límite ao contador, por exemplo, de 10 pulsos. Cada vez que prememos nun pulsador súmase un punto a un contador. Cando chega a contar 10 pulsos acéndese un LED durante 0,5 segundos e ponse a 0 de novo.

Para facelo imos empregar unha función ou subrutina, que definiremos previamente. No noso caso chámase “funcioncontador”. Cando queiramos que se execute invocámola.

  • Para definila usamos void funcioncontador() {…}
  • Cando queiramos que se execute invocámola: funcioncontador ();

Programa:

// Declaración de variables:

const int pulsador=2;
const int led=13;
int contador=0;
int estado;
 
// Configuración:

void setup() {
  Serial.begin(9600);
  pinMode (led, OUTPUT);
}
 
// Programa:
 
void funcioncontador() {          // Definimos a función "funcioncontador" para utilizala posteriormente
  
  estado = digitalRead(pulsador);
  if ( estado == 1 ) {
    while(digitalRead(pulsador)==1);    // Agarda mentres o pulsador esta premido
    delay(20);                          // Agardamos 0,02s para evitar o efecto rebote 
    contador++;                         // Incrementa o contador
    Serial.println(contador);           // Imprime o valor por consola
  }
}
 
void loop() { 
            
  if(contador < 10) {         // Se o contador é menor que 10
    funcioncontador();        // Facemos que se execute a función do contador.
  }
  else {
    contador=0;                 // Inicia o contador a 0 
    digitalWrite(led, HIGH);    // Acende  e apaga o LED
    delay(500);
    digitalWrite(led, LOW);
  }
}

contador3_fluxo

Propostas:

  1. Función reset: Crea unha función reset() no programa anterior e invócaa cando o contador chega a 10.
  2. Contador con límite superior e inferior: Empeza en 0 e vai sumando ata chegar a 10. A partir de aí o contador vai descendendo ata chegar de novo a 0 e volve repetirse o ciclo. Utiliza dúas funcións, unha para o contador ascendente e outra para o descendente.

 

 

 

 

 

 


Deixa un comentario