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