Игра. проблема в скетче
- Войдите на сайт для отправки комментариев
Всем доброго времени суток.
Нашел игру на сайте Амперка, игра, направленная на развитие и тренировку памяти. Игроку предстоит последовательно повторять случайные комбинации загорающихся кнопок. Чем длиннее цепочка — тем больше счёт на экране устройства.
http://wiki.amperka.ru/slot-box:simon-says?utm_source=proj&utm_campaign=...
хотел собрать, объявилась ошибка - при начале считывания данных кнопок, программа не останавливается, и каки то образом сразу появляются данные о якобы нажатых кнопках, программа защитывае неправильно "нажатую" комбинацию и сразу выдаёт ошибку, далее по кругу снова генерирует код....
в общем в теле программы считывания кнопок какая то ошибка...
может кто нибудь помочь исправить(к сожалению не силен в програмировании)...
void waitPressButton() { int i = 0; // пока количество нажатий на кнопки не превысило количество очков while (i <= score) { for (int j = 0; j < 3; j++) { // вызываем функцию считывания каждой кнопки по номеру if (buttonIsPressed(j, i)) { ++i; } } } delay(500); // увеличиваем текущее количество очков на единицу score++; } bool buttonIsPressed(int currentButton, int currentScore) { bool result = false; // если клавиша нажата if (!digitalRead(button[currentButton])) { // зажигаем светодиод, нажатой кнопки digitalWrite(ledPin[currentButton], HIGH); // подаём звуковой сигнал о нажатом светодиоде tone(BUZZER_PIN, ledBeep[currentButton], 100); delay(200); // гасим светодиод, нажатой кнопки digitalWrite(ledPin[currentButton], LOW); // присваиваем массиву кода кнопок, текущий номер кнопки inputArray[currentScore] = currentButton; delay(250); // если текущая нажатая клавиша не совпадает со случайно сгенерированной if (inputArray[currentScore] != randomArray[currentScore]) { // нажата не правильная кнопка, вызываем функцию проигрыша fail(); } // кнопка была нажата верно result = true; } // возвращаем результат return result; }
Это амперка делает? Кнопки без защит от дребезга? А куда у вас кнопки подключены, куда подтянуты? При нажатии 0 на порт идет?
Да, Код взял с сайта амперки
кнопки, с/диоды и пьзоизлучатель подключены в соответствии с назначенами пин в начале программы.
Плата Ардуино нано. дисплей пока не подключал
вот полный код.
Проблема по моему в функции - void waitPressButton()
Я имел ввиду второй контакт кнопки куда идет? При нажатии кнопки на пин что приходит земля или питание?
пин - кнопка - (+5в)
Значение не имеет - при отключеных кнопках проблема
программа не останавливается - генерирует нажатие кнопок
Как это не имеет значения О_О. У Вас по коду если 0 на входе тогда срабатывает нажатие кнопки. А у вас там всегда 0 потому что в бегине INPUT а не INPUT_PULLUP. Может если подключите свои кнопки (не знаю как они сделаны) и там есть подтяжка все будет работать а в таком виде надо подтягивать.
Я вас понял. Попробую. Потом отпишусь. Сразу не догадался.
Охохо… подтянул кнопки к + через 19кОм
А сигнал подается (—) всё заработало.
Как сразу не догадался…
Большое спасибо.
У Амперки этод код расчитан на использование с их модулем Кнопка со светодиодом Там кнопки уже с подтяжкой.
Спасибо