You are on page 1of 1

#include <Wire.

h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
extern volatile unsigned long timer0_millis;
unsigned long new_value = 0;
float RoundsSum=0;
float PreviousReading=0;
float CurrentReading;
float RPM=0;
float AirFlow=0;
int MeasureTime=6000;

void setup()
{
lcd.begin(16,2);
lcd.backlight();
Serial.begin(9600);
}
void loop()
{
for (int i=0; millis()<=MeasureTime; i++)
{
CurrentReading = analogRead(A0);
if(PreviousReading<150 && CurrentReading>=150)
{
RoundsSum+=1;
}
PreviousReading=CurrentReading;
}
RPM=RoundsSum*(60000/MeasureTime);
AirFlow=RPM/275,037511337771;
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("AVG_RPM: "); lcd.print(RPM);
lcd.setCursor(0,1);
lcd.print("Airflow "); lcd.print(AirFlow); lcd.print(" m/s");
RoundsSum=0;
setMillis(new_value);
}
void setMillis(unsigned long new_millis)
{
uint8_t oldSREG = SREG;
cli();
timer0_millis = new_millis;
SREG = oldSREG;
}

You might also like