был код кости, но потерял его во время восстановления

У меня был код кубика, но я сбросил и забыл создать резервную копию кода, теперь мне нужна помощь в создании кода снова, я не могу заставить кнопку выбора перейти к циклу при нажатии вот что у меня есть до сих пор:

#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;

}

кто-нибудь может мне помочь, пожалуйста

, 👍-3

Обсуждение

Я вижу, вы отредактировали вопрос и полностью изменили скетч. Какое сообщение об ошибке выдает этот скетч?, @VE7JRO


2 ответа


1

Знаете ли вы, что кнопки экрана ЖК-дисплея обычно мультиплексируются на аналоговый контакт A0? Если я погуглил правильные схемы, это относится и к этому. Поэтому ни прерывания смены контакта, ни внешние прерывания использовать нельзя.

Возможно, модуль аналогового компаратора с правильным порогом.

,

может кто-нибудь помочь мне с моим проектом, проблема наверху, @taran


0

Вы включаете библиотеку 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