Arduino-baserad kronometer för Electric Car Racing spår (3 / 3 steg)
Steg 3: Arduino skiss
Här är skissen jag använder att köra kronometern.
Ladda bibliotek för LCD-display och skapa och LCD-objekt
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, positiv);
Initiera variabler
int sensorPin = A0;
int ledPin = 12;
int sensorValue = 0;
int beepPin = 3;
unsigned int start = 0;
unsigned int varv = 0;
unsigned int tempo = 0;
unsigned int bestLap = 1000000; / / Hög-värde så att första varvet är alltid en bästa varvtid
char senaste [16];
char bästa [16].
void setup()
{
Initiera LCD-skärmen
LCD.BEGIN(16,2);
LCD.backlight();
lcd.setCursor (0, 0);
LCD.Print("ready");
Initialisera seriell kommunikation på 9600 bps
Serial.BEGIN(9600);
Power upp IR-sensor
pinMode (ledPin, produktionen);
digitalWrite (ledPin, hög);
}
void loop()
{
sensorValue = analogRead(sensorPin);
om (sensorValue > 130) / / ett objekt identifieras
{
tempo = millis(); / / Spela in aktuell tid
tonen (3, 440, 50); / / Spela ett pip
varv = tempo - start; / / Beräkna varvtiden
Start = tempo; / / Återställa klockan
Kontrollera om detta är bästa varv
om (lap < bestLap)
{
bestLap = varv;
}
Beräkna sekunder och millisekunder för trevligare utskriften av varvtid
unsigned int SEK = varv / 1000;
unsigned int msec = varv - sek * 1000;
Skriva ut varvtiden på den seriella porten
sprintf (sista, "sista: % 02u\"%03u ", SEK, MS);
Serial.println(last);
Skriva ut varvtid på LCD-skärmen
lcd.setCursor (0, 0); / / Ställ markören på den första diplay raden
LCD.Print(last);
Beräkna sekunder och millisekunder för trevligare utskriften av bästa varvtid
unsigned int bestSec = bestLap / 1000;
unsigned int bestMsec = bestLap - bestSec * 1000;
Skriva ut bästa varvtid på den seriella porten
sprintf (bästa, "bästa: % 02u\"%03u ", bestSec, bestMsec);
Serial.println(Best);
Skriva ut bästa varvtid på LCD-skärmen
lcd.setCursor (0, 1); / / Ställ markören på raden andra display
LCD.Print(Best);
Serial.println("---");
Delay(500); / / Behövs för att undvika att bilen utlöser flera upptäckter
}
}