#include <LiquidCrystal.h>
#define rs PB11
#define en PA12
#define d4 PA7
#define d5 PA4
#define d6 PA5
#define d7 PA6
const int clockPin = 9;
const int rotation = 20;
long bit_inc = 0, counter;
String counter_s;
float RPM = 0.0;
int en1 = 0, en2 = 0, en3 = 0;
unsigned long current, previous;
const long interval = 2000;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
lcd.begin(16, 2);
pinMode(clockPin, INPUT);
current = millis();
previous = millis();
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
// lcd.setCursor(0, 0);
// lcd.print("ADC:");
// int analog = analogRead(A0);
// String adc = String(analog);
// lcd.print(adc);
// lcd.print(" ");
current = millis();
if (current - previous >= interval){
previous = millis();
// Serial.println("bit_inc for 2 sec: " + String(bit_inc));
bit_inc = bit_inc *30;
// Serial.println("bit_inc for 1 min: " + String(bit_inc));
RPM = bit_inc/rotation;
Serial.println("Counter: " + String(counter));
Serial.println("RPM: " + String(RPM));
lcd.setCursor(0, 1);
lcd.print("RPM: ");
lcd.setCursor(5, 1);
lcd.print(RPM);
bit_inc = 0;
}
if (digitalRead(clockPin) == 0 and en1 == 1){
en1 = 0;
bit_inc++;
}
if (digitalRead(clockPin) == 1 and en1 == 0){
en1 = 1;
}
delay(10); // this speeds up the simulation
}