Setelah bermain-main dengan Arduino hanya untuk menghabiskan waktu sebentar, saya memutuskan untuk membuat versi yang disempurnakan dari game buzz wire lama yang bagus yang menghitung kegagalan Anda dan menjadi gila jika Anda menekan wire 10 kali!
Kode sumber dibagi dalam tiga file.
Dalam kode, "masa tenggang" 500 ms ditetapkan setelah setiap kegagalan. Anda dapat memodifikasinya untuk memberi pemain waktu istirahat yang lebih besar setelah setiap buzz.
Juga sesuatu yang saya perhatikan di bagian akhir adalah bahwa LED agak terlalu terang! Jangan ragu untuk menukar dua resistor yang digunakan pada mereka dengan yang lebih kuat. Milik saya hanya sekitar 100ohm.
Untuk cincinnya, saya menggunakan ujung gantungan kunci. Hal yang baik tentang itu adalah Anda bisa membukanya dan tidak perlu menavigasi kembali ke kabel.
Kode
- gugup_meter_score.ino
- score_display.ino
- game.ino
nervous_meter_score.inoArduino
int latchPin =3; // ST_CP [RCK] pada 74HC595int clockPin =4; // SH_CP [SCK] pada 74HC595int dataPin =2; // DS [S1] pada 74HC595const int STOP_LED =6;const int GO_LED =7;const int BUZZ =8;const int TOUCH =10;const int fail_threshold =9;enum Status{ STOP =0, GO =1};void setup() { Serial.begin(9600); tampilanInitialSetup(); gameInitialSetup();}Status status =GO;int failCounter =0;void loop() { while (failCounter> fail_threshold) { gameover(); } sakelar (status) { kasus GO:digitalWrite(GO_LED, HIGH); digitalWrite(STOP_LED, RENDAH); digitalWrite(BUZZ, RENDAH); if (DigitalBaca(SENTUH) ==TINGGI) { status =STOP; } merusak; kasus STOP:digitalWrite(GO_LED, RENDAH); gagalPenghitung++; if (failCounter> fail_threshold) break; displayDigit(penghitung gagal); Serial.println(FailCounter); gagalAlarm(); status =PERGI; merusak; }}byte seg_spin[6] ={ B10000000, B01000000, B00100000, B00010000, B00001000, B000000100};void gameover(){ for (int i=0; i<6; i++) { digitalWrite(BUZZ, HIGH); penundaan (5); digitalWrite(BUZZ, RENDAH); penundaan (50); digitalWrite(latchPin, RENDAH); shiftOut(dataPin, clockPin, LSFIRST, seg_spin[i]); digitalWrite(latchPin, TINGGI); penundaan (10); }}
score_display.inoArduino
byte seg_digits[10] ={ B11111100, // =0 B01100000, // =1 B11011010, // =2 B11110010, // =3 B01100110, // =4 B10110110, // =5 B10111110, // =6 B11100000, // =7 B11111110, // =8 B11100110 // =9}; void displayDigit(int x){ digitalWrite(latchPin, RENDAH); shiftOut(dataPin, clockPin, LSFIRST, seg_digits[x]); digitalWrite(latchPin, HIGH);}void displayInitialSetup(){ pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode (pin jam, OUTPUT); displayDigit(0);}
game.inoArduino
void gameInitialSetup(){ pinMode(STOP_LED, OUTPUT); pinMode(GO_LED, OUTPUT); pinMode(BUZZ, OUTPUT); pinMode(SENTUH, TINGGI); digitalWrite(SENTUH, RENDAH);}void failAlarm(){ digitalWrite(STOP_LED, TINGGI); berbunyi(); penundaan(150); digitalWrite(STOP_LED, RENDAH); digitalWrite(BUZZ, RENDAH); delay(500);}void bip(){ for(int i=0; i<3; i++) { digitalWrite(BUZZ, HIGH); penundaan (50); digitalWrite(BUZZ, RENDAH); penundaan (50); }}
Skema
Ingatlah bahwa D10 yang terhubung ke 5V, akan merupakan kegagalan yang menyebabkan bel berbunyi dan penghitung menghitung. Dalam skema tidak ada cara untuk menunjukkannya.
Jadi bangun kabel dan struktur Anda sesuai :)