const int irSensorPin = 2;
volatile unsigned long pulses = 0;
unsigned long timeOld = 0;
unsigned int rpm = 0;
const int blades = 1;
void setup() {
Serial.begin(9600);
// التعديل هنا: خليناها INPUT_PULLUP بدل INPUT
// عشان الزرار يشتغل صح من غير مقاومات خارجية
pinMode(irSensorPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(irSensorPin), counter, FALLING);
timeOld = 0;
}
void loop() {
if (millis() - timeOld >= 1000) {
detachInterrupt(digitalPinToInterrupt(irSensorPin));
// معادلة RPM
rpm = (pulses / blades) * 60;
Serial.println(" RPM");
Serial.print(rpm);
pulses = 0;
timeOld = millis();
attachInterrupt(digitalPinToInterrupt(irSensorPin), counter, FALLING);
}
}
void counter() {
pulses++;
}