Habe folgenden Code:
// include the library code:
#define LCD_WIDTH 16 //Anzahl Spalten des Display (16)
#define LCD_HEIGHT 2 //Anzahl Zeilen des Display (2)
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int reedPin = 1; //analog input, but could also be digital
int circleNum = 0;
float wheelDiameter = 18;
float wheelC = 3.14 * wheelDiameter;
float kilometers = 0;
float speedometer = 0;
float KPH = 0;
int reedTime;
int reedTimeDelta;
boolean reedOn = false;
void setup(){
Serial.begin(9600);
reedTime = millis();
}
void loop(){
checkReed();
getSpeed();
}
void checkReed(){
int r = analogRead(reedPin);
if(r > 10 && reedOn == false){
reedOn = true;
reedTimeDelta = millis() - reedTime;
reedTime = millis();
circleNum++;
//prints all metrics when magnet passes switch
printAll();
}
else if (r < 10 && reedOn){
reedOn = false;
}
}
void getSpeed(){
speedometer = wheelC/reedTimeDelta;
//MPH = speedometer * 22.369;
KPH = speedometer * 36;
}
void printAll(){
lcd.begin(LCD_WIDTH, LCD_HEIGHT,2);
lcd.setCursor(0, 0);
lcd.print("Kilometer");
lcd.setCursor(0, 1);
lcd.print(KPH, 2);
}
Funktioniert auch, nur gehen die Kilometer nach Radstillstand nicht auf Null. Es wird die letzte Geschwindigkeit angezeigt. Was bitte kann man denn da machen?
Micky