ボタンが押された回数を追跡する簡単な Arduino ゲームを作成しようとしています。各ユーザーに 1 つずつ、2 つのボタンがあり、Arduino が選んだ乱数に最も近い人が勝ちます。勝者ボタンの横にあるライトである「優勝」が点灯します。しかし、私はわだち掘れのように思われることに行き詰まっています。先に進む前に、私が arduino/C++ 環境全体にかろうじて 2 週間しか経っていないため、私の知識はかなり低いことを明かします。
基本的に私が実現したいのは、ゲームが一定時間 (たとえば 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;
}