Улучшенная игра «Нерв» со счётчиком ошибок на Arduino Nano
Компоненты
| Arduino Nano R3 | ×1 |
| Зуммер (buzzer) | ×1 |
| Красный LED 5 мм | ×1 |
| Зелёный LED 5 мм | ×1 |
| Сдвиговый регистр 74HC595 (Serial-to-Parallel) | ×1 |
| 7-сегментный красный индикатор | ×1 |
| Резисторы 220 Ом | ×10 |
| Кронка 9В | ×1 |
Инструменты
- Дрель/шуруповёрт, паяльник
О проекте
Классическая игра «Нерв» (buzz wire) с подсчётом касаний провода. При 10-й ошибке устройство входит в режим «game over» — зуммер и индикатор бешено мигают. После каждого касания — «лаг» 500 мс (можно изменить в коде). Кольцо для прохождения сделано из ключника — удобно снимать.
Логика работы
- Состояние GO: зелёный LED, зуммер выкл. При касании (D10 = HIGH) → STOP.
- STOP: красный LED, инкремент счётчика, звуковой сигнал, пауза 500 мс, возврат в GO.
- При 10 ошибках — анимация «game over» на индикаторе и зуммере.
Код (три файла)
nervous_meter_score.ino — основной цикл
int latchPin=3, clockPin=4, dataPin=2;
const int STOP_LED=6, GO_LED=7, BUZZ=8, TOUCH=10;
const int fail_threshold=9;
enum Status { STOP=0, GO=1 };
Status status=GO; int failCounter=0;
void loop() {
while(failCounter > fail_threshold) gameover();
switch(status){
case GO: digitalWrite(GO_LED,HIGH); digitalWrite(STOP_LED,LOW); digitalWrite(BUZZ,LOW);
if(digitalRead(TOUCH)==HIGH) status=STOP; break;
case STOP: digitalWrite(GO_LED,LOW); failCounter++;
if(failCounter > fail_threshold) break;
displayDigit(failCounter); failAlarm(); status=GO; break;
}
}
score_display.ino — работа с 74HC595 и индикатором
byte seg_digits[10] = { B11111100, B01100000, B11011010, B11110010,
B01100110, B10110110, B10111110, B11100000, B11111110, B11100110 };
void displayDigit(int x) {
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,LSBFIRST,seg_digits[x]);
digitalWrite(latchPin,HIGH);
}
game.ino — инициализация и звук
void gameInitialSetup() {
pinMode(STOP_LED,OUTPUT); pinMode(GO_LED,OUTPUT);
pinMode(BUZZ,OUTPUT); pinMode(TOUCH,INPUT_PULLUP);
}
void failAlarm() {
digitalWrite(STOP_LED,HIGH); beep(); delay(150);
digitalWrite(STOP_LED,LOW); digitalWrite(BUZZ,LOW); delay(500);
}
void beep() { for(int i=0;i<3;i++){ digitalWrite(BUZZ,HIGH); delay(50); digitalWrite(BUZZ,LOW); delay(50);} }
Схема
D10 (TOUCH) подключается к проволу трассы. При касании кольцом цепь замыкается на 5В → HIGH. 74HC595 управляет 7-сегментным индикатором по 3 проводам (data, clock, latch). Резисторы 220 Ом на сегменты и LED.
Производственный процесс
- Реагирует ли вольфрамная проволочная сетка с воздухом? Технический обзор
- Искусство и ремесло тиар: история, материалы и современный дизайн
- Колючая проволока: история, конструкция и современное применение
- Панель управления полётным симулятором 2020 на Arduino Nano: LCD и CDI-дисплеи
- Панель переключателей и LED для Microsoft Flight Simulator 2020 на Arduino
- Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
- Освоение вставки проводов в E3.series с E3.cable
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Набор MOSMusic: MOSFET, Arduino и управление светом по музыке
- Пионерские решения Wire EDM для сложного производства форм и штампов