带计分器的嗡嗡声
组件和用品
 | | × | 1 | |
 | | × | 1 | |
 | | × | 1 | |
 | | × | 1 | |
 | Texas Instruments 移位寄存器-串行到并行 | | × | 1 | |
 | | × | 1 | |
 | | × | 10 | |
 | | × | 1 | |
关于这个项目
在玩了 Arduino 只是为了打发时间之后,我决定制作一个增强版的老式嗡嗡线游戏,它会计算你的失败次数,如果你击中线 10 次就会发疯!
这是我自己玩游戏的视频:
源代码分为三个文件。
在代码中,每次失败后都会设置 500 毫秒的“宽限期”。你可以修改它,让玩家在每次嗡嗡声后有更大的休息时间。
最后我还注意到 LED 有点太亮了!随意将它们上使用的两个电阻换成更强的电阻。我的只有大约 100 欧姆。
对于戒指,我使用了钥匙链的末端。它的好处是您可以直接打开它,而不必一直在线路上导航。
我希望你喜欢我的项目!
代码
- nervous_meter_score.ino
- score_display.ino
- game.ino
nervous_meter_score.inoArduino
int latchPin =3; // ST_CP [RCK] on 74HC595int clockPin =4; // SH_CP [SCK] on 74HC595int dataPin =2; // DS [S1] on 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设置(){ Serial.begin(9600); displayInitialSetup(); gameInitialSetup();}Status status =GO;int failCounter =0;void loop() { while (failCounter> fail_threshold) { gameover(); } switch (status) { case GO:digitalWrite(GO_LED, HIGH);数字写入(STOP_LED,低);数字写入(嗡嗡声,低); if (digitalRead(TOUCH) ==HIGH) { status =STOP; } 休息;案例停止:digitalWrite(GO_LED,低);失败计数器++;如果(failCounter> fail_threshold)中断;显示数字(失败计数器); Serial.println(failCounter);故障报警();状态 =去;休息; }}byte seg_spin[6] ={ B10000000, B01000000, B00100000, B00010000, B00001000, B00000100};void gameover(){ for (int i=0; i<6; IBU);Z, {digital延迟(5);数字写入(嗡嗡声,低);延迟(50);数字写入(闩锁销,低); shiftOut(dataPin,clockPin,LSBFIRST,seg_spin[i]);数字写入(闩锁销,高);延迟(10); }}
score_display.inoArduino
byte seg_digits[10] ={ B11111100, // =0 B01100000, // =1 B11011010, // =2 B11110010, // =3 B01100110, // =4 B101101511, //10 //1 =6 B11100000, // =7 B11111110, // =8 B11100110 // =9}; void displayDigit(int x){ digitalWrite(latchPin, LOW); shiftOut(dataPin,clockPin,LSBFIRST,seg_digits[x]); digitalWrite(latchPin, HIGH);}void displayInitialSetup(){ pinMode(latchPin, OUTPUT);引脚模式(数据引脚,输出); pinMode(clockPin, 输出); displayDigit(0);}
game.inoArduino
void gameInitialSetup(){ pinMode(STOP_LED, OUTPUT); pinMode(GO_LED,输出); pinMode(BUZZ,输出); pinMode(触摸,高); digitalWrite(TOUCH, LOW);}void failAlarm(){ digitalWrite(STOP_LED, HIGH);嘟();延迟(150);数字写入(STOP_LED,低);数字写入(嗡嗡声,低); delay(500);}void beep(){ for(int i=0; i<3; i++) { digitalWrite(BUZZ, HIGH);延迟(50);数字写入(嗡嗡声,低);延迟(50); }}
示意图
请记住,连接到 5V 的 D10 将构成故障,导致蜂鸣器发出哔哔声和计数器计数。在原理图中没有办法显示它。
所以相应地建立你的电线和结构:)