Помогите сделать игру на реакцию!

Platon1209

✩✩✩✩✩✩✩
17 Мар 2022
6
0
Оформи код соответствующим тэгом
Добрый день, у меня мой первый проект это игра на реакцию с светодиодом и кнопкой суть в том что бы светодиод загорался рандомно и надо нажать в течения полторы секунды ну и так далее у меня есть маленький кусок кода но что то не могу разобратся с опросом кнопки и светодиода вот код:
// Пример использования библиотеки GyverButton, 1- 2- 3- нажатие
#define BTN_PIN 3 // кнопка подключена сюда (BTN_PIN --- КНОПКА --- GND)
#include "GyverButton.h"
GButton butt1(BTN_PIN);
void setup() {
Serial.begin(9600);
pinMode(9, OUTPUT);
int Data = Serial.read() ;
}
void loop() {
butt1.tick(); // обязательная функция отработки. Должна постоянно опрашиваться
if (butt1.isSingle()) Serial.println("Single"); // проверка на один клик
digitalWrite(9, HIGH);
if (Serial.available();
if (Data == Single) {
digitalWrite(9, HIGH);
}

}


здесь не много из библиотеки GyverButton
 

vlad_vsc

✩✩✩✩✩✩✩
25 Июл 2020
23
8
что -то не очень понятно что вы хотите сделать с монитором порта...с кнопкой код +- верен, но логичнее использовать прерывания, в либе есть пример
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
isSingle в данном случае плохая идея. Потому что:
  • кнопка отслеживает нажатия разного типа, одинарные , двойные, тройные. Как отличить одинарное нажатие от двойного ? Подождать и если больше нажатий не будет, то это одинарное. Именно так работает isSingle. Соответственно кажется, что надо использовать isClick. Но:
  • isClick отслеживает 2 действия: нажатие и отпускание кнопки, да еще к тому же этот метод использует программный антидребезг. Таким образом он лучше (для этой задачи), чем isSingle, но не идеален. Реакция - это нажатие кнопки, т.е. isPress - событие , которое возникает при 1-ом нажатии на кнопку, и даже если будет дребезг, то это все равно будет 1-ое нажатие.
Это в целом.

А вот этот кусок кода что делает ? Отвечу: ничего. Data не меняется никогда. А Single где то вообще описано ?
C++:
if (Serial.available();
if (Data == Single) {
digitalWrite(9, HIGH);
}
 
  • Лойс +1
Реакции: Platon1209

Platon1209

✩✩✩✩✩✩✩
17 Мар 2022
6
0
@Platon1209,Ну это мой первый код так что он не может быть идеальным.Single это переменная с нажатием кнопки.


@Старик Похабыч,
А кстати а как изменить на isClick просто заменить?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
В библиотеке Гайвера есть примеры на многие случаи жизни.
Для начала научитесь включать светодиод при нажатой кнопке и выключать при отпущенной. А потом включать и выключать по клику.
Код лучше оформлять в соотв. тег из верхней части , где пишется сообщение.
Тот код не компилируется, потому что переменная или константа Single нигде не описана.
И совсем непонятно для чего нужно использовать Serial. Т.е. идея не понятна