我正在尝试制作一个简单的 Arduino 游戏来跟踪按下按钮的次数。有两个按钮,每个用户一个,最接近 Arduino 选择的随机数的人获胜。获胜者按钮旁边的“获胜”灯会亮起。然而,我陷入了似乎是一个陈规陋习的状态——在我更进一步之前,我会透露我刚刚进入整个 arduino/C++ 环境只有两周大,所以我的知识相当低。
基本上我想要发生的是游戏持续一定的时间,比如说 5 秒,然后在 5 秒后,所有的按钮按下进行统计和比较,然后选出一个获胜者。然后游戏会自行重置,我们可以再次玩。我陷入困境的地方是计时功能。我最初是gameClock
从函数中减去一个变量,millis()
但是我读到重置millis()
函数是不好的做法。也许我的代码会让你更好地理解我想要完成的事情。
#include <Bounce.h>
//Using Arduino UNO
#define RBUTTON 2
#define RRLED 3
#define RGLED 4
#define MBLED 5
#define LGLED 6
#define RLLED 7
#define LBUTTON 8
Bounce BounceR = Bounce(RBUTTON, 5);
Bounce BounceL = Bounce(LBUTTON, 5);
int lastStateR = 0;
int lastStateL = 0;
int switchLCount = 0;
int switchRCount = 0;
long gameClock = 5000;
void setup() {
//LED from left to right
pinMode(RBUTTON, INPUT);
pinMode(RRLED, OUTPUT); //Red
pinMode(RGLED, OUTPUT); //Green
pinMode(MBLED, OUTPUT); //Blue
pinMode(LGLED, OUTPUT); //Green
pinMode(RLLED, OUTPUT); //Red
pinMode(LBUTTON, INPUT);
Serial.begin(9600);
}
void loop() {
BounceR.update();
BounceL.update();
int total = switchRCount + switchLCount;
int valueR = BounceR.read();
int valueL = BounceL.read();
if (valueL != lastStateL) {
if (valueL == HIGH) {
switchLCount++;
Serial.print("Left button:");
Serial.println(switchLCount);
Serial.print("Total: ");
Serial.println(total);
}
}
lastStateL = valueL;
if (valueR != lastStateR) {
if (valueR == HIGH) {
switchRCount++;
Serial.print("Right button: ");
Serial.println(switchRCount);
Serial.print("Total: ");
Serial.println(total);
}
}
lastStateR = valueR;
}