Izdelava samodejne štoparice za tekače, športnike in športnike

Preizkusite Naš Instrument Za Odpravo Težav





V tej objavi bomo izdelali štoparico, ki samodejno zažene časovnik, ko tekač začne teči, in časovnik se ustavi, ko tekač doseže konec. Pretečeni čas med začetno in končno točko se prikaže na LCD 16 x 2.

Najprej začnimo z učenjem, kako nastaviti preprosto in izjemno natančno vezje štoparice Arduino.



Štoparica je ročno krmiljena naprava s časovno uro, zasnovana za merjenje časa, ki je morda potekel od določenega trenutka, ko je bil aktiviran in do trenutka, ko je bil dokončno deaktiviran. Večja različica iste naprave se imenuje štoparica, ki se uporablja za spremljanje dogajanja na daljavo in je običajno na športnem stadionu itd.

Mehanska vs elektronska štoparica

Prej so bile tradicionalne ročne štoparice pogostejše in so jih vsi uporabljali za ta namen.



V mehanskem sistemu smo imeli dva gumba za izvajanje funkcij štoparice. Enega za zagon zaustavitve ure z enkratnim pritiskom in za zaustavitev časa s ponovnim pritiskom istega gumba za beleženje pretečenega časa .... drugi gumb je bil uporabljen za ponastavitev ure nazaj na nič.

Mehanska zaustavitvena ura je v bistvu delovala prek vzmetne moči, ki je zahtevala obdobje ročnega navijanja z vrtenjem danega nazobčanega gumba na vrhu ure ure.

Vendar pa lahko v primerjavi s sodobnimi digitalnimi štoparicami mehanske vrste štejemo za bistveno primitivne in netočne v območju milisekund.

Uporaba Arduina

Danes so s pojavom mikrokrmilnika te štoparice postale izjemno natančne in zanesljive v mikrosekundi.

Arduino vezje štoparice, predstavljeno tukaj, je eno izmed teh sodobnih zasnov z mikrokrmilnikom, za katerega je najbolj natančno pričakovati, da je enakovredno komercialnim modernim štoparicam.

Naučimo se, kako zgraditi predlagano vezje za zaustavitev Arduino:

Za gradnjo boste potrebovali naslednji opis materiala:

Potrebna strojna oprema

Arduino LCD zaslon s tipkovnico (SKU: DFR0009)

Arduino LCD zaslon s tipkovnico (SKU: DFR0009)

Tabla Arduino ONE

Arduino UNO

USB kabel Arduino

kabel arduino usb

Ko pridobite zgornji material in ga med seboj povežete, gre le za konfiguriranje naslednje skice na vaši plošči Arduino in opazovanje čarov funkcij štoparice.

Koda

/*
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 ')
}
}
}

Dodajanje 7-segmentnega zaslona

Zdaj pa nadaljujmo s podrobnostmi glede konstrukcije štoparice z uporabo 7-segmentnega LED zaslona in Arduina. Raziskovali bomo koncepte, povezane s prekinitvami in IC-ji gonilnikov zaslona, ​​ki so ključnega pomena za razumevanje tega projekta. Ta projekt je predlagal gospod Abu-Hafss, ki je eden od navdušenih bralcev te spletne strani.

Kot že vemo, je Štoparica naprava, ki pomaga slediti kratek čas od ure do milisekund (večinoma). Skoraj vse poceni digitalne zapestne ure, ki so opremljene s funkcijo štoparice, vendar nobena od njih ne more dati samega sebe, poleg tega pa je izjemna tudi izbira štoparice s sedemsegmentnim LED zaslonom.

Gospod Abu-Hafss nam je predlagal, da oblikujemo štoparico s štirimi zasloni, dva za minute in dva za sekunde (MM: SS). Toda za večino od nas to morda ni izvedljiva zasnova, zato smo dodali še dva zaslona za milisekundno območje, tako da bo zdaj predlagana zasnova v konfiguraciji MM: SS: mS.

Če iz nekega razloga potrebujete samo konfiguracijo MM: SS, vam ni treba priključiti 7-milimetrskega 7-segmentnega zaslona in njegovih gonilnikov IC, še vedno ne vpliva celotna funkcionalnost vezja.

Vezje:

Predlagana štoparica je sestavljena iz šestih IC 4026, ki so sedemsegmentni gonilnik zaslona, ​​šest sedemsegmentnih LED zaslonov, ena plošča Arduino, nekaj potisnih gumbov in nekaj 10K uporov.

Zdaj pa razumimo, kako povezati IC 4026 na 7-segmentni zaslon.

7-segmentni zaslon je lahko kateri koli običajni katodni prikaz katere koli barve. 7-segmentni zaslon lahko zlahka ubije napajanje 5V, zato je upor 330 ohmov obvezen na vsakem segmentu zaslona.

Zdaj pa si oglejmo pin-diagram IC 4026:

  • Nožica 1 je vhod za uro.
  • Zatič št. 2 onemogoča uro in onemogoči štetje na zaslonu, če je ta zatič visok.
  • Zatič št. 3 omogoča prikaz, če je ta zatič nizek, bo zaslon izklopljen in obratno.
  • Zatič št. 5 je izveden, kar postane visoko, ko IC šteje 10.
  • Zatiči 6, 7, 9, 10, 11, 12, 13 so izhodi zaslona.
  • Zatič št. 8 je GND.
  • Zatič št. 16 je Vcc.
  • Zatič št. 15 se ponastavi, če ga dvignemo, se število obrne na nič.
  • Zatiča # 4 in # 14 se ne uporabljata.

Diagram povezave zaslona:

Diagram povezave LCD zaslona:

Kateri koli zatič GND sedemsegmentnega zaslona je lahko povezan z maso. IC se mora napajati iz napajalne napetosti 5V ali izhodnega zatiča Arduino 5V.

Zgornja shema za samo en zaslon, ponovite isto za pet drugih zaslonov.

Tu je preostanek sheme:

Štoparica z uporabo Arduina s 7-segmentnim zaslonom

Vezje se lahko napaja iz 9V baterije. Tu sta na voljo dva gumba, eden za začetek ure in drugi za ustavitev. S pritiskom na gumb za ponastavitev na Arduinu se bo število prikazov na zaslonu ponastavilo na nič.

Dve tipki sta povezani s pinoma 2 in 3, ki sta strojna prekinitev mikrokrmilnika Arduino / Atmega328P.

Razumejmo, kaj je prekinitev:

Obstajata dve vrsti prekinitev: strojna in programska. Tu uporabljamo samo strojno prekinitev.

Prekinitev je signal mikrokrmilniku, zaradi česar se mikrokrmilnik takoj odzove na dogodek.

Na ploščah Arduino sta z dvema št. 2 in 3 mikrokrmilnika ATmega328P na voljo le dva zatiča strojne opreme. Arduino mega ima več kot dva zatiča strojne opreme.

Mikrokrmilniki ne morejo opravljati dveh funkcij hkrati. Na primer preverjanje pritiska na gumb in štetje številk.

Mikrokrmilniki ne morejo izvesti dveh dogodkov hkrati, če napišemo kodo za preverjanje pritiska gumba in štetja številk, bo pritisk gumba zaznan šele, ko mikrokrmilnik prebere kos kode za zaznavanje pritiska gumba, ves čas (šteje številke) gumb ne deluje.

Torej pride do zamude pri zaznavanju pritiska gumba in če se koda začasno ustavi, pritiska gumba morda nikoli ne zaznajo. Da bi se izognili tovrstnim težavam, je uvedena prekinitev.

Signal prekinitve ima vedno največjo prednost, glavna funkcija (glavne vrstice kode) bo ustavljena in izvede funkcijo (drug del kode), dodeljeno za to prekinitev.

To je zelo pomembno za časovno kritične aplikacije, kot so štoparica ali varnostni sistemi itd., Kjer mora procesor takoj ukrepati kot odziv na dogodek.

V Arduinu prekinitev strojne opreme dodelimo kot:

attachInterrupt (0, start, RISING)

  • '0' pomeni prekinitveno število nič (v mikrokrmilnikih se vse začne z ničle), ki je pin # 2.
  • 'Start' je ime funkcije prekinitve, tukaj lahko poimenujete karkoli.
  • 'RISING', če gre zatič št. 2 (ki je nič prekinitve) visoko, se funkcija prekinitve izvede.

attachInterrupt (1, Stop, RISING)

  • '1' pomeni prekinitev številka ena, ki je pin # 3.
  • 'Stop' je ime prekinitve.

Nadomestimo lahko tudi 'RISING' z 'FALLING', zdaj, ko prekinitveni zatič GA NIZ, se izvede prekinitvena funkcija.

'RISING' lahko nadomestimo tudi s 'CHANGE'. Zdaj, ko prekinitveni zatič preide z visokega na nižji ali od nizkega do visokega, se prekinitvena funkcija izvrši.

Prekinitveno funkcijo lahko dodelite na naslednji način:

void start () // start je ime prekinitve.

{

// program tukaj

}

Prekinitvena funkcija mora biti čim krajša in funkcije delay () ni mogoče uporabiti.

To zaključuje, da bo programska prekinitev strojne opreme, povezana z Arduinom, pojasnjena v prihodnjem članku.

Zdaj veste, zakaj smo gumbe za zagon in zaustavitev povezali s prekinitvami nožic.

Priključite vezje, kot kaže diagram, ostalo vezje je samo po sebi razumljivo.

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---------------//

Zdaj je koda zaključena.

Štoparica, posebej razvita za atelete

Na koncu se naučimo, kako lahko zgoraj omenjene koncepte dejansko nadgradimo za športnike, ki želijo razviti svoje tekaške sposobnosti, ne da bi bili odvisni od drugih za potreben začetek in zaustavitev časovnika / štoparice. Bolje je, da časovnik samodejno zaženete tako, da zazna vaše gibanje, kot da nekdo zažene / ustavi štoparico, kar lahko doda tudi njihov reakcijski čas.

OPOMBA: Ta projekt je zasnovan za merjenje časa med točko „A“ in točko „B“, ki jo hkrati pokriva EN EN uporabnik.

Namestitev je sestavljena iz dveh laserjev, nameščenih na začetni in končni točki, dva LDR-ja pa sta tudi nasproti dveh laserskih modulov. Ko športnik prekine 'začetni' laser, začne čas računati in ko športnik doseže konec, prekine 'končni' laser in časovnik se ustavi in ​​prikaže pretečeni čas med dvema točkama. To je metoda, ki se uporablja za merjenje pretečenega časa v predlagani ideji.

Poglejmo podrobno vsako komponento vezja.

Podrobnosti o delovnih komponentah

Vezje je dokaj preprosto, sestavljeno je iz 16 x 2 LCD modula, nekaj uporov, dveh LDR-jev in gumba.

Vmesnik med LCD in arduino je standarden, podobno povezavo lahko najdemo v številnih drugih projektih, ki temeljijo na LCD-jih.

Dva analogna zatiča A0 in A1 se uporabljata za zaznavanje laserskih prekinitev. Analogni zatič A2 je povezan s tipko, ki se uporablja za aktiviranje štoparice.

Trije upori, dva 4.7K in en 10K so spustni upori, ki pomagajo, da vhodni zatiči ostanejo nizki.

Za optimalno vidnost je na voljo 10K potenciometer za prilagajanje kontrasta v LCD modulu.

Predlagano vezje je zasnovano z mehanizmom za odkrivanje napak za laserje. Če je kateri koli laser napak ali ni pravilno poravnan z LDR, na LCD zaslonu prikaže sporočilo o napaki.

· Če laser START ne deluje, se prikaže 'laser' ne deluje '

· Če laser STOP ne deluje, se prikaže sporočilo »stop« laser ne deluje «

· Če oba laserja ne delujeta, se prikaže napis »Oba laserja ne delujeta«

· Če oba laserja delujeta pravilno, se prikaže napis »Oba laserja delujeta dobro«

Sporočilo o napaki se prikaže, dokler laserski modul ni popravljen ali če je LDR pravilno poravnan.

Ko v tem koraku ni težav, sistem preide v stanje pripravljenosti in prikaže “-sistem pripravljenost-“. Na tej točki lahko uporabnik nastavitev vklopi s poljubnim pritiskom na gumb.

Ko pritisnete gumb, je sistem pripravljen zaznati gibanje uporabnika in prikaže 'Sistem je pripravljen'.

Tekač je lahko oddaljen nekaj centimetrov od laserja za zagon.

Če je laser 'start' prekinjen, začne čas šteti in na zaslonu se prikaže 'Čas se izračuna ...' Čas se izračuna v ozadju.

Pretečeni čas se ne prikaže, dokler tekač ne doseže / prekine laserja 'stop'. Razlog za to je, da prikazovanje pretečenega časa na LCD-prikazovalniku, kot to počne tradicionalna štoparica, zahteva izvedbo več dodatnih navodil v mikrokrmilniku, kar bistveno poslabša natančnost nastavitve.

OPOMBA: Pritisnite gumb za ponastavitev na arduinu, da počistite odčitke.

Kako nastaviti vezje na tekaški progi:

Za povezavo med LDR-ji in arduino vezjem uporabite debele žice, saj je razdalja med njima lahko nekaj metrov narazen, napetost pa ne sme znatno pasti. Razdalja med LDR1 in LDR2 je lahko največ nekaj sto metrov.

Kako namestiti LDR:

LDR mora biti nameščen v votlo neprozorno cev, prednji del pa mora biti prekrit, narejena pa je le luknja s premerom nekaj milimetrov, ki omogoča vstop laserskega žarka.

LDR mora biti zaščiten pred neposredno sončno svetlobo, saj se ne more razlikovati od laserskega žarka in drugih virov svetlobe in morda ne bo zabeležil gibanja uporabnika.

Koda 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-------//

Avtorjev prototip:

Nadgradnja s Split Timer Facility

Predlagano vezje samodejne štoparice z razdeljenim časovnikom je razširitev samodejnega štoparice, kjer štoparica samodejno sledi času, takoj ko samostojni tekač zapusti začetno točko in se časovnik ustavi ter prikaže pretečeni čas, ko tekač doseže končno točko.

Uvod

Ta projekt je predlagal eden od navdušenih bralcev te spletne strani, gospod Andrew Walker.

V tem projektu predstavljamo še 4 LDR-je za merjenje razdeljenega časa samostojnega tekača. Skupaj je 6 LDR-jev, vsi pa se lahko postavijo na tekaško stezo z enakomerno razdaljo med njimi ali glede na okoliščine in izbiro uporabnika.

Večina strojne opreme ostane nespremenjena, razen dodajanja 4 LDR-jev, vendar je bila koda zelo spremenjena.

Shematski diagram, ki prikazuje čas deljenja:

Samodejna štoparica z deljenim časom

Zgornje vezje je sestavljeno iz nekaj komponent in je primerno za začetnike. Dodatna razlaga ni potrebna, samo žica v skladu s shemo vezja.

Kako povezati LDR-je:

LDR 2 je prikazan na glavnem vezju, vzporedno poveže še 4 LDR, kot je prikazano na zgornjem diagramu.

Diagram postavitve:

Zgoraj je osnovna ureditev, kako postaviti laser. Upoštevajte, da lahko razdaljo med LDR-ji izbere uporabnik, odvisno od dolžine skladbe.

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 s samodejno štoparico:

• Po končani namestitvi najprej vklopite laserje in nato vklopite vezje Arduino.
• Če so vsi laserji pravilno poravnani z LDR-ji, se na zaslonu ne prikaže sporočilo o napaki. Če obstajajo, jih pravilno poravnajte.
• Zdaj vezje prikaže “Sistem je v pripravljenosti”. Zdaj pritisnite gumb 'start' in prikazal se bo 'Sistem je pripravljen'.
• Na tej točki, ko samostojni igralec prekine svetlobni žarek LDR 1, se zažene časovnik in prikaže 'Čas se izračuna ...'
• Takoj ko predvajalnik doseže končno točko, tj. LDR 6, se časovnik ustavi in ​​prikaže čas deljenja 5, ki ga zabeleži vezje.
• Za ponastavitev časovnika mora uporabnik pritisniti gumb za ponastavitev na arduinu.
Zakaj ta samodejna štoparica ne more prikazati časa v živo na zaslonu, kot to počne tradicionalna štoparica (temveč prikazuje statično besedilo »Čas se izračuna…«)?
Za prikaz časa v realnem času mora Arduino na LCD zaslonu izvesti dodatna navodila. To bo glavnemu kodi za časovno sledenje dodalo nekaj mikrosekund do nekaj milisekund zakasnitve, kar bo privedlo do netočnih rezultatov.

Če imate dodatna vprašanja, izrazite v razdelku za komentarje.




Prejšnji: Arduino LCD KeyPad Shield (SKU: DFR0009) Podatkovni list Naprej: Arduino naključno vezje generatorja RGB