Я пытаюсь сделать простую игру Arduino, которая отслеживает количество нажатий на кнопку. Есть две кнопки: по одному для каждого пользователя, и тот, кто ближе всего к случайному числу, которое выбирает Ардуино, выигрывает. «Победа» - это свет, который появляется рядом с кнопкой winers. Тем не менее, я застрял в том, что кажется колесом - прежде чем я пойду дальше, я расскажу, что мне всего две недели на всю среду arduino/C++, поэтому мои знания довольно низки.Структуры управления не дают мне
В принципе, я хочу, чтобы игра длилась определенное количество времени, скажем 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;
}
Вам нужно задать вопрос. – JBentley
Полезно задать вам вопрос в следующем формате. «Я хочу сделать« X ». Я попробовал« Y », но когда я его запустил, я увидел« Z ». Что мне делать по-другому, чтобы увидеть« X »? – Bill
Вау, вопрос Arduino, который не связан с правильной последовательностью. Тем не менее основная проблема с контуром, вы только читаете состояние кнопки при вводе цикла. И тогда снова цикл снова, не обновляя состояние. Таким образом, вы никогда не увидите кнопку нажатой. –