Большая коробка для пуговиц.
Большой красный ящик для кнопок, в котором можно разместить 100-миллиметровую аркадную кнопку, такую как можно найти на Amazon. Чуть выше оригинала, чтобы разъемы внизу прилегали удобнее. Также имеется отверстие для вывода провода.
Для вашего удобства ниже скрипт, который отправляет нажатия кнопок в приложение C# (полное раскрытие, использование CmdMessenger, искренне ваш)
В приведенном ниже коде используются Adafruit_debounce и CmdMessenger для подключения к приложению C# через USB.
#include «Adafruit_Debounce.h»
#include «DoEvery.h»
#include // CmdMessenger
// Определить вывод кнопки, используя любой GPIO
#define BUTTON_PIN 4
#define LED_PIN 5
// Создаём объект устранения дребезга для кнопки, которая будет нажата при НИЗКОМ уровне
Кнопка Adafruit_Debounce (BUTTON_PIN, HIGH);
// Мигающие светодиодные переменные
boolledState = 0; // Текущее состояние светодиода
const int kBlinkLed = 13; // Контакт внутреннего светодиода
// Прикрепляем новый объект CmdMessenger к последовательному порту по умолчанию
CmdMessenger cmdMessenger = CmdMessenger(Serial);
// Это список распознаваемых команд. Это могут быть команды, которые можно отправлять или получать.
// Чтобы получить, прикрепите к этим событиям функцию обратного вызова
перечисление
{
kStatus,, // Команда для передачи статуса устройства получателю
kSetPressed, // Команда для обозначения нажатой кнопки
kSetReleased, // Команда для обозначения отпущенной кнопки
};
// Обратные вызовы определяют, над какими полученными командами мы выполняем действия
void AttachCommandCallbacks()
{
// Прикрепляем методы обратного вызова
cmdMessenger.attach(OnUnknownCommand);
//cmdMessenger.attach(kSetPressed, OnSetPressed);
//cmdMessenger.attach(kSetReleased, OnSetReleased);
}
// Вызывается, когда полученная команда не имеет прикрепленной функции
недействительный OnUnknownCommand()
{
cmdMessenger.sendCmd(kStatus,«Команда без присоединенного обратного вызова»);
}
// Функция настройки
недействительная настройка()
{
// Прослушиваем последовательное соединение на предмет сообщений от ПК
Серийный.начало(9600);
// Инициализируем кнопку, которая также установит подтягивание
pinMode (LED_PIN, ВЫХОД);
кнопка.begin();
// Добавляет новую строку к каждой команде
cmdMessenger.printLfCr();
// Прикрепляем пользовательские методы обратного вызова моего приложения
AttachCommandCallbacks();
// Отправляем на ПК статус, в котором говорится, что Arduino загрузился
// Обратите внимание, что это хорошая функция отладки: она также сообщит вам
// если в вашей программе была ошибка и Arduino перезапустился
//cmdMessenger.sendCmd(kStatus,«Arduino запустился!»);
// устанавливаем контакт для мигания светодиода
pinMode (kBlinkLed, ВЫХОД);
}
// Функция цикла
недействительный цикл()
{
// Обновляем состояние кнопки
кнопка.обновление();
// Обработка входящих последовательных данных и выполнение обратных вызовов
cmdMessenger.feedinSerialData();
если (button.justPressed()) {
digitalWrite(LED_PIN, ВЫСОКИЙ);
cmdMessenger.sendCmd(kSetPressed,«Нажатый»);
}
иначе если (button.justReleased()) {
digitalWrite (LED_PIN, НИЗКИЙ);
cmdMessenger.sendCmd(kSetReleased,«Выпущено»);
}
// Поскольку мы используем довольно простую библиотеку устранения дребезжания, мы несем ответственность за
// для создания достаточной задержки для считывания состояния кнопки
// когда сигнал перестал прыгать
задержка(50);
}





























