Одессит

Додаткова USB клавіатура до Linux CNC.

4 повідомлення у цій темі

В принципі - хоч куди.
Давно думав про це. Бо на "серійці" незручно тицати в "головну" клавіатуру.
Потрібно чотири "педалі". Такі:
clipboard_image_b005c6e6d60d69999d2c7d0d20cb19b8.png
Старт - крок - пауза -стоп.
Були в мене такі педалі від банкомату (не питайте де я їх взяв :) ).
clipboard_image_2eadde05badf31a71a55215cf3ce2bc0.png
За допомогою платки Arduino "proMicro" з Atmel 32U4 на борту народилась додаткова клавіатура яка бачиться компом як HID-клавіатура.
clipboard_image_79d66a49f123299b95c507a00274a96e.png
Але виник певний нюанс: візуально "пауза/продовжити" - одна кніпка на екрані. Але на клавіатурі компа - дві (p - пауза, s - зняти з паузи).
То в коді була дописана умова зміни "літери" після кожного натискання. Все грає!
Середовище програмування в тут.
clipboard_image_18744b21cfedb8166467dd071b8fbada.png
 

Прихований текст

#include <Keyboard.h>

// Pin to key mapping
const int keyPins[4] = {2, 3, 4, 5};
const char keyChars[4] = {'r', 't', 'p', 0}; // 0 represents ESC
bool keyStates[4] = {false, false, false, false};

bool p_state = false;

int activeKeyIndex = -1; // -1 means no key is currently active

void setup() {
  for (int i = 0; i < 4; i++) {
    pinMode(keyPins, INPUT_PULLUP);
  }
  Keyboard.begin();
}

void loop() {
  // Check if any key is currently pressed
  bool anyPressed = false;
  for (int i = 0; i < 4; i++) {
    if (digitalRead(keyPins) == LOW) {
      anyPressed = true;
      if (activeKeyIndex == -1) {
        // No active key, so set this one
        activeKeyIndex = i;
        if (keyChars == 0) {
          Keyboard.press(KEY_ESC);
        } else {
          char toSend = keyChars;
          if (toSend == 'p' && p_state) {
            toSend = 's';
          }
          Keyboard.press(toSend);
          if (keyChars == 'p') {
            p_state = !p_state;
          }
        }
        break; // Only first detected key is used
      }
    }
  }

  // If no key is pressed anymore, release previous key
  if (!anyPressed && activeKeyIndex != -1) {
    Keyboard.releaseAll();
    activeKeyIndex = -1;
  }

  delay(10); // Simple debounce
}

Лишається ті педалі прикрутити в зручне для роботи місце.

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Як на мене, простіше видерти чіп з готової клави і уже до нього підключитися.

Ще часто NumLock відпилюють.

1

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Початок в тут.

1 година тому, Dmytro55 написав:

Як на мене, простіше видерти чіп з готової клави і уже до нього підключитися.

Ще часто NumLock відпилюють.

В Ізраїлі (наприклад) - відпилюють CapsLock (є нюанси з "розкладкою" :)
Робить як хочете (і як ви дві кніпки одною заміните? (те що в моєї клавіатурі є загальна "шина" - мовчу)). В мене так. Загальна собівартість - 200 грн.
Скажу більше: я міг той функціонал загнати напряму в зайві "піни" "Меси 5І25"...
Буде ваш проект - покажете.

1

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Мабуть я один такий...

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Створіть акаунт або увійдіть для коментування

Ви маєте бути користувачем, щоб залишити коментар

Створити акаунт

Зареєструйтеся для отримання акаунта. Це просто!


Зареєструвати акаунт

Увійти

Вже зареєстровані? Увійдіть тут.


Увійти зараз

  • Зараз на сторінці   0 користувачів

    Немає користувачів, які переглядають цю сторінку