Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Подвеска с ЧПУ на базе Arduino HID

Компоненты и расходные материалы

Ардуино Леонардо
× 1
Можно добавить мгновенные кнопки, подсветку и метки!
× 1

Об этом проекте

Последнее обновление статьи:

31.07.2018:добавлены файлы САПР

24.07.2018:добавлен раздел схем и программирования

Почему этот проект?

Вы можете купить кулон для своего станка с ЧПУ, но я построил свой деревянный станок с ЧПУ, так почему бы не сделать свой собственный кулон?

Кроме того, обычный брелок для моей платы контроллера будет стоить 100 евро и иметь всего 2 кнопки и маховик.

В моем кулоне 23 кнопки с 6 функциями на кнопку и маховик.

Один комментарий может быть таким:«Он большой и тяжелый!» Но на практике неожиданно оказалось очень кстати иметь подвеску, которая остается на месте при повороте маховика ...

Как это работает?

Прелесть Arduino с чипом 32u4 (не все модели имеют этот чип) - это возможность эмуляции клавиатуры и / или мыши. Когда вы подключаете Leonardo к компьютеру, он «видит» клавиатуру. Отлично!

Поэтому, когда вы программируете Arduino, добавляете к нему несколько переключателей и подключаете его к ПК или Mac, вы можете отправлять (несколько) нажатий клавиш / движений мыши на компьютер bij, нажав кнопку. Как я уже упоминал, 23 кнопки / 6 функций на кнопку =множество опций.

Все зависит от использования правильной библиотеки для скетча Arduino! После нескольких часов поиска я наконец нашел отличную библиотеку, которую включил на эту страницу:Clickbutton.

С помощью этой библиотеки вы получаете следующие возможности для каждой (моментальной!) Кнопки:

  • Один щелчок
  • Дважды щелкните
  • Тройной удар
  • Нажмите один раз и удерживайте
  • Дважды щелкните и удерживайте
  • Трижды щелкните и удерживайте

Также вы получаете функцию устранения неполадок в библиотеке Clickbutton, что важно.

вы можете настроить время для каждой кнопки, но стандартное время составляет> =250 мс для распознавания нажатия и> =1000 мс для распознавания удержания кнопки.

Просто отрывок из моего эскиза для трехфункциональной кнопки оси X (ключ 13) :

  if (button [13] .clicks! =0) 
{
switch (button [13] .clicks)
{
case 1:// Один щелчок
// Маховик по X
shortcut_HANDWHEEL_X ();
break;
case 2:// Двойной щелчок
// Ноль X
shortcut_ZERO_X ( );
break;
case 3:// Тройной щелчок
break;
case -1:// Одиночный щелчок и удерживание
// МАКРОС ПОЛЬЗОВАТЕЛЯ 18:X -axis:перейти к нулевой позиции G0 X0.0000
press_ESC ();
goto_MAIN_MENU ();
user_MACRO_18 ();
break;
case -2:/ / Двойной щелчок и удерживание
break;
case -3:// Тройной щелчок и удерживание
break;
}
}

Корпус

Для подвесного корпуса я выбрала красное дерево. Я люблю работать с деревом, и у него прекрасный внешний вид. Также таким образом я мог сделать действительно индивидуальный чемодан, что не всегда возможно с готовым чемоданом из АБС-пластика, который можно купить за 20-50 евро.

Рисунок был выполнен с помощью программы Vectric Cut2D. Я рад, что вложился в этот программный пакет, потому что он сделал кривую обучения ЧПУ намного менее крутой и более увлекательной. Это также поможет вам очень легко создавать двусторонние задания.

После небольшой шлифовки древесина покрылась слоем прозрачного лака.

Скорость подачи в этом видео:

2400 мм / мин (~ 94 дюйма / мин) или 40 мм / сек (~ 1,57 дюйма) с разрезом 3 мм (1/8 дюйма) за раз

Переключатели

Переключатели отличные. Они мгновенного типа, за исключением переключателя, который я использую для включения / выключения светодиодов. Вы можете прикрепить этикетку за прозрачной верхней крышкой и, если хотите, вы можете зажечь выключатель с помощью встроенного светодиода.

Я использовал резистор 1 кОм на переключатель, используя 2 мА при 5 В.

Вот видео с голландским звуком, только для того, чтобы вы могли услышать звук, который издают переключатели. Мои комментарии не важны. Я сказал, что переключатели немного громкие, но, по крайней мере, вы знаете, когда нажимали на них;)

Одним из недостатков использования этих переключателей является то, что для них требуется довольно высокий или «толстый» корпус. Толщина древесины составляла 21 мм (0,82 дюйма или 53/64 дюйма) для верхней И нижней части. после обработки общая толщина подвески составляет 36,5 мм (14,37 или 14 3/8 дюйма)

Подключить переключатели так просто ... Я использую встроенные в Arduino подтягивающие резисторы, поэтому все, что вам нужно сделать, это подключить одну сторону всех переключателей к земле, а другую сторону - к входам Arduino.

Ярлыки переключателей

Для маркировки переключателей я использовал высококачественную поливиниловую наклейку для моего цветного лазерного принтера. (Также доступно для струйных принтеров). Печать на обычной бумаге была невозможным вариантом, потому что вы действительно хорошо видите структуру бумаги при освещении.

Затем я снял прозрачные колпачки с переключателей и наклеил ярлыки на кусок пластика под ними.

Значки такие же, как и в программном обеспечении Eding CNC, которое входит в комплект оборудования при его покупке. Я просто скопировал значки JPEG из каталога программного обеспечения и изменил некоторые в графической программе, чтобы настроить их под свои нужды.

Маховик

Ну, это стандартный 60-миллиметровый 100PPR 6-контактный маховик Eletronic с ЧПУ

Итак, 100 импульсов на оборот, в большинстве программ ЧПУ вы можете редактировать это значение.

Электроника

В качестве HID (Human Interface Device) я использовал микроконтроллер Arduino Leonardo.

Эта плата микроконтроллера была снята с производства, но я мог купить ее в нескольких интернет-магазинах. В качестве альтернативы вы можете использовать Arduino Micro, в котором используется тот же чип 32u4.

Таким образом, я мог имитировать нажатия клавиш и управлять многими функциями программного обеспечения для обработки с ЧПУ, в моем случае Eding CNC.

Arduino Leonardo имеет 23 входных контакта, этого более чем достаточно. Как уже говорилось, на каждую кнопку можно назначить 6 функций.

Общая потребляемая мощность составляет 150 мА при включенных светодиодах клавиш.

Программирование микроконтроллера Arduino

Чтобы запрограммировать Arduino, вам нужно оставить брелок подключенным к источнику питания ЧПУ и загрузить новый эскиз с помощью программного обеспечения Arduino IDE. (См. Примечание ниже). Таким образом, вы, конечно же, используете тот же USB-штекер, который используется для эмуляции клавиатуры.

Если вы хотите использовать другой компьютер (ноутбук) для программирования, просто вставьте USB-штекер в другой компьютер и запрограммируйте Arduino, снова оставив брелок подключенным и включив его в блок питания ЧПУ

Удачи вам в изготовлении кулона!

Код

  • Код подвески с ЧПУ
Код подвески с ЧПУ Arduino
 / * Этот набросок предназначен для использования Leanardo в качестве HID для подвески Eding CNC Pendant. Прелесть использования Leonardo в том, что вы настолько гибки! У меня на кулоне 20 клавиш, но для каждой клавиши можно использовать 6 различных функций. Слишком много, но я использую на некоторых клавишах 3 функции. Очень удобный и простой в использовании и управлении. * / # Include "ClickButton.h" #include "Keyboard.h" long int aux1_delay =0; // Nr. кнопок в массиве const int buttons =20; // кнопка // buttonPin0 является фиктивной, потому что я хочу начать с '1' вместо '0' const int buttonPin0 =0; // они действительно используются const int buttonPin1 =0; const int buttonPin2 =1; const int buttonPin3 =2; const int buttonPin4 =3; const int buttonPin5 =4; const int buttonPin6 =5; const int buttonPin7 =6; const int buttonPin8 =7; const int buttonPin9 =8; const int buttonPin10 =9; const int buttonPin11 =10; const int buttonPin12 =11; const int buttonPin13 =12; const int buttonPin14 =13; const int buttonPin15 =A0; const int buttonPin16 =A1; const int buttonPin17 =A2; const int buttonPin18 =A3; const int buttonPin19 =A4; const int buttonPin20 =A5; // Создание экземпляра объектов ClickButton в массиве ClickButton button [21] ={// фиктивный ClickButton (buttonPin0, LOW, CLICKBTN_PULLUP), // используемые экземпляры Clickbutton ClickButton (buttonPin1 , LOW, CLICKBTN_PULLUP), ClickButton (buttonPin2, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin3, LOW, CLICKBTN_ PULLUP), ClickButton (buttonPin4, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin5, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin6, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin7, LOW, CLICKBTN_PULLUP) (кнопка buttonPin9, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin10, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin11, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin12, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin13), ClickButton (buttonPin13), ), ClickButton (buttonPin15, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin16, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin17, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin18, LOW, CLICKBULLTN_PULLUP, button20, Click_PINPULLUP , LOW, CLICKBTN_PULLUP),}; void setup () {// Настройка таймеров кнопок (все в миллисекундах / мс) для (int i =1; i <=кнопки; i ++) {button [i] .debounceTime =20; // Таймер устранения дребезга в мс button [i] .multiclickTime =250; // Ограничение по времени для мульти-кликов button [i] .longClickTime =1000; // Время до регистрации длинных щелчков}} void loop () {// Обновление состояния всех кнопок в массиве // ПРИМЕЧАНИЕ:не началось с '0', а '1' for (int i =1; i <=buttons; i ++) {// Обновить состояние всех кнопок button [i] .Update (); } // выполняем нажатия кнопок if (button [1] .clicks! =0) {switch (button [1] .clicks) {case 1:// Один щелчок // нажимаем кнопку RESET (F1) press_RESET (); ломать; case 2:// Двойной щелчок press_ESC (); ломать; case 3:// Тройной перерыв; case -1:// Одно нажатие и удерживание // ВЫКЛЮЧЕНИЕ ДРАЙВЕРОВ press_ESC (); // выйти из режима маховичка goto_MACHINE_IO_MENU (); press_F2 (); goto_MAIN_MENU (); ломать; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [2] .clicks! =0) {switch (button [2] .clicks) {case 1:// Один щелчок // переход в ГЛАВНОЕ меню press_ESC (); // выйти из режима маховичка goto_MAIN_MENU (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [3] .clicks! =0) {switch (button [3] .clicks) {case 1:// Разрыв на один клик; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удерживание // НАЧАЛО все оси press_ESC (); // выйти из режима маховичка goto_MAIN_MENU (); shortcut_HOME_ALL (); ломать; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [4] .clicks! =0) {switch (button [4] .clicks) {case 1:// Один щелчок // ПЕРЕКЛЮЧЕНИЕ MDI shortcut_TOGGLE_MDI (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [5] .clicks! =0) {switch (button [5] .clicks) {case 1:// Один щелчок // МАКРОС ПОЛЬЗОВАТЕЛЯ 1:УСТАНОВИТЬ ВЫСОТУ Z press_ESC (); // выйти из режима маховичка goto_AUTO_MENU (); user_MACRO_1 (); // УСТАНОВКА Z HEIGHT break; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [6] .clicks! =0) {switch (button [6] .clicks) {case 1:// Один щелчок // переход в меню AUTO press_ESC (); // выйти из режима маховичка goto_AUTO_MENU (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [7] .clicks! =0) {switch (button [7] .clicks) {case 1:// Одиночный щелчок // ПЕРЕРАСЫВАНИЕ ГРАФИЧЕСКОГО ЭКРАНА press_ESC (); // выйти из режима маховичка goto_AUTO_MENU (); press_F3 (); // перерисовываем break; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [8] .clicks! =0) {switch (button [8] .clicks) {case 1:// Один щелчок // ЗАГРУЗИТЬ ФАЙЛ press_ESC (); // выйти из режима маховичка goto_AUTO_MENU (); press_F2 (); // загружаем разрыв файла; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [9] .clicks! =0) {switch (button [9] .clicks) {case 1:// Один щелчок // AUX1 TOGGLE (VACUUM CLEANER) // запретить переключение на ближайшее время, поэтому только после / / задержка 1000 мс if (millis () - aux1_delay> 1000) {// включить или выключить AUX1 shortcut_TOGGLE_AUX1 (); // запускаем таймер задержки aux1 aux1_delay =millis (); } ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [10] .clicks! =0) {switch (button [10] .clicks) {case 1:// Один щелчок // ПЕРЕКЛЮЧЕНИЕ ТУМАНА (светлый) shortcut_TOGGLE_MIST (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [11] .clicks! =0) {switch (button [11] .clicks) {case 1:// Один щелчок // Перейти к P1 (g28) - USER MENU OPTIE 16 press_ESC (); user_MACRO_16 (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [12] .clicks! =0) {switch (button [12] .clicks) {case 1:// Один щелчок // Перейти к P2 (g30) - USER MENU OPTIE 17 press_ESC (); user_MACRO_17 (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [13] .clicks! =0) {switch (button [13] .clicks) {case 1:// Один щелчок // Маховик по X shortcut_HANDWHEEL_X (); ломать; case 2:// Двойной щелчок // Zero X shortcut_ZERO_X (); ломать; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание // МАКРОС ПОЛЬЗОВАТЕЛЯ 18:Ось X:перейти в нулевую позицию G0 X0.0000 press_ESC (); goto_MAIN_MENU (); user_MACRO_18 (); ломать; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [14] .clicks! =0) {switch (button [14] .clicks) {case 1:// Один щелчок // Маховик по Y shortcut_HANDWHEEL_Y (); ломать; case 2:// Двойной щелчок // Обнуление Y shortcut_ZERO_Y (); ломать; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удерживание // МАКРОС ПОЛЬЗОВАТЕЛЯ 19:Ось Y:перейти в нулевую позицию G0 Y0.0000 press_ESC (); goto_MAIN_MENU (); user_MACRO_19 (); ломать; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [15] .clicks! =0) {switch (button [15] .clicks) {case 1:// Один щелчок // Маховик по Z shortcut_HANDWHEEL_Z (); ломать; case 2:// Двойной щелчок // Zero Z shortcut_ZERO_Z (); ломать; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удерживание // МАКРОС ПОЛЬЗОВАТЕЛЯ 20:переход по оси Z в положение МАШИНЫ вверх G53 G0 Z29.0000 press_ESC (); goto_MAIN_MENU (); user_MACRO_20 (); ломать; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} // Ось if (button [16] .clicks! =0) {switch (button [16] .clicks) {case 1:// Одиночный щелчок break; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [17] .clicks! =0) {switch (button [17] .clicks) {case 1:// Один щелчок // Скорость маховика 1x shortcut_HANDWHEEL_X1 (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [18] .clicks! =0) {switch (button [18] .clicks) {case 1:// Один щелчок // Скорость маховика 10x shortcut_HANDWHEEL_X10 (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [19] .clicks! =0) {switch (button [19] .clicks) {case 1:// Один щелчок // Скорость маховика 100x shortcut_HANDWHEEL_X100 (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }} if (button [20] .clicks! =0) {switch (button [20] .clicks) {case 1:// Одно нажатие shortcut_TOGGLE_MACHINE_COORDINATES (); ломать; case 2:// Двойной щелчок break; case 3:// Тройной перерыв; case -1:// Одиночный щелчок и удержание break; case -2:// Двойной щелчок и удерживание break; case -3:// Тройной щелчок и удержание break; }}} / * Примечания на веб-сайте Aduino по использованию Leonardo в качестве HID:функции клавиатуры позволяют Leonardo, Micro или Due отправлять нажатия клавиш на подключенный компьютер. Примечание. Не все возможные символы ASCII, особенно непечатаемые, можно отправить с помощью библиотеки Keyboard. Библиотека поддерживает использование клавиш-модификаторов. Клавиши-модификаторы изменяют поведение другой клавиши при одновременном нажатии. См. Здесь дополнительную информацию о поддерживаемых ключах и их использовании. Keyboard.begin () Keyboard.end () Keyboard.press () Keyboard.print () Keyboard.println () Keyboard.release () Keyboard.releaseAll () Keyboard.write () Эталонный язык | Библиотеки | Сравнение | Изменяет модификаторы клавиатуры. Команды Keyboard.write () и Keyboard.press () и Keyboard.release () работают не со всеми возможными символами ASCII, а только с теми, которые соответствуют клавише на клавиатуре. Например, Backspace работает, но многие другие непечатаемые символы дают непредсказуемые результаты. Для заглавных букв (и других клавиш) отправляется сдвиг плюс символ (т. Е. Эквивалент нажатия обеих этих клавиш на клавиатуре). Клавиша-модификатор - это специальная клавиша на клавиатуре компьютера, которая изменяет нормальное действие другой клавиши, когда они нажимаются в комбинации. Дополнительные сведения о значениях ASCII и символах или функциях, которые они представляют, см. На asciitable.com. Для нескольких нажатий клавиш используйте Keyboard.press () Определения Леонардо для клавиш-модификаторов перечислены ниже:Ключ Шестнадцатеричное значение Десятичное значение KEY_LEFT_CTRL 0x80 128 KEY_LEFT_SHIFT 0x81 129 KEY_LEFT_ALT 0x82 130 KEY_LEFT_GUI 0x83 131 KEY_RIGHT_CTRL 0x84 132 KEY_RIGHT_SHIFT 0x85 133 KEY_RIGHT_ALT 0x86 134 KEY_RIGHT_GUI 0x87 135 KEY_UP_ARROW 0xDA 218 KEY_DOWN_ARROW 0xD9 217 KEY_LEFT_ARROW 0xD8 216 KEY_RIGHT_ARROW 0xD7 215 Key_Backspace 0xB2 178 Key_Tab 0xB3 179 Key_Return 0xB0 176 KEY_ESC 0xB1 177 Key_Insert 0xD1 209 Key_Delete 0xD4 212 KEY_PAGE_UP 0xD3 211 KEY_PAGE_DOWN 0xD6 214 Key_Home 0xD2 210 Key_End 0xD5 213 KEY_CAPS_LOCK 0xC1 193 Key_F1 0xC2 194 Key_F2 0xC3 195 Key_F3 0xC4 196 Key_F4 0xC5 197 Key_F5 0xC6 198 Key_F6 0xC7 199 Key_F7 0xC8 200 Key_F8 0xC9 201 Key_F9 0xca 202 Key_F10 0xCB 203 Key_F11 0xCC 204 Key_F12 0xCD 205 * / пустота press_RESET () {Keyboard.begin (); Keyboard.press (KEY_F1); задержка (100); Keyboard.releaseAll ();} void press_ESC () {Keyboard.begin (); Keyboard.press (KEY_ESC); задержка (100); Keyboard.releaseAll ();} void press_F2 () {Keyboard.begin (); Keyboard.press (KEY_F2); задержка (100); Keyboard.releaseAll ();} void press_F3 () {Keyboard.begin (); Keyboard.press (KEY_F3); задержка (100); Keyboard.releaseAll ();} void press_F4 () {Keyboard.begin (); Keyboard.press (KEY_F4); задержка (100); Keyboard.releaseAll ();} void press_F5 () {Keyboard.begin (); Keyboard.press (KEY_F5); задержка (100); Keyboard.releaseAll ();} void press_F6 () {Keyboard.begin (); Keyboard.press (KEY_F6); задержка (100); Keyboard.releaseAll ();} void press_F7 () {Keyboard.begin (); Keyboard.press (KEY_F7); задержка (100); Keyboard.releaseAll ();} void press_F8 () {Keyboard.begin (); Keyboard.press (KEY_F8); задержка (100); Keyboard.releaseAll ();} void press_F9 () {Keyboard.begin (); Keyboard.press (KEY_F9); задержка (100); Keyboard.releaseAll ();} void press_F10 () {Keyboard.begin (); Keyboard.press (KEY_F10); задержка (100); Keyboard.releaseAll ();} void press_F11 () {Keyboard.begin (); Keyboard.press (KEY_F11); задержка (100); Keyboard.releaseAll ();} void press_F12 () {Keyboard.begin (); Keyboard.press (KEY_F12); задержка (100); Keyboard.releaseAll ();} void goto_MAIN_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F1); задержка (100); Keyboard.releaseAll ();} void goto_HOME_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F2); задержка (100); Keyboard.releaseAll ();} void goto_ZERO_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F3); задержка (100); Keyboard.releaseAll ();} void goto_AUTO_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F4); задержка (100); Keyboard.releaseAll ();} void goto_MACHINE_IO_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F7); задержка (100); Keyboard.releaseAll ();} void goto_GRAPHICS_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F8); задержка (100); Keyboard.releaseAll ();} void goto_JOG_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F9); задержка (100); Keyboard.releaseAll ();} void goto_JOG_PAD () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F10); задержка (100); Keyboard.releaseAll ();} void goto_USER1_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F11); задержка (100); Keyboard.releaseAll ();} void goto_USER2_MENU () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press (KEY_F12); задержка (100); Keyboard.releaseAll ();} void shortcut_HOME_ALL () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('h'); задержка (100); Keyboard.releaseAll ();} void shortcut_ZERO_X () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('1'); задержка (100); Keyboard.releaseAll ();} void shortcut_ZERO_Y () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('2'); задержка (100); Keyboard.releaseAll ();} void shortcut_ZERO_Z () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('3'); задержка (100); Keyboard.releaseAll ();} void shortcut_HANDWHEEL_X () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press (KEY_LEFT_SHIFT); Keyboard.press ('x'); задержка (100); Keyboard.releaseAll ();} void shortcut_HANDWHEEL_Y () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press (KEY_LEFT_SHIFT); Keyboard.press ('y'); задержка (100); Keyboard.releaseAll ();} void shortcut_HANDWHEEL_Z () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press (KEY_LEFT_SHIFT); Keyboard.press ('z'); задержка (100); Keyboard.releaseAll ();} void shortcut_HANDWHEEL_X1 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('n'); задержка (100); Keyboard.releaseAll ();} void shortcut_HANDWHEEL_X10 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('o'); задержка (100); Keyboard.releaseAll ();} void shortcut_HANDWHEEL_X100 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('p'); задержка (100); Keyboard.releaseAll ();} void shortcut_TOGGLE_MDI () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press (KEY_F6); задержка (100); Keyboard.releaseAll ();} void shortcut_TOGGLE_MACHINE_COORDINATES () {Keyboard.begin (); // ПЕРЕКЛЮЧЕНИЕ МАШИНЫ / КООРДИНАТЫ РАБОТЫ Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('w'); задержка (100); Keyboard.releaseAll ();} void shortcut_TOGGLE_AUX1 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('m'); задержка (100); Keyboard.releaseAll ();} void shortcut_TOGGLE_MIST () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('l'); задержка (100); Keyboard.releaseAll ();} void shortcut_TOGGLE_FLOOD () {Keyboard.begin (); Keyboard.press (KEY_LEFT_CTRL); Keyboard.press ('k'); задержка (100); Keyboard.releaseAll ();} void user_MACRO_1 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press ('1'); задержка (100); Keyboard.releaseAll ();} void user_MACRO_2 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press ('2'); задержка (100); Keyboard.releaseAll ();} void user_MACRO_3 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press ('3'); задержка (100); Keyboard.releaseAll ();} void user_MACRO_4 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press ('4'); задержка (100); Keyboard.releaseAll ();} void user_MACRO_5 () {Keyboard.begin (); Keyboard.press (KEY_LEFT_ALT); Keyboard.press ('5'); задержка (100); Keyboard.releaseAll (); ... Этот файл был усечен, загрузите его, чтобы увидеть все его содержимое. 

Изготовленные на заказ детали и корпуса

Это самая важная библиотека, необходимая для получения максимального количества функций на кнопку clickbutton_hq5qeT4toX.zip cnc_pendant_SenmxC8UCj.zip

Схема

Не очень хорошая схема, но она справится ...

Производственный процесс

  1. Кнопка
  2. Затемнение света с ШИМ с помощью кнопки
  3. Arduino Spybot
  4. FlickMote
  5. Самодельный телевизор B-Gone
  6. Основные часы
  7. Найди меня
  8. Как создать настраиваемую перфорированную кнопку клавиатуры
  9. Беспроводной кулон подключается к системам ЧПУ
  10. Что такое кнопка RESET на панели оператора ЧПУ