Membuat Jam Randik Automatik untuk Pelari, Atlet dan Olahragawan

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam catatan ini kita akan membina jam randik yang secara automatik memulakan pemasa ketika pelari mula berlari dan pemasa berhenti ketika pelari mencapai akhir. Masa yang berlalu antara titik permulaan dan akhir dipaparkan pada LCD 16 x 2.

Mula-mula mari kita mulakan dengan belajar bagaimana mengkonfigurasi litar jam tangan Arduino yang ringkas dan tepat.



Jam randik adalah peranti jam waktu yang dikendalikan secara manual yang direka untuk mengukur jangka masa yang mungkin telah berlalu bermula dari titik waktu tertentu ketika ia diaktifkan, dan pada saat ia akhirnya dinyahaktifkan. Varian yang lebih besar dari peranti yang sama disebut jam berhenti yang digunakan untuk memantau aksi dari jarak jauh dan biasanya terdapat di stadium sukan dll.

Jam randik mekanikal vs elektronik

Sebelumnya jam randik jam tangan mekanikal tradisional lebih biasa, dan digunakan oleh semua untuk tujuan tersebut.



Dalam sistem mekanik, kami mempunyai dua butang tekan untuk melaksanakan fungsi jam tangan. Satu untuk memulakan jam berhenti dengan menekan sekali, dan untuk menghentikan waktu dengan menekan butang yang sama sekali lagi untuk merakam masa yang berlalu .... butang kedua digunakan untuk menetapkan semula jam kembali ke sifar.

Jam berhenti mekanikal pada dasarnya berfungsi melalui daya spring, yang memerlukan tempoh penggulungan secara manual dengan memutar tombol knurled yang diberikan di bahagian atas peranti jam.

Namun jika dibandingkan dengan jam tangan digital moden, jenis mekanikal boleh dianggap primitif dan tidak tepat dalam jarak milisaat.

Menggunakan Arduino

Dan hari ini dengan munculnya mikrokontroler, jam tangan ini menjadi sangat tepat dan boleh dipercayai untuk julat mikrodetik.

Litar jam tangan Arduino yang disajikan di sini adalah salah satu reka bentuk berkuasa mikrokontroler moden ini yang paling tepat boleh disamakan dengan alat jam tangan moden komersial.

Mari belajar bagaimana membina litar jam berhenti Arduino yang dicadangkan:

Anda memerlukan Bil bahan berikut untuk pembinaan:

Diperlukan Perkakasan

Pelindung Kekunci LCD Arduino (SKU: DFR0009)

Pelindung Kekunci LCD Arduino (SKU: DFR0009)

Papan Arduino SATU

Arduino UNO

Kabel USB Arduino

kabel usb arduino

Sebaik sahaja anda memperoleh bahan di atas dan menghubungkannya antara satu sama lain, ini hanya mengenai mengkonfigurasi kod lakaran yang diberikan berikut ke papan Arduino anda dan menonton keajaiban fungsi jam berhenti.

Kod tersebut

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

Menambah Paparan 7 Segmen

Sekarang mari kita lanjutkan dengan perincian mengenai pembinaan rangkaian jam randik menggunakan paparan LED 7 segmen dan Arduino. Kami akan meneroka konsep yang berkaitan dengan gangguan dan IC pemacu paparan yang penting untuk memahami projek ini. Projek ini dicadangkan oleh Encik Abu-Hafss yang merupakan salah satu pembaca laman web ini yang berminat.

Seperti yang telah kita ketahui bahawa Stopwatch adalah peranti yang membantu untuk mengesan jangka masa yang singkat dari jam hingga milisaat (kebanyakannya). Hampir semua jam tangan digital murah dilengkapi dengan fungsi jam randik, tetapi tidak ada jam tangan yang dapat memberikan semangat untuk membuat diri kita sendiri dan juga mencari jam randik dengan paparan LED 7 segmen adalah luar biasa.

Abu-Hafss mencadangkan kami merancang jam randik dengan 4 paparan, dua untuk minit dan dua untuk konfigurasi (MM: SS). Tetapi bagi kebanyakan kita, ia mungkin bukan reka bentuk yang layak, jadi kami menambahkan dua paparan lagi untuk jarak milisaat jadi sekarang reka bentuk yang dicadangkan akan berada dalam konfigurasi MM: SS: mS.

Sekiranya anda hanya memerlukan konfigurasi MM: SS atas sebab tertentu, anda tidak perlu menyambungkan paparan segmen mil milidetik 7 dan IC pemacu, keseluruhan fungsi litar masih tidak terjejas.

Litar:

Jam randik yang dicadangkan terdiri daripada enam IC 4026 yang merupakan pemacu paparan tujuh segmen, enam paparan LED 7 segmen, satu papan Arduino, beberapa butang tekan dan beberapa perintang 10K.

Sekarang mari kita fahami bagaimana menghubungkan paparan segmen IC 4026 hingga 7.

Paparan segmen 7 boleh menjadi paparan katod biasa dengan warna apa pun. Paparan 7 segmen mudah terbunuh dengan bekalan 5V, jadi perintang 330 ohm adalah wajib pada setiap segmen paparan.

Sekarang mari kita lihat gambarajah pin IC 4026:

  • Pin # 1 adalah input jam.
  • Pin # 2 adalah jam mati, ia mematikan jumlah yang dipaparkan jika pin ini tinggi.
  • Pin # 3 diaktifkan untuk paparan jika pin ini rendah, paparan akan diselaraskan dan sebaliknya.
  • Pin # 5 dibawa keluar, yang menjadi tinggi ketika IC mengira 10.
  • Pin 6, 7, 9, 10, 11, 12, 13 adalah output paparan.
  • Pin # 8 adalah GND.
  • Pin # 16 adalah Vcc.
  • Pin # 15 diset semula, jika kita tinggi pin ini, kiraan berubah menjadi sifar.
  • Pin # 4 dan # 14 tidak digunakan.

Gambarajah sambungan paparan:

Gambarajah sambungan Paparan LCD:

Mana-mana salah satu pin GND paparan segmen 7 boleh disambungkan ke tanah. IC mesti dihidupkan dari bekalan 5V atau pin output Arduino 5V.

Skema di atas untuk hanya satu paparan, ulangi yang sama untuk lima paparan lain.

Berikut adalah skema selebihnya:

Jam Randik Menggunakan Arduino dengan 7 Segmen Paparan

Litar mungkin dikuasakan dari bateri 9V. Dua butang disediakan di sini satu untuk memulakan waktu dan satu lagi untuk berhenti. Dengan menekan butang reset pada Arduino, kiraan waktu akan diset semula ke sifar di paparan.

Dua butang tekan disambungkan ke pin # 2 dan # 3 yang merupakan gangguan perkakasan mikrokontroler Arduino / Atmega328P.

Mari kita fahami apa itu gangguan:

Terdapat dua jenis gangguan: gangguan perkakasan dan gangguan perisian. Di sini kita hanya menggunakan gangguan perkakasan.

Gangguan adalah isyarat kepada mikrokontroler, yang akan membuat mikrokontroler segera bertindak balas terhadap suatu peristiwa.

Terdapat hanya dua pin gangguan perkakasan di papan Arduino dengan pin mikrokontroler ATmega328P # 2 dan # 3. Arduino mega mempunyai lebih daripada dua pin gangguan perkakasan.

Pengawal mikro tidak dapat melakukan dua fungsi pada masa yang sama. Contohnya memeriksa butang tekan dan mengira nombor.

Mikrokontroler tidak dapat melaksanakan dua peristiwa secara serentak, jika kita menulis kod untuk memeriksa penekanan tombol dan menghitung angka, penekanan tombol hanya akan dapat dikesan apabila mikrokontroler membaca sekeping kod pengesanan tekan butang, pada waktu yang lain butang tidak berfungsi.

Oleh itu, terdapat kelewatan dalam pengesanan penekanan butang dan untuk sebab tertentu jika kod dihentikan buat sementara waktu, penekanan butang tidak akan dapat dikesan. Untuk mengelakkan masalah seperti ini diperkenalkan.

Isyarat gangguan selalu diberi keutamaan tertinggi, fungsi utama (baris utama kod) akan dihentikan dan melaksanakan fungsi (sekeping kod lain) yang ditetapkan untuk gangguan tertentu.

Ini sangat penting untuk aplikasi kritikal masa seperti jam randik atau sistem keselamatan dll di mana pemproses perlu mengambil tindakan segera sebagai tindak balas terhadap sesuatu peristiwa.

Di Arduino kami menetapkan gangguan perkakasan sebagai:

attachInterrupt (0, mula, RISING)

  • '0' bermaksud angka gangguan sifar (dalam mikrokontroler semuanya bermula dari sifar) yang merupakan pin # 2.
  • 'Mula' adalah nama fungsi gangguan, anda boleh menamakan apa sahaja di sini.
  • 'RISING' jika pin # 2 (yang merupakan gangguan sifar) naik tinggi, fungsi interrupt dijalankan.

attachInterrupt (1, Stop, RISING)

  • '1' bermaksud gangguan nombor satu yang merupakan pin # 3.
  • 'Berhenti' adalah nama gangguan.

Kita juga dapat mengganti 'RISING' dengan 'FALLING', sekarang ketika pin interrupt pergi RENDAH fungsi interrupt dijalankan.

Kita juga dapat mengganti 'RISING' dengan 'CHANGE', sekarang setiap kali pin interrupt naik dari tinggi ke rendah atau rendah ke tinggi, fungsi interrupt dijalankan.

Fungsi interrupt dapat ditetapkan seperti berikut:

batal mula () // mula adalah nama gangguan.

{

// program di sini

}

Fungsi interrupt mestilah sesingkat mungkin dan fungsi delay () tidak dapat digunakan.

Yang menyimpulkan bahawa gangguan perisian gangguan perisian yang berkaitan dengan Arduino akan dijelaskan dalam artikel akan datang.

Sekarang anda tahu mengapa kami menyambungkan butang tekan mula dan berhenti untuk mengganggu pin.

Sambungkan litar seperti rajah selebihnya litar adalah jelas.

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

Sekarang yang menyimpulkan kodnya.

Jam randik Dibangunkan Khas untuk Atlet

Akhirnya, mari kita ketahui bagaimana konsep di atas sebenarnya dapat ditingkatkan untuk atlet yang ingin mengembangkan kemahiran berlari mereka tanpa bergantung pada yang lain untuk permulaan dan menghentikan pemasa / jam randik yang diperlukan. Lebih baik memulakan pemasa secara automatik dengan mengesan gerakan anda daripada seseorang yang memulakan / menghentikan jam randik, yang mungkin menambah masa reaksi mereka juga.

CATATAN: Projek ini dirancang untuk mengukur masa antara titik ‘A’ hingga titik ‘B’ yang dilindungi oleh SATU pengguna pada satu masa.

Penyediaan terdiri daripada dua laser yang diletakkan pada titik permulaan dan titik akhir, dua LDR juga diletakkan bertentangan dengan dua modul laser. Apabila atlet mengganggu laser ‘mulai’, waktu mula dikira dan apabila atlet mencapai akhir, gangguan laser dan pemasa yang berhenti ‘berhenti’ dan memaparkan masa yang berlalu antara dua titik. Ini adalah kaedah yang digunakan untuk mengukur masa yang berlalu dalam idea yang dicadangkan.

Mari lihat setiap komponen litar secara terperinci.

Butiran Kerja Komponen

Litar ini tetap sederhana, terdiri daripada modul LCD 16 x 2, beberapa perintang, dua LDR dan butang tekan.

Antara muka antara LCD dan arduino adalah standard, kami dapat menjumpai sambungan serupa dalam banyak projek berasaskan LCD yang lain.

Dua pin analog A0 dan A1 digunakan untuk mengesan gangguan laser. Pin analog A2 dihubungkan dengan butang tekan yang digunakan untuk mempersenjatai jam randik.

Tiga perintang, dua 4.7K dan satu 10K adalah perintang tarik ke bawah yang membantu pin input kekal rendah.

Potensiometer 10K disediakan untuk menyesuaikan kontras dalam modul LCD untuk penglihatan yang optimum.

Litar yang dicadangkan telah dirancang dengan mekanisme pengesanan kesalahan untuk laser. Sekiranya salah satu laser itu salah atau tidak diselaraskan dengan LDR, ia memaparkan mesej ralat pada paparan LCD.

· Jika laser MULAI tidak berfungsi, ia akan memaparkan laser 'start' tidak berfungsi '

· Jika laser STOP tidak berfungsi, ia memaparkan laser 'berhenti' tidak berfungsi '

· Jika kedua-dua laser tidak berfungsi, itu akan menunjukkan 'Kedua laser tidak berfungsi'

· Jika kedua-dua laser berfungsi dengan baik, itu akan menunjukkan 'Kedua-dua laser berfungsi dengan baik'

Mesej ralat muncul sehingga modul laser diperbaiki atau penjajaran dilakukan dengan betul dengan LDR.

Setelah langkah ini bebas dari masalah, sistem akan pergi ke mod siap sedia dan memaparkan “-sistem siap sedia”. Pada tahap ini pengguna dapat melengkapkan persediaan dengan menekan butang kapan saja.

Satu butang tekan ditekan sistem siap untuk mengesan gerakan dari pengguna dan menunjukkan 'Sistem sudah siap'.

Pelari mungkin beberapa inci dari laser ‘start’.

Sekiranya laser 'mula' terganggu, waktu mula dihitung dan paparan 'Waktu sedang dikira ......' Masa dikira di tanah belakang.

Masa yang berlalu tidak akan ditunjukkan sehingga pelari mencapai / mengganggu laser 'berhenti'. Ini kerana menampilkan masa berlalu di LCD seperti jam randik tradisional, memerlukan beberapa arahan tambahan untuk dilaksanakan dalam mikrokontroler, yang merosot ketepatan penyediaan dengan ketara.

CATATAN: Tekan butang reset pada arduino untuk membersihkan bacaannya.

Cara mengatur litar di landasan larian:

Sila gunakan wayar tebal untuk menghubungkan antara LDR dan litar arduino kerana jarak antara keduanya mungkin berjarak beberapa meter, dan voltan tidak boleh turun dengan ketara. Jarak antara LDR1 dan LDR2 maksimum beberapa ratus meter.

Cara memasang LDR:

LDR mesti dipasang di dalam tiub legap legap dan bahagian depan juga mesti ditutup dan hanya lubang dengan diameter beberapa milimeter yang dibuat untuk membolehkan pancaran laser masuk.

LDR mesti dilindungi dari sinar matahari langsung kerana tidak dapat membezakan dari sinar laser dan sumber cahaya lain dan mungkin tidak mendaftarkan gerakan dari pengguna.

Kod Program:

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

Prototaip pengarang:

Meningkatkan dengan Kemudahan Pemisah Berpisah

Litar jam randik automatik yang dicadangkan dengan pemasa perpecahan adalah lanjutan dari rangkaian Jam Randik Automatik, di mana jam randik mengesan masa secara automatik sebaik sahaja pelari solo meninggalkan titik permulaan dan pemasa berhenti dan menunjukkan masa yang berlalu ketika pelari mencapai titik akhir.

Pengenalan

Projek ini dicadangkan oleh salah seorang pembaca laman web ini, Mr Andrew Walker.

Dalam projek ini kami memperkenalkan 4 LDR lagi untuk mengukur masa perpecahan pelari solo. Terdapat 6 LDR secara keseluruhan, semuanya boleh diletakkan di landasan larian dengan jarak yang seragam di antara mereka atau bergantung pada keadaan dan pilihan pengguna.

Sebilangan besar perkakasan tetap tidak berubah kecuali penambahan 4 LDR, tetapi kodnya telah mengalami pengubahsuaian besar.

Diagram Skematik Menunjukkan Waktu Berpisah:

Jam randik automatik dengan Waktu Berpisah

Litar di atas terdiri daripada beberapa komponen dan mesra pemula. Tidak perlu penjelasan lebih lanjut, hanya kawat mengikut rajah litar.

Cara memasang LDR:

LDR 2 ditunjukkan pada rajah litar utama menghubungkan 4 LDR lagi secara selari seperti yang ditunjukkan dalam rajah di atas.

Rajah Susun Atur:

Di atas adalah susunan asas bagaimana meletakkan laser. Harap maklum bahawa jarak antara LDR boleh menjadi pilihan pengguna bergantung pada panjang trek.

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

Cara mengendalikan Jam Randik Automatik ini:

• Dengan persediaan yang lengkap, hidupkan laser terlebih dahulu dan kemudian hidupkan litar Arduino seterusnya.
• Jika semua laser sejajar dengan LDR, layar tidak akan muncul dengan pesan ralat. Sekiranya ada, sila luruskan dengan betul.
• Sekarang litar memaparkan 'Sistem siap sedia'. Sekarang tekan butang 'mulai' dan akan muncul 'Sistem sudah siap'.
• Pada ketika ini apabila pemain solo mengganggu pancaran cahaya LDR 1, pemasa akan dimulakan dan ia memaparkan 'Masa sedang dikira ....'
• Sebaik sahaja pemain mencapai titik akhir iaitu LDR 6, pemasa berhenti dan ia memaparkan 5 waktu perpecahan yang direkodkan oleh litar.
• Pengguna harus menekan butang reset pada arduino untuk menetapkan semula pemasa.
Mengapa jam randik automatik ini tidak dapat menunjukkan masa langsung di paparan seperti jam randik tradisional (melainkan memaparkan teks statik 'Waktu sedang dikira ...')?
Untuk memaparkan waktu dalam masa nyata, Arduino harus melaksanakan arahan tambahan untuk paparan LCD. Ini akan menambah beberapa mikrodetik hingga beberapa milisaat kelewatan pada bahagian kod pengesanan masa utama, yang akan membawa kepada hasil yang tidak tepat.

Sekiranya anda mempunyai pertanyaan lebih lanjut, sila nyatakan melalui bahagian komen.




Sebelumnya: Arduino LCD KeyPad Shield (SKU: DFR0009) Lembaran Data Seterusnya: Arduino Random RGB Light Generator Circuit