Izrada automatske štoperice za trkače, sportaše i sportiste

Isprobajte Naš Instrument Za Uklanjanje Problema





U ovom ćemo postu izraditi štopericu koja automatski pokreće tajmer kada trkač počne raditi, a tajmer se zaustavlja kad trkač dođe do kraja. Proteklo vrijeme između početne i završne točke prikazuje se na LCD zaslonu 16 x 2.

Prvo započnimo s učenjem kako konfigurirati jednostavan i izuzetno precizan krug štoperice Arduino.



Štoperica je ručno upravljani satni uređaj dizajniran za mjerenje duljine vremena koje je moglo proteći počevši od određenog trenutka kada je bio aktiviran i do trenutka kada je konačno deaktiviran. Veća varijanta istog uređaja naziva se zaustavni sat koji se koristi za praćenje radnje iz daljine i koji se obično nalazi na sportskom stadionu itd.

Mehanička vs elektronička štoperica

Ranije su tradicionalni mehanički ručni štoperice bili češći i svi su ih koristili u tu svrhu.



U mehaničkom sustavu imali smo dvije tipke za izvršavanje funkcija štoperice. Jedan za pokretanje zaustavnog sata pritiskom jednom, a za zaustavljanje vremena ponovnim pritiskom iste tipke za bilježenje proteklog vremena .... drugi je gumb korišten za vraćanje sata natrag na nulu.

Mehanički zaustavni sat se u osnovi obrađivao opružnom snagom, što je zahtijevalo razdoblje za ručno navijanje okretanjem zadanog narezanog gumba na vrhu sata.

Međutim, u usporedbi s modernim digitalnim štopericama, mehanički se tipovi mogu smatrati značajno primitivnima i nepreciznima u rasponu od milisekundi.

Korištenje Arduina

A danas su pojavom mikrokontrolera ove štoperice postale izuzetno precizne i pouzdane u mikrosekundnom opsegu.

Arduino krug štoperice koji je ovdje predstavljen jedan je od ovih modernih dizajna s pogonom na mikrokontrolere, a najtočnije se može očekivati ​​da bude u rangu s komercijalnim modernim štopericama.

Naučimo kako izraditi predloženi krug zaustavnog sata Arduino:

Za izgradnju će vam trebati sljedeći Predmet materijala:

Potreban hardver

Arduino LCD zaslon tipkovnice (SKU: DFR0009)

Arduino LCD zaslon tipkovnice (SKU: DFR0009)

Arduino ONE ploča

Arduino UNO

Arduino USB kabel

arduino usb kabel

Nakon što nabavite gornji materijal i spojite ih međusobno, samo je potrebno konfigurirati sljedeći zadani kod skice na svojoj Arduino ploči i promatrati čaroliju funkcija zaustavnog sata.

Kod

/*
Standalone Arduino StopWatch
By Conor M - 11/05/15
Modified by Elac - 12/05/15
*/
// call the necessary libraries
#include
#include
// these are the pins used on the shield for this sketch
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7)
// variables used on more than 1 function need to be declared here
unsigned long start, finished, elapsed
boolean r = false
// Variables for button debounce time
long lastButtonPressTime = 0 // the last time the button was pressed
long debounceDelay = 50 // the debounce time keep this as low as possible
void setup()
{
lcd.begin(16, 2) // inicialize the lcd (16 chars, 2 lines)
// a little introduction :)
lcd.setCursor(4, 0) // set the cursor to first character on line 1 - NOT needed (it sets automatically on lcd.begin()
lcd.print('Arduino')
lcd.setCursor(3, 1) // set the cursor to 4th character on line 2
lcd.print('StopWatch')
delay(2000) // wait 2 seconds
lcd.clear() // clear the display
lcd.print('Press select for')
lcd.setCursor(2, 1) // set the cursor to 3rd character on line 2
lcd.print('Start & Stop')
}
void loop()
{
CheckStartStop()
DisplayResult()
}
void CheckStartStop()
{
int x = analogRead (0) // assign 'x' to the Arduino's AnalogueInputs (Shield's buttons)
if (x 600 ) // if the button is SELECT
{
if ((millis() - lastButtonPressTime) > debounceDelay)
{
if (r == false)
{
lcd.clear()
lcd.setCursor(2, 0) // needed
lcd.print('Elapsed Time')
start = millis() // saves start time to calculate the elapsed time
}
else if (r == true)
{
lcd.setCursor(2, 0) // needed
lcd.print(' Final Time ')
}
r = !r
}
lastButtonPressTime = millis()
}
}
void DisplayResult()
{
if (r == true)
{
finished = millis() // saves stop time to calculate the elapsed time
// declare variables
float h, m, s, ms
unsigned long over
// MATH time!!!
elapsed = finished - start
h = int(elapsed / 3600000)
over = elapsed % 3600000
m = int(over / 60000)
over = over % 60000
s = int(over / 1000)
ms = over % 1000
// display the results
lcd.setCursor(0, 1)
lcd.print(h, 0) // display variable 'h' - the 0 after it is the
number of algorithms after a comma (ex: lcd.print(h, 2) would print
0,00
lcd.print('h ') // and the letter 'h' after it
lcd.print(m, 0)
lcd.print('m ')
lcd.print(s, 0)
lcd.print('s ')
if (h <10)
{
lcd.print(ms, 0)
lcd.print('ms ')
}
}
}

Dodavanje 7-segmentnog zaslona

Sada nastavimo s detaljima u vezi s konstrukcijom kruga štoperice pomoću 7-segmentnog LED zaslona i Arduina. Istražit ćemo koncepte povezane s prekidima i IC upravljačkim programima zaslona koji su presudni za razumijevanje ovog projekta. Ovaj projekt predložio je gospodin Abu-Hafss koji je jedan od strastvenih čitatelja ove web stranice.

Kao što već znamo da je Štoperica uređaj koji pomaže u praćenju kratkog vremenskog razdoblja od sata do milisekundi (uglavnom). Gotovo svi jeftini digitalni ručni satovi opremljeni funkcijom štoperice, ali niti jedan od njih ne može dati oduševljenje za izradu samoga sebe, a također je pronalazak štoperice sa 7-segmentnim LED zaslonom iznimna.

Gospodin Abu-Hafss predložio nam je da dizajniramo štopericu s 4 zaslona, ​​dva za minute i dva za sekunde (MM: SS). Ali za većinu nas to možda nije izvediv dizajn, pa smo dodali još dva zaslona za milisekundni raspon pa će sada predloženi dizajn biti u MM: SS: mS konfiguraciji.

Ako vam iz nekog razloga samo treba MM: SS konfiguracija, ne trebate spajati milimekundne 7-segmentne zaslone i IC upravljačke programe, na cijelu funkcionalnost sklopa i dalje neće utjecati.

Krug:

Predložena štoperica sastoji se od šest IC 4026 koji je sedmosegmentni upravljački program zaslona, ​​šest 7-segmentnih LED zaslona, ​​jedna Arduino ploča, nekoliko tipki i nekoliko 10K otpornika.

Sada da razumijemo kako spojiti IC 4026 na 7-segmentni zaslon.

7-segmentni zaslon može biti bilo koji uobičajeni katodni prikaz bilo koje boje. Zaslon od 7 segmenata može biti lako ubijen napajanjem od 5 V, tako da je otpor od 330 ohma obvezan na svakom segmentu zaslona.

Sada da vidimo pin dijagram IC 4026:

  • Pin # 1 je ulaz sata.
  • Pribadača br. 2 onemogućava sat, onemogućava prikaz na zaslonu ako je pribadača visoka.
  • Pin # 3 omogućuje prikaz ako je ovaj pin nizak, zaslon će se isključiti i obrnuto.
  • Pin # 5 je izveden, što postaje visoko kada IC broji 10.
  • Pribadače 6, 7, 9, 10, 11, 12, 13 su izlazni izlazi.
  • Osovina # 8 je GND.
  • Pin # 16 je Vcc.
  • Pin # 15 se resetira, ako ga podignemo, broj se pretvara u nulu.
  • Pribadače # 4 i # 14 se ne koriste.

Prikaz dijagrama povezivanja:

Dijagram povezivanja LCD zaslona:

Bilo koji GND zatik 7-segmentnog zaslona može se spojiti na masu. IC se mora napajati iz napajanja od 5 V ili Arduinovog izlaznog pina od 5 V.

Gornja shema za samo jedan zaslon, ponovite isto za pet ostalih zaslona.

Evo ostatka sheme:

Štoperica pomoću Arduina s 7-segmentnim zaslonom

Krug se može napajati iz 9V baterije. Postoje dva gumba ovdje jedan za početak vremena i drugi za zaustavljanje. Pritiskom gumba za poništavanje na Arduinu, prikaz vremena na zaslonu će se resetirati na nulu.

Dvije tipke povezane su na pin # 2 i # 3 koji su hardverski prekid mikrokontrolera Arduino / Atmega328P.

Da shvatimo što je prekid:

Postoje dvije vrste prekida: hardverski i softverski. Ovdje koristimo samo hardverski prekid.

Prekid je signal mikrokontroleru koji mikrokontrolera tjera da odmah reagira na događaj.

Postoje samo dvije igle za hardverski prekid na pločama Arduino s pinovima # 2 i # 3 mikrokontrolera ATmega328P. Arduino mega ima više od dvije igle za hardverske prekide.

Mikrokontroleri ne mogu istodobno raditi dvije funkcije. Na primjer, provjera pritiska gumba i brojanje brojeva.

Mikrokontroleri ne mogu istodobno izvršiti dva događaja, ako napišemo kôd za provjeru pritiska gumba i brojanja brojeva, pritisak gumba detektirat će se tek kad mikrokontroler pročita komad koda za otkrivanje pritiska gumba, ostatak vremena (broji brojeve) gumb ne radi.

Dakle, doći će do kašnjenja u otkrivanju pritiska gumba i iz nekog razloga ako se kod privremeno zaustavi, pritiskanje gumba možda nikada neće biti otkriveno. Da bi se izbjegle ove vrste problema, uvodi se prekid.

Signalu prekida uvijek se daje najveći prioritet, glavna funkcija (glavni redovi koda) bit će zaustavljena i izvršava funkciju (drugi dio koda) dodijeljenu za taj određeni prekid.

To je vrlo važno za vremenski kritične aplikacije poput štoperice ili sigurnosnih sustava itd. Gdje procesor treba odmah poduzeti mjere kao odgovor na događaj.

U Arduinu hardverske prekide dodjeljujemo kao:

attachInterrupt (0, start, RISING)

  • '0' znači prekidni broj nula (u mikrokontrolerima sve počinje od nule) koji je pin # 2.
  • 'Start' je ime funkcije prekida, ovdje možete imenovati bilo što.
  • 'RISING' ako pin # 2 (koji je nula prekida) preraste, izvršava se funkcija prekida.

attachInterrupt (1, Stop, RISING)

  • '1' znači prekid broj jedan koji je pin # 3.
  • 'Stop' je naziv prekida.

Također možemo zamijeniti 'RISING' s 'FALLING', sada kada prekidački pin ide NIZO, funkcija prekida se izvršava.

Također možemo zamijeniti 'RISING' s 'CHANGE', sada kad god se prekidački pin kreće od visokog prema dolje ili od niskog prema visokom, funkcija prekida se izvršava.

Funkcija prekida može se dodijeliti na sljedeći način:

void start () // start je naziv prekida.

{

// program ovdje

}

Funkcija prekida mora biti što kraća i funkcija delay () se ne može koristiti.

To zaključuje da će softverski prekid hardverskog prekida koji se odnosi na Arduino biti objašnjen u budućem članku.

Sada znate zašto smo spojili tipke za pokretanje i zaustavljanje kako bismo prekinuli igle.

Spojite krug prema dijagramu, a ostatak sklopa je samorazumljiv.

Program:

//----------------Program Developed by R.GIRISH---------------//
int vmin = 0
int vsec = 0
int vms = 0
boolean Run = false
const int Min = 7
const int sec = 6
const int ms = 5
const int reset_pin = 4
void setup()
{
pinMode(Min, OUTPUT)
pinMode(sec, OUTPUT)
pinMode(ms, OUTPUT)
pinMode(reset_pin, OUTPUT)
digitalWrite(Min, LOW)
digitalWrite(sec, LOW)
digitalWrite(ms, LOW)
digitalWrite(reset_pin, HIGH)
digitalWrite(reset_pin, LOW)
attachInterrupt(0, start, RISING)
attachInterrupt(1, Stop, RISING)
}
void loop()
{
if (Run)
{
vms = vms + 1
digitalWrite(ms, HIGH)
delay(5)
digitalWrite(ms, LOW)
delay(5)
if (vms == 100)
{
vsec = vsec + 1
digitalWrite(sec, HIGH)
digitalWrite(sec, LOW)
vms = 0
}
if (vsec == 60)
{
vmin = vmin + 1
digitalWrite(Min, HIGH)
digitalWrite(Min, LOW)
digitalWrite(reset_pin, HIGH)
digitalWrite(reset_pin, LOW)
vsec = 0
}
}
}
void start()
{
Run = true
}
void Stop()
{
Run = false
}
//----------------Program Developed by R.GIRISH---------------//

Sada je zaključen kod.

Štoperica posebno razvijena za atelete

Na kraju, naučimo kako se gore navedeni koncepti zapravo mogu nadograditi za sportaše koji žele razviti svoje vještine trčanja, a da ne ovise o drugima za potreban start i zaustavljanje tajmera / štoperice. Bolje je automatski pokrenuti tajmer otkrivanjem vašeg pokreta nego netko tko pokreće / zaustavlja štopericu, što bi moglo dodati i vrijeme reakcije.

NAPOMENA: Ovaj je projekt dizajniran za mjerenje vremena između točke „A“ i točke „B“ koju istovremeno pokriva JEDAN korisnik.

Postava se sastoji od dva lasera smještena na početnoj i završnoj točki, dva LDR-a su također postavljena nasuprot dva laserska modula. Kada sportaš prekine 'početni' laser, vrijeme počinje računati i kad sportaš dođe do kraja, prekida 'završni' laser i timer se zaustavlja i prikazuje proteklo vrijeme između dvije točke. Ovo je metoda kojom se mjeri proteklo vrijeme u predloženoj ideji.

Pogledajmo pojedinosti svake komponente kruga.

Pojedinosti o radu komponenata

Krug je prilično jednostavan, sastoji se od 16 x 2 LCD modula, malo otpornika, dva LDR-a i tipkom.

Sučelje između LCD-a i arduina je standardno, a sličnu vezu možemo pronaći u mnogim drugim projektima zasnovanima na LCD-u.

Dvije analogne iglice A0 i A1 koriste se za otkrivanje laserskih prekida. Analogni pin A2 povezan je tipkom koja služi za aktiviranje štoperice.

Tri otpora, dva 4.7K i jedan 10K su spuštajući otpornici koji pomažu ulaznim iglama da ostanu na niskom nivou.

Za podešavanje kontrasta u LCD modulu za optimalnu vidljivost predviđen je 10K potenciometar.

Predloženi sklop dizajniran je s mehanizmom za otkrivanje kvarova za lasere. Ako je bilo koji laser oštećen ili nije pravilno usklađen s LDR-om, na LCD zaslonu prikazuje poruku o pogrešci.

· Ako START laser ne radi, prikazuje se 'laser' koji ne radi '

· Ako STOP laser ne radi, prikazuje se 'stop' laser ne radi '

· Ako oba lasera ne rade, prikazuje se 'Oba lasera ne rade'

· Ako oba lasera ispravno funkcioniraju, prikazuje se 'Oba lasera rade u redu'

Poruka o pogrešci pojavljuje se dok se laserski modul ne popravi ili poravna pravilno s LDR-om.

Jednom kada ovaj korak bude bez problema, sustav prelazi u stanje pripravnosti i prikazuje '-sustav čekanja sustava'. U ovom trenutku korisnik može aktivirati postavku pritiskom na tipku u bilo kojem trenutku.

Jednim pritiskom na tipku sustav je spreman otkriti kretanje korisnika i prikazuje 'Sustav je spreman'.

Trkač se može nalaziti na nekoliko centimetara od lasera 'start'.

Ako je laser 'start' prekinut, vrijeme počinje računati i na zaslonu se prikazuje 'Vrijeme se računa ...' Vrijeme se računa u pozadini.

Proteklo vrijeme neće se prikazati dok trkač ne dosegne / ne prekine laser za zaustavljanje. To je zato što prikazivanje proteklog vremena na LCD-u, kao što to čini tradicionalna štoperica, zahtijeva nekoliko dodatnih uputa koje treba izvršiti u mikrokontroleru, što značajno pogoršava točnost postavljanja.

NAPOMENA: Pritisnite gumb za resetiranje na arduinu da biste očistili očitanja.

Kako postaviti krug na trkaću stazu:

Upotrijebite debele žice za povezivanje između LDR-ova i arduino kruga, jer udaljenost između njih može biti nekoliko metara, a napon ne smije značajno pasti. Udaljenost između LDR1 i LDR2 može biti najviše nekoliko stotina metara.

Kako montirati LDR:

LDR mora biti postavljen unutar šuplje neprozirne cijevi, a prednji dio također mora biti pokriven, a napravljena je samo rupa promjera nekoliko milimetara koja omogućuje ulazak laserske zrake.

LDR mora biti zaštićen od izravne sunčeve svjetlosti jer se ne može razlikovati od laserske zrake i drugog izvora svjetlosti i možda neće registrirati kretanje korisnika.

Kod programa:

//-------- Program developed by R.GIRISH-------//
#include
LiquidCrystal lcd(12,11,5,4,3,2)
int strt = A0
int stp = A1
int btn = A2
int M = 0
int S = 0
int mS = 0
float dly = 10.0
void setup()
{
lcd.begin(16,2)
pinMode(strt,INPUT)
pinMode(stp,INPUT)
pinMode(btn,INPUT)
}
void loop()
{
if(digitalRead(strt)==HIGH && digitalRead(stp)==HIGH)
{
lcd.setCursor(0,0)
lcd.print('Both lasers are')
lcd.setCursor(0,1)
lcd.print(' working fine')
delay(4000)
{
while(digitalRead(btn)==LOW)
{
lcd.clear()
lcd.print('-System Standby-')
lcd.setCursor(0,1)
lcd.print('Press Start btn')
delay(100)
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('System is ready')
lcd.setCursor(0,1)
lcd.print('----------------')
while(digitalRead(strt)==HIGH)
{
delay(1)
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Time is being')
lcd.setCursor(0,1)
lcd.print('Calculated......')
while(digitalRead(stp)==HIGH)
{
delay(dly)
mS = mS+1
if(mS==100)
{
mS=0
S = S+1
}
if(S==60)
{
S=0
M = M+1
}
}
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print(M)
lcd.print(':')
lcd.print(S)
lcd.print(':')
lcd.print(mS)
lcd.print(' (M:S:mS)')
lcd.setCursor(0,1)
lcd.print('Press Reset')
delay(1000)
}
}
}
if(digitalRead(strt)==HIGH && digitalRead(stp)==LOW)
{
lcd.setCursor(0,0)
lcd.print(''Stop' laser is')
lcd.setCursor(0,1)
lcd.print(' not working')
delay(100)
}
if(digitalRead(strt)==LOW && digitalRead(stp)==HIGH)
{
lcd.setCursor(0,0)
lcd.print(''Start' laser is')
lcd.setCursor(0,1)
lcd.print(' not working')
delay(100)
}
if(digitalRead(strt)==LOW && digitalRead(stp)==LOW)
{
lcd.setCursor(0,0)
lcd.print('Both lasers are')
lcd.setCursor(0,1)
lcd.print(' not working')
delay(100)
}
lcd.clear()
}
//-------- Program developed by R.GIRISH-------//

Autorski prototip:

Nadogradnja sa Split Timer Facility

Predloženi krug automatske štoperice s podijeljenim odbrojavanjem produžetak je automatskog štoperice, gdje štoperica automatski prati vrijeme čim samostalni trkač napusti početnu točku, a tajmer se zaustavi i prikazuje proteklo vrijeme kad trkač dosegne krajnju točku.

Uvod

Ovaj projekt predložio je jedan od strastvenih čitatelja ove web stranice gospodin Andrew Walker.

U ovom projektu uvodimo još 4 LDR-a za mjerenje vremena razdvajanja solo trkača. Ukupno postoji 6 LDR-a, svi se mogu smjestiti na stazu za trčanje s jednoličnom udaljenostom između njih ili ovisno o okolnostima i izboru korisnika.

Većina hardvera ostaje nepromijenjena, osim dodavanja 4 LDR-a, ali kôd je pretrpio velike izmjene.

Shematski dijagram koji prikazuje split vrijeme:

Automatska štoperica s podijeljenim vremenom

Gornji sklop sastoji se od nekoliko komponenata i prilagođen je početnicima. Daljnje objašnjenje nije potrebno, samo žica prema shemi sklopa.

Kako povezati LDR-ove:

LDR 2 je prikazan na glavnoj shemi spojeva, paralelno povezuje još 4 LDR-a, kao što je prikazano na gornjem dijagramu.

Dijagram izgleda:

Gore navedeno je osnovni aranžman o tome kako postaviti laser. Imajte na umu da udaljenost između LDR-a može sam odabrati korisnik ovisno o duljini staze.

Program:

//------------Developed By R.Girish-------//
#include
LiquidCrystal lcd(12,11,5,4,3,2)
const int start = A2
const int strt = A0
const int END = A1
boolean y = true
boolean x = true
unsigned int s1 = 0
unsigned int s2 = 0
unsigned int s3 = 0
unsigned int s4 = 0
unsigned int s5 = 0
unsigned int m1 = 0
unsigned int m2 = 0
unsigned int m3 = 0
unsigned int m4 = 0
unsigned int m5 = 0
unsigned int ms1 = 0
unsigned int ms2 = 0
unsigned int ms3 = 0
unsigned int ms4 = 0
unsigned int ms5 = 0
unsigned int S = 0
unsigned int M = 0
unsigned int mS = 0
unsigned int count = 0
void setup()
{
lcd.begin(16,2)
pinMode(start, INPUT)
pinMode(strt, INPUT)
pinMode(END, INPUT)
if(digitalRead(strt) == LOW)
{
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Start Laser is')
lcd.setCursor(0,1)
lcd.print(' not working')
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Please align the')
lcd.setCursor(0,1)
lcd.print('lasers properly')
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('and press reset.')
delay(2500)
}
}
if(digitalRead(END) == LOW)
{
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('All 5 lasers')
lcd.setCursor(0,1)
lcd.print('are misaligned')
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Please align the')
lcd.setCursor(0,1)
lcd.print('lasers properly')
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('and press reset.')
delay(2500)
}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('-System Standby-')
lcd.setCursor(0,1)
lcd.print('Press Start btn')
if(digitalRead(start) == LOW)
{
while(x)
{
if(digitalRead(start) == HIGH)
{
x = false
}
}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('System is ready')
lcd.setCursor(0,1)
lcd.print('----------------')
while(y)
{
if(digitalRead(strt) == LOW)
{
y = false
}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Time is being')
lcd.setCursor(0,1)
lcd.print('Calculated....')
mS = 12
}
void loop()
{
delay(1)
mS = mS + 1
if(mS==1000)
{
mS=0
S = S+1
}
if(S==60)
{
S=0
M = M+1
}
if(digitalRead(END) == LOW)
{
count = count + 1
if(count == 1)
{
ms1 = mS
s1 = S
m1 = M
delay(500)
}
if(count == 2)
{
ms2 = mS
s2 = S
m2 = M
delay(500)
}
if(count == 3)
{
ms3 = mS
s3 = S
m3 = M
delay(500)
}
if(count == 4)
{
ms4 = mS
s4 = S
m4 = M
delay(500)
}
if(count == 5)
{
ms5 = mS
s5 = S
m5 = M
Display()
}
}
}
void Display()
{
ms1 = ms1 + 500
ms2 = ms2 + 500
ms3 = ms3 + 500
ms4 = ms4 + 500
ms5 = ms5 + 500
if(ms1 >= 1000)
{
ms1 = ms1 - 1000
s1 = s1 + 1
if(s1 >= 60)
{
m1 = m1 + 1
}
}
if(ms2 >= 1000)
{
ms2 = ms2 - 1000
s2 = s2 + 1
if(s2 >= 60)
{
m2 = m2 + 1
}
}
if(ms3 >= 1000)
{
ms3 = ms3 - 1000
s3 = s3 + 1
if(s3 >= 60)
{
m3 = m3 + 1
}
}
if(ms4 >= 1000)
{
ms4 = ms4 - 1000
s4 = s4 + 1
if(s4 >= 60)
{
m4 = m4 + 1
}
}
if(ms5 >= 1000)
{
ms5 = ms5 - 1000
s5 = s5 + 1
if(s5 >= 60)
{
m5 = m5 + 1
}
}
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Spilt 1)')
lcd.print(m1)
lcd.print(':')
lcd.print(s1)
lcd.print(':')
lcd.print(ms1)
lcd.setCursor(0,1)
lcd.print('Split 2)')
lcd.print(m2)
lcd.print(':')
lcd.print(s2)
lcd.print(':')
lcd.print(ms2)
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Split 3)')
lcd.print(m3)
lcd.print(':')
lcd.print(s3)
lcd.print(':')
lcd.print(ms3)
lcd.setCursor(0,1)
lcd.print('Split 4)')
lcd.print(m4)
lcd.print(':')
lcd.print(s4)
lcd.print(':')
lcd.print(ms4)
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Split 5)')
lcd.print(m5)
lcd.print(':')
lcd.print(s5)
lcd.print(':')
lcd.print(ms5)
lcd.setCursor(0,1)
lcd.print('---Press Reset--')
delay(2500)
}
}
//------------Developed By R.Girish-------//

Kako upravljati ovom automatskom štopericom:

• S dovršenim postavljanjem, prvo uključite lasere, a zatim sljedeći uključite Arduino krug.
• Ako su svi laseri pravilno usklađeni s LDR-ovima, zaslon neće zatražiti poruku o pogrešci. Ako postoje, poravnajte ih pravilno.
• Sada krug prikazuje 'Sustav je u stanju pripravnosti'. Sada pritisnite gumb 'start' i prikazat će se 'Sustav je spreman'.
• U ovom trenutku, kada solo igrač prekida snop svjetlosti LDR 1, timer se pokreće i prikazuje se 'Vrijeme se izračunava ...'
• Čim igrač dosegne krajnju točku, tj. LDR 6, tajmer se zaustavlja i prikazuje vrijeme razdvajanja 5 zabilježeno krugom.
• Korisnik mora pritisnuti gumb za resetiranje na arduinu da bi resetirao tajmer.
Zašto ova automatska štoperica ne može prikazati vrijeme na zaslonu kao što to čini tradicionalna štoperica (već prikazuje statični tekst 'Vrijeme se računa ...')?
Da bi prikazao vrijeme u stvarnom vremenu, Arduino mora izvršiti dodatne upute za LCD zaslon. To će dodati nekoliko mikrosekundi do nekoliko milisekundi kašnjenja glavnom dijelu koda za praćenje vremena, što će dovesti do netočnih rezultata.

Ako imate dodatnih pitanja, iznesite ih putem odjeljka za komentare.




Prethodno: Arduino LCD KeyPad Shield (SKU: DFR0009) Tablica podataka Dalje: Arduino slučajni RGB krug generatora svjetlosti