был код кости, но потерял его во время восстановления
У меня был код кубика, но я сбросил и забыл создать резервную копию кода, теперь мне нужна помощь в создании кода снова, я не могу заставить кнопку выбора перейти к циклу при нажатии вот что у меня есть до сих пор:
#include <LiquidCrystal.h>
// выбор контактов, используемых на ЖК-панели
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
//используется позже
String line2 = "Press Select to roll"; // Прокручиваемая строка
// определяем некоторые значения, используемые панелью и кнопками
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
// читаем кнопки
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // считываем значение с датчика
// Для версии 1.0 прокомментируйте другой порог и используйте приведенный ниже:
if (adc_key_in > 1000) return btnNONE; // Мы делаем этот вариант первым из соображений скорости, так как это будет наиболее вероятный результат
// Для версии 1.1 используем этот порог
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE; // когда все остальные терпят неудачу, возвращаем это...
}
void setup() {
randomSeed(analogRead(1));
lcd.begin(16, 2); // запускаем библиотеку
lcd.setCursor(3,0);
lcd.print ("Catan Dice");
lcd.setCursor(0,1);
lcd.print("Press Select to roll");
}
void loop() {
//локальные переменные
int buttonState = read_LCD_buttons(); // читаем панель кнопок
int lastButtonState = btnNONE; // предыдущее состояние кнопки
//Игральная кость
int DiceOne = random(1,7);
int DiceTwo = random(1,7);
if (buttonState != lastButtonState) {
// если состояние изменилось, увеличиваем счетчик
if (buttonState == HIGH) {
// если текущее состояние ВЫСОКОЕ, то кнопка переключилась с выключенного состояния на включенное:
if (btnState == btnSELECT)
lcd.setCursor (0,4);
lcd.print(DiceOne);
}
}
lastButtonState = buttonState;
}
кто-нибудь может мне помочь, пожалуйста
@taran, 👍-3
Обсуждение2 ответа
Знаете ли вы, что кнопки экрана ЖК-дисплея обычно мультиплексируются на аналоговый контакт A0? Если я погуглил правильные схемы, это относится и к этому. Поэтому ни прерывания смены контакта, ни внешние прерывания использовать нельзя.
Возможно, модуль аналогового компаратора с правильным порогом.
может кто-нибудь помочь мне с моим проектом, проблема наверху, @taran
Вы включаете библиотеку AnalogDebounce.h, но не используете какой-либо код в цикле() для опроса/обновления того, какая кнопка (если есть) нажата. Взгляните на пример «BasicUse» здесь: https://github.com/MatCat/AnalogDebounce. Также существует библиотека для клавиатуры DFR: https://github.com/DFRobot/LCD-KeyPad-Shield. . Мое первое предложение — написать очень простой скетч, используя библиотеку, которая работает с вашей клавиатурой, чтобы вы могли убедиться, что кнопки работают должным образом.
В вашем скетче есть строка кода, которая мне абсолютно непонятна: if (diceOne + diceTwo == 5, 4, 3, 2, 6 ). Я не думаю, что вы можете сравнить кости 1 + 2 со списком целых чисел, разделенных запятыми. Попробуйте так: if((diceOne + diceTwo > 1) && (diceOne + diceTwo < 7))
когда я пытаюсь загрузить экран LCD-клавиатуры или AnalogDebounce в Arduino, он говорит об ошибке компиляции, помогите, пожалуйста., @taran
Обновите свой вопрос с кодом, который не будет компилироваться, и сообщением об ошибке., @VE7JRO
Arduino: 1.8.5 (Windows Store 1.8.10.0) (Windows 10), плата: «Arduino/Genuino Uno» C:\Users\taran\Documents\Arduino\sketch_apr20b\sketch_apr20b.ino:1:23: фатальная ошибка: DFRkeypad.h: Нет такого файла или каталога #include "DFRkeypad.h" ^ компиляция прекращена. статус выхода 1 Ошибка компиляции для платы Arduino/Genuino Uno., @taran
Похоже, вы не установили библиотеку DFRkeypad с Github., @VE7JRO
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Я вижу, вы отредактировали вопрос и полностью изменили скетч. Какое сообщение об ошибке выдает этот скетч?, @VE7JRO