Game Reaksi: Timer
Termasuk bagian Proyek dalam perjalanan Arduino di Coddy. Pelajaran 6 dari 24.
Sekarang game mengukur waktu reaksimu. Waktu reaksi adalah waktu sejak LED menyala hingga kamu menekan tombol, jadi sketch perlu mengingat satu momen: saat LED menyala.
digitalWrite(ledPin, HIGH);
litAt = millis();
state = LIT;Saat tombol ditekan dalam kondisi LIT, selisih waktunya adalah hasilnya:
unsigned long reaction = millis() - litAt;
Serial.print("Reaction: ");
Serial.print(reaction);
Serial.println(" ms");Ini hanya berfungsi karena sketch tidak pernah berhenti dalam delay(): loop() memeriksa tombol ribuan kali setiap milidetik, jadi penekanan tombol terdeteksi kurang dari satu milidetik setelah terjadi. Kebanyakan orang membutuhkan 200 hingga 300 ms.
Tantangan
SedangUkur waktu pemain:
- simpan
millis()dilitAtsaat LED menyala - saat tombol ditekan dalam
LIT, hitungmillis() - litAt - cetak hasilnya sebagai
Reaction: 250 ms
Tekan Jalankan, mainkan, baca monitor Serial, lalu tekan Periksa.
Coba sendiri
const int ledPin = 12;
const int buttonPin = 2;
// Tiga status dalam satu putaran
enum State { READY, WAITING, LIT };
State state = READY;
int lastButton = HIGH; // hasil pembacaan tombol sebelumnya
unsigned long waitStart = 0; // saat waktu tunggu dimulai
unsigned long waitTime = 0; // durasi waktu tunggu ini
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Press the button to start");
}
void loop() {
int button = digitalRead(buttonPin);
bool pressed = (button == LOW && lastButton == HIGH); // baru saja ditekan
lastButton = button;
unsigned long now = millis();
switch (state) {
case READY:
if (pressed) {
randomSeed(micros()); // waktu penekanan tidak pernah sama dua kali
waitTime = random(1000, 3001);
waitStart = now;
state = WAITING;
}
break;
case WAITING:
if (now - waitStart >= waitTime) {
digitalWrite(ledPin, HIGH);
state = LIT;
}
break;
case LIT:
if (pressed) {
digitalWrite(ledPin, LOW);
state = READY;
}
break;
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Proyek
2Game Reaksi
Game Reaksi: Waktu Tunggu AcakGame Reaksi: TimerGame Reaksi: Mulai Terlalu CepatGame Reaksi: Waktu TerbaikLatihan sendiri: Playground Arduino