Descrició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); } }
Propostas:
- Función reset: Crea unha función reset() no programa anterior e invócaa cando o contador chega a 10.
- 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.