Arduino reaksi Timer menggunakan RGB LCD 16 x 2 karakter menampilkan
Derek Molloy, DCU, Irlandia.
LCD menggunakan perpustakaan dari:
http://www.arduino.cc/en/Tutorial/LiquidCrystal
* /
#include / / termasuk Perpustakaan LCD
/ / mengatur tampilan dengan 4 bit - R/W terikat GND
LiquidCrystal lcd (13, 12, 5, 6, 7, 8); / / RS, E, D4-D7
int lcdRedPWMPin = 11; / / lampu merah saluran RGB
Int lcdGreenPWMPin = 10; / / hijau saluran backlight RGB
int lcdBluePWMPin = 9; / / blue saluran backlight RGB
int ledPin = 2; / / merah stop LED
int buttonPin = 3; / / reaksi timer tombol
/ / Serikat eksekusi
panjang randomDelayTime; / / memegang jumlah waktu acak
boolean prepareState = true; / / dalam mode pengenalan
boolean isTiming = false; / / waktu tekan negara
panjang timerStartMillis; / / waktu ketika timer mulai
panjang timerEndMillis; / / waktu setelah timer selesai
/ / fungsi untuk mengatur warna latar menggunakan nilai rgb
membatalkan setDisplayRGB (int r, int g, int b)
{
analogWrite (lcdRedPWMPin, r); / / menggunakan pin PWM, artinya naungan
analogWrite (lcdGreenPWMPin, g); / / merah, hijau, biru
analogWrite (lcdBluePWMPin, b); / / 2
24 kombinasi
}
/ / Setup fungsi - disebut hanya sekali
membatalkan setup() {
pinMode (ledPin, OUTPUT); / / LED merah adalah output
pinMode (buttonPin, masukan); / / tombol merupakan masukan
setDisplayRGB(255,255,255); / / putih tampilan
lcd.begin (16, 2); / / 16 kolom oleh baris 2
randomSeed(analogRead(0)); / / menggunakan pin tidak terhubung ke benih urutan acak
}
membatalkan loop() {
If(prepareState) {/ / mempersiapkan negara - memberikan instruksi untuk tekan tombol
lcd.setCursor(0,0); / / set kursor ke 0,0 (kiri atas)
lcd.print ("reaksi Tester:"); / / string di baris atas
lcd.setCursor(0,1); / / baris berikutnya
lcd.print ("[tekan tombol]"); / / string pada baris berikutnya
jika (digitalRead(buttonPin)==true) / / jika tombol ditekan
{
lcd.clear(); / / Hapus tampilan
lcd.setCursor (0,0);
lcd.print ("---siap---");
randomDelayTime = random(10000); / / ini adalah jumlah acak digunakan 0-10 detik
sementara ({digitalRead(buttonPin)==true)} / / menunggu sampai tombol dirilis
prepareState = false; / / selesai mempersiapkan negara - Mari kita beralih
}
}
lain / / tidak mempersiapkan negara
{
jika (! isTiming) / / timer tidak berjalan, jadi kami berhenti untuk jumlah acak
{
Delay(randomDelayTime); / / menunda untuk jumlah acak
digitalWrite (ledPin, tinggi); / / selesai - set merah LED tinggi
setDisplayRGB(255,0,0); / / set backlight LCD menjadi merah
lcd.setCursor(0,0); / / Celana sekarang pesan
lcd.print ("< PRESS sekarang mengatakan");
isTiming = true; / / Sekarang kita siap untuk memulai waktu reaksi
timerStartMillis = millis(); / / Dapatkan saat
}
lain / / sekarang kami waktu seseorang reaksi
{
jika (digitalRead(buttonPin)==true) / / Kapan mereka tekan tombol
{
timerEndMillis = millis(); / / mendapatkan saat
digitalWrite (ledPin, rendah); / / Matikan merah yang dipimpin
lama perbedaan = timerEndMillis - timerStartMillis; / / waktu yang dibutuhkan adalah perbedaan antara kali
lcd.clear(); / / clear LCD
lcd.setCursor(0,0);
Jika (perbedaan == 0) / / jika perbedaan adalah 0 mereka memegang tombol - atau adalah manusia super!
{
setDisplayRGB(255,0,0); / / pesan kesalahan merah
lcd.print ("Shenanigans");
lcd.setCursor(5,1);
lcd.print("Afoot");
}
lain / / valid waktu
{
setDisplayRGB(0,255,0); / / Akhir pesan hijau
lcd.print ("waktu Anda:");
lcd.setCursor(0,1);
lcd.print(difference);
lcd.print("ms"); / / milidetik
}
delay(5000); / / Tinggalkan pesan di layar selama 5 detik
isTiming = false; / / siap untuk memulai waktu lagi
prepareState = true; / / siap untuk mulai dari awal
setDisplayRGB(255,255,255); / / set lampu latar LCD putih
}
}
}
}
Sedang diterjemahkan, harap tunggu..
