Aplication of ultrasonic (català)

He hecho una modificación añadiendo al circuito un contador que va contando las veces que estando el interruptor cerrado se ha acercado <20cm el objeto.

    /*                          CODI LLIURE                          */
     
    /* Es mostra per pantalla la distancia a la que es troba l'objecte
    del sensor d'ultrasons. Si es prem el polsador, el LED i el zumbador
    s'activaran en cas que la distancia a l'ultrasons siga <=20cm; en
    cas contrari romandran desactivats. Cada vegada que el LED i el
    zumbador s'activen, el contador display suma 1. Cada 10
    activacions, es mostra per pantalla la quantitat registrada./*
     
     
    /* Crida a la llibreria Ultrasonic */
    #include <Ultrasonic.h>
     
    /* Creacio nou Ultrasonic */
    Ultrasonic ultrasons(4,7);
     
    /* Variables principals */
    const int LedPin = 13;
    const int zumb = 12;
    const int boto = 2;
    int dist = 0;
    int cont = 0;
    int acts = 0;
     
    /* Variables relacionades amb l'interruptor */
    int estat = LOW;
    int anterior = HIGH;
    int lectura;
     
    /* Variables de temps */
    long temps = 0;
    const long antirebot = 200;
     
    /* Inicialitzacio del programa */
    void setup() {
      Serial.begin(9600);
      pinMode(LedPin, OUTPUT);
      pinMode(zumb, OUTPUT);
      pinMode(boto, INPUT);
      Serial.println("\t\t\t\tAplicacio Ultrasonic!\n");
      display (1,1,1,1,1,1,0);
      pinMode(9, OUTPUT);
      pinMode(10, OUTPUT);
      pinMode(11, OUTPUT);
      pinMode(8, OUTPUT);
      pinMode(A0, OUTPUT);
      pinMode(A1, OUTPUT);
      pinMode(A2, OUTPUT);
      delay(5000);
    }
     
    /* Crea la funcio del display de 7 segments */
    void display(int a, int b, int c, int d, int e, int f, int g){
      digitalWrite (A0,a);
      digitalWrite (8,b);
      digitalWrite (9,c);
      digitalWrite (10,d);
      digitalWrite (11,e);
      digitalWrite (A1,f);
      digitalWrite (A2,g);
    }
     
    void condicions(int n){
      switch(n){
        case 0: display (1,1,1,1,1,1,0); break;
        case 1: display (0,1,1,0,0,0,0); break;
        case 2: display (1,1,0,1,1,0,1); break;
        case 3: display (1,1,1,1,0,0,1); break;
        case 4: display (0,1,1,0,0,1,1); break;
        case 5: display (1,0,1,1,0,1,1); break;
        case 6: display (1,0,1,1,1,1,1); break;
        case 7: display (1,1,1,0,0,0,0); break;
        case 8: display (1,1,1,1,1,1,1); break;
        case 9: display (1,1,1,0,0,1,1); break;
      }
    }
     
    /* Bucle del programa. Estructura principal */
    void loop() {
      dist = ultrasons.Ranging(CM);
      Serial.print("Distancia: ");
      if(dist<10) Serial.print(" ");
      Serial.print(dist);  
      Serial.print(" cm");
      Serial.print("\t\tNombre d'activacions: ");
      Serial.println(acts);
      lectura = digitalRead(boto);
      if(lectura==HIGH && anterior==LOW && millis()-temps>antirebot){
        if(estat==HIGH) estat = LOW;
        else estat = HIGH;
        temps = millis();
      }
      if(dist<=20){
        digitalWrite(LedPin, estat);
        digitalWrite(zumb, estat);
      }
      else{
        digitalWrite(LedPin, LOW);
        digitalWrite(zumb, LOW);
      }
      anterior = lectura;
      if(dist<=20 && estat==HIGH){
        cont++;
        condicions(cont);
      }
      if(cont>=10){
       condicions(0);
       cont = 0;
       acts += 10;
      }
      delay(250);
    }
     
    /* Fi del programa */