Liczymy obroty silniczka D65:
tutaj nasz program:
bool stan, poprz;
unsigned long int t1;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
stan=false;
}
int odczyt;
int licz=0;
void loop() {
poprz=stan;
odczyt=analogRead(A0);
if (odczyt<50)
stan=true;
else
stan=false;
// Serial.print(odczyt);
// Serial.print(" ");
// Serial.print(stan?"jasne":"ciemne");
// Serial.print(" ");
if (stan!=poprz){
licz++;
Serial.print(" KLIK ");
Serial.print(licz);
Serial.print(" ");
if (licz%2==0){
Serial.print(1000./(millis() - t1)*60);
Serial.println(" rpm");
t1= millis();
}
}
// else
// Serial.println();
}
I działa bardzo fajnie, nawet z tylko jednym znacznikiem! Wyniki są bardzo powtarzalne (przy zasilaniu około 7V – jeden obrót w 230-240ms, czyli 4 obroty w 1 sekundę, a to daje 4*60=240 obrotów na minutę – rpm).
Rozbudowa?
- więcej znaczników (już 2 polepszają sprawę, 4 to zdecydowanie OK).
- inny algorytm – zliczanie liczny obrotów i aktualizowanie wartości rpm co określony czas, np. 2 sek


oraz program (wyjaśnienia i dyskusja później, jak też i omówienie dokładności pomiaru):