DIY cykel varvräknare (3 / 5 steg)
Steg 3: Ladda upp koden:
Jag la nedan koden i kommentarer det är en förklaring.
Länkar till nedladdning bibliotek:
http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip
https://github.com/milesburton/Arduino-temperature-Control-Library
Om du har en olika hjuldiameter måste du ändra det. Du kan beräkna det med denna formel:
krets = π * d * 2, 54 (d = diameter av dina hjul, jag multiplicerat med det 2,54 få resultat i meter).
/*
##################################################
Copyright av Nikodem Bartnik juni 2014
##################################################
*/
bibliotek
#include < Servo.h >
#include < LiquidCrystal.h >
#include < OneWire.h >
#include < DallasTemperature.h >
#define ONE_WIRE_BUS 1
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensorer (& oneWire);
LCD display pins
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
servo namn
Servo myservo;
definition av variabler
långt tidigare, triptime, tid, impulser;
float hastighetsmätare, dist, aspeed;
int servo;
int skärmen = 1;
Om du har andra krets av hjulet behöver du ändra det
flyta krets = 2.0;
dubbel temperatur;
void setup() {
LCD.BEGIN (16, 2); < /p >< p >
pinMode (A0, indata);
pinMode (A1, indata);
servo definition och ange varvräknare 0
myservo.attach(6);
myservo.write(180);
LCD.Print ("cykel varvräknare");
Delay(1000);
lcd.setCursor (5, 1);
LCD.Print ("V 1.0");
Delay(4000);
LCD.Clear();
Delay(500);
lcd.setCursor (0, 0);
LCD.Print("Dist:");
}
void loop() {
om hjulet blir
IF(analogRead(a0) > = 300) {
antal varv ++
impulser ++;
greve förvandla tid
Time=(Millis()-Previous);
greve hastighet
hastighetsmätare =(circuit / time) * 3600.0;
Previous=Millis();
Tachometer();
Delay(100);
}
LCD();
}
Visa fart på varvräknare
void Tachometer() {
Mappa hastighet 0-180 till servo
speedometer=int(speedometer);
servo = karta (hastighetsmätare, 0, 72, 180, 0);
setup servo
myservo.write(servo);
}
void Lcd() {
När du klickar på
IF(analogRead(a1) > = 1010) {
LCD.Clear();
skärmen ++;
IF(Screen==5) {
skärmen = 1;
}
}
IF(Screen==1) {
visar hastighet
lcd.setCursor (0, 1);
LCD.Print("Speed:");
lcd.setCursor (7, 1);
LCD.Print(speedometer);
LCD.Print("km/h");
}
IF(Screen==2) {
visar temperatur
temperature=sensors.getTempCByIndex(0);
sensors.requestTemperatures();
lcd.setCursor (0, 1);
LCD.Print("Temp:");
lcd.setCursor (7, 1);
LCD.Print(temperature);
LCD.Print ("C").
}
IF(Screen==3) {
visar averagr hastighet
ASPEED = dist / (millis () / 1000.0) * 3600.0;
lcd.setCursor (0, 1);
LCD.Print("A.Speed:");
lcd.setCursor (8, 1);
LCD.Print(ASPEED);
LCD.Print("km/h");
}
IF(Screen== 4) {
visar resa tid
triptime = millis () / 60000;
lcd.setCursor (0, 1);
LCD.Print("Time:");
lcd.setCursor (7, 1);
LCD.Print(triptime);
}
lcd.setCursor (0, 0);
LCD.Print("Dist:");
beräkningen av avståndet
dist = impulser * krets/1000,00;
visar avståndet
lcd.setCursor(6,0);
LCD.Print(dist);
LCD.Print("km");
}