Pregunta:
¿Es posible presionar un botón de Arduino y mi computadora obtendrá un evento clave?
Freewind
2014-06-15 16:23:23 UTC
view on stackexchange narkive permalink

Mi idea parece fácil:

Conecto un botón con arduino, luego escribo un código y lo subo a arduino. Luego abro el bloc de notas (o cualquier otro editor) en mi computadora. Cuando presione el botón, aparecerá un carácter "A" en el bloc de notas.

He probado con mi Arduino uno y uso la función Serial.write / print para envíe un A al puerto serie 9600 , pero parece que el carácter A solo se muestra en la GUI del monitor serie.

Mi pregunta es:

  1. ¿"Arduino uno" está bien para implementar esto?
  2. Si no es así, ¿qué otra placa debo usar?
  3. Es Serial.write / print ¿la función correcta?
  4. ¿O debo usar la función Keyboard. ??? ?
  5. ¿ ¿Tengo que escribir una aplicación que se ejecute en la computadora y escuche el puerto serie y emita un evento clave real? (eso es triste)
Seis respuestas:
#1
+9
sachleen
2014-06-15 20:46:29 UTC
view on stackexchange narkive permalink

La Uno no es la mejor tabla para esto. Es posible que pueda llegar a alguna parte con el proyecto Virtual USB, pero hay un par de placas que se adaptan mejor a esto.

Esas son Arduino Leonardo, Micro y Due . En ellos, puede usar la biblioteca de teclados tal como lo hace ahora con la biblioteca serial. Esta página tiene un ejemplo muy similar a su proyecto:

  void setup () {// haga que el pin 2 sea una entrada y encienda la // resistencia pullup para que va alto a menos que // esté conectado a tierra: pinMode (2, INPUT_PULLUP); Keyboard.begin ();} void loop () {// si se presiona el botón if (digitalRead (2) == LOW) {// Envía el mensaje Keyboard.print ("¡Hola!"); }}  
#2
+4
Madivad
2014-06-16 08:41:27 UTC
view on stackexchange narkive permalink

Hay un micro diseñado más específicamente para la emulación de teclado, no he hecho ningún experimento con él (todavía), pero es muy popular en el mundo de los simuladores de vuelo donde estos micro están equipados con botones e interruptores y codificadores rotativos para simular una cabina. Estas entradas se convierten en entradas de teclado (por lo que puedo ver).

Hay algunos proyectos generales aquí: https://www.pjrc.com/teensy/projects.html

Algunas cosas más específicas del teclado: https://www.pjrc.com/teensy/usb_keyboard.html

Más información sobre el teensy en el entorno arduino: https://www.pjrc.com /teensy/teensyduino.html

Más específicamente sobre lo que estás buscando, esto podría ser bastante útil: https://www.pjrc.com/teensy/td_keyboard. html

No te estoy alejando de Arduino, es solo algo más para investigar

Vaya por Teensy de hecho. Son pequeños, baratos y se pueden usar como Arduinos 'oficiales'. Puede seguir usando el editor de Arduino, por lo que, aparte de la placa, nada cambiará. No solo obtienes emulación de teclado, también puedes fingir que eres un mouse, una interfaz MIDI y muchas otras cosas.
#3
+1
JRobert
2014-06-15 17:43:18 UTC
view on stackexchange narkive permalink

Su ejemplo describe la recopilación de texto: ¿cumple con su objetivo o necesita generar algún tipo de evento clave? Si no necesita generar eventos del sistema, cualquier emulador de terminal (no solo el IDE de Arduino) debería poder escuchar ese mismo puerto y registrar lo que reciba en un archivo.

Necesito que sea algún tipo de evento clave. Mi objetivo final es hacer un teclado personalizado por arduino
#4
  0
Tas
2016-01-04 20:15:31 UTC
view on stackexchange narkive permalink

Mira este video, Arduino UNO como teclado USB (dispositivo HID) [Anything Arduino] (ep 6), ya que creo que esto es lo que estás buscando.

Desde el video de YouTube puede obtener enlaces al sitio de la biblioteca y esquemas.

Necesita construir una pequeña interfaz para conectar su Arduino a una PC. Lo obtuve para Uno y Micro, pero otros Arduinos con el último firmware estaría bien.

Cuando se vincula a una fuente externa, es útil resumir de qué se trata el vínculo (el video en este caso) o cómo ayuda a resolver el problema. Esto es especialmente útil si el enlace "se pudre". Estamos tratando de construir un recurso duradero aquí, trate de pensar a largo plazo en sus respuestas.
Si pudiera editar su respuesta para proporcionar los enlaces en * su * respuesta, sería una buena idea, así como una copia de los esquemas, citando la fuente, si los derechos de autor lo permiten, en caso de que se elimine el video.
#5
-1
Mausy5043
2014-06-15 19:21:03 UTC
view on stackexchange narkive permalink

Creo que también necesitas instalar processing.

Ver este enlace

Te permite programar la computadora lado de la aplicación.

¿Quiere decir que tengo que usar algunos lenguajes de programación para escribir un programa que se ejecuta en el lado de la computadora? ¿Tengo que usar el lenguaje de "procesamiento"? Encontré que es interesante, pero estoy seguro de por qué es especial con Arduino.
El procesamiento, si bien es una valiosa adición a su arsenal cuando usa Arduino, no es necesario para sus propósitos. En cambio, hará que las cosas sean demasiado complejas, si no imposibles.
#6
-2
George
2018-03-13 02:35:02 UTC
view on stackexchange narkive permalink

Tengo el mismo problema, he construido un teclado de 12 botones con Arduino y funciona muy bien con USB, ahora necesito usar el módulo bluetooth en lugar de USB, pero no puedo encontrar un código que me permita enviar pulsaciones desde Arduino a mi PC.

aquí está mi código que necesito cambiar para mi módulo bluetooth CH-6 gracias por la ayuda.

  #include <Keyboard.h> # include <Keypad. h>const byte ROWS = 4; // cuatro filas const byte COLS = 3; // claves de caracteres de tres columnas [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // conectarse a los pines de fila del kpdbyte colPins [COLS] = {8, 7, 6}; // conectarse a los pines de columna del kpdKeypad kpd = Keypad (makeKeymap (keys), rowPins, colPins, ROWS, COLS); unsigned long loopCount; unsigned long startTime; void setup () {Serial.begin (9600); loopCount = 0; startTime = millis ();} bucle vacío () {loopCount ++; if ((millis () - startTime) >5000) {startTime = millis (); loopCount = 0; } // Llena la matriz kpd.key [] con hasta 10 claves activas. // Devuelve verdadero si hay CUALQUIER clave activa. if (kpd.getKeys ()) {for (int i = 0; i<LIST_MAX; i ++) // Escanea toda la lista de claves. {if (kpd.key [i] .stateChanged) // Encuentra solo claves que han cambiado de estado. {switch (kpd.key [i] .kstate) {// Informar el estado de la tecla activa: INACTIVO, PRESIONADO, RETENIDO o LIBERADO caso PRESIONADO: Keyboard.write (kpd.key [i] .kchar); //Serial.print(kpd.key[i].kchar); // interrupción del número de claves activas; }}}}} // Fin del ciclo  
@MichelKeijzers Esta respuesta debería haber sido eliminada, no editada y eliminada de la cola de LQP.
@gre_gor Tienes toda la razón, lo edité y luego lo puse a borrar (nuevamente).


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...