Скетч для датчика Холла (не срабатывает светодиод)

nikolai98
Offline
Зарегистрирован: 05.03.2018
// read RPM

volatile int rpmcount = 0;//see http://arduino.cc/en/Reference/Volatile
int rpm = 0;
unsigned long lastmillis = 0;

void setup(){
Serial.begin(9600);
attachInterrupt(0, rpm_fan, FALLING);//interrupt cero (0) is on pin two(2).
}

void loop(){

if (millis() - lastmillis == 1000){ /*Uptade every one second, this will be equal to reading frecuency (Hz).*/

detachInterrupt(0); //Disable interrupt when calculating

rpm = rpmcount * 60; /* Convert frecuency to RPM, note: this works for one interruption per full rotation. For two interrups per full rotation use rpmcount * 30.*/

Serial.print("RPM =\t"); //print the word "RPM" and tab.
Serial.print(rpm); // print the rpm value.
Serial.print("\t Hz=\t"); //print the word "Hz".
Serial.println(rpmcount); /*print revolutions per second or Hz. And print new line or enter.*/

rpmcount = 0; // Restart the RPM counter
lastmillis = millis(); // Uptade lasmillis
attachInterrupt(0, rpm_fan, FALLING); //enable interrupt
}
}

void rpm_fan(){ /* this code will be executed every time the interrupt 0 (pin2) gets low.*/
rpmcount++;
}

 

Alexander
Offline
Зарегистрирован: 25.04.2010
evgta
Offline
Зарегистрирован: 02.09.2016

в 14 строке исправить == на >= (не стоит в большинстве случаев использовать ==, а с миллис подавно)

да и лучше не кол-во импульсов в секунду считать, а длительность импуса(нескольких)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Интересно, при чем тут Processing?

vk007
Offline
Зарегистрирован: 16.06.2015

Как при чем? Это самый непопулярный раздел форума - тут тема не затеряется. Другой причины, почему ТС разместил здесь свою тему лично я не вижу.