spiegazione software

ho trovato questo progetto sulla rilevazione dei giri (rpm) di un motorino dc tramite un sensore ad effetto hall a3144 su internet. non essendo ancora molto esperto sul linguaggio di programmazione, vorrei chiedere per favore se qualcuno potesse almeno darmi una spiegazione generale sul listato. di seguito è riportato il listato.

const int frqPin = 5;
const int oneSecond = 1000;
int frqPinState = LOW;
int frq = 0;
int frq1 = 0;
int prevFrqPinState = LOW;
unsigned long timer = 0;
void setup()
{
 Serial.begin(9600);
 pinMode(frqPin, INPUT_PULLUP);
 }
 
 void loop()
 {
 frqPinState = digitalRead(frqPin);
 if (frqPinState == LOW) prevFrqPinState = LOW;
 if (frqPinState == HIGH && prevFrqPinState == LOW)
 {
   prevFrqPinState = frqPinState;
   frq++;
   }
   if (millis() - timer > oneSecond)
   {
     timer = millis();
      
     Serial.println(frq);
     frq = 0;
     }

La invitiamo a presentarsi (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Sicuramente il codice non è completo, così da errori in quanto almeno mancano delle graffe chiuse

const int frqPin = 5;        // pin di cui si esamina lfrequenza
const int oneSecond = 1000;  // un secondo espresso in ms

int frqPinState = LOW;       // stato del pin attuale
int prevFrqPinState = LOW;  // stato del pin precedente

int frq = 0;                 // contatore impulsi (passaggi da HIGH a LOW)
unsigned long timer = 0;     // timer

void setup() {
  Serial.begin(9600);
  pinMode(frqPin, INPUT_PULLUP);  // predisponi pin con resistore interno di pullup da 20k
}

void loop() {
  frqPinState = digitalRead(frqPin);                      // leggi stato pin
  if (frqPinState == LOW) prevFrqPinState = LOW;          // se LOW memorizza lo stato
  if (frqPinState == HIGH && prevFrqPinState == LOW) {    // se HIGH ed il precedente stato è LOW...
    prevFrqPinState = frqPinState;                        // memorizza lo stato
    frq ++;                                               // incrementa variabile contatore
  }
  if (millis() - timer > oneSecond) {                     // se è passato un secondo...
    timer = millis();                                     // resetta timer
    Serial.println(frq);                                  // visualizza conteggio
    frq = 0;                                              // azzera variabile contatore
  }
}

francescoaccogli
Si presenti per favore come richiesto nella prima risposta.

È vietato postare la stessa domanda in diverse sezioni del Forum. Se Vuole scrivere nella sezione internazionale deve scrivere in inglese.

Poi qualche saluto non é un lusso inutile.

Saluti Uwe

scusate ma come detto non sono molto pratico sia di arduino sia di questo sito. vorrei ringraziare cyberhs. saluti a tutti