Domanda:
È possibile premere un pulsante da Arduino e il mio computer riceverà un evento chiave?
Freewind
2014-06-15 16:23:23 UTC
view on stackexchange narkive permalink

La mia idea sembra semplice:

collego un pulsante ad arduino, poi scrivo del codice e lo carico su arduino. Quindi apro il blocco note (o qualsiasi altro editor) sul mio computer. Quando premo il pulsante, verrà visualizzato il carattere "A" nel blocco note.

Ho provato con il mio Arduino uno e uso la funzione Serial.write / print per invia un A alla porta seriale 9600 , ma sembra che il carattere A sia visualizzato solo nella GUI del monitor seriale.

La mia domanda è:

  1. "Arduino uno" va bene per implementarlo?
  2. In caso contrario, quale altra scheda dovrei usare?
  3. Serial.write / print la funzione corretta?
  4. O devo usare la funzione Keyboard. ??? ?
  5. Devo scrivere un'applicazione che gira sul computer e ascolta la porta seriale, ed emette un vero evento chiave? (è triste)
Sei risposte:
#1
+9
sachleen
2014-06-15 20:46:29 UTC
view on stackexchange narkive permalink

Uno non è la tavola migliore per questo. Potresti riuscire a ottenere qualcosa con il progetto Virtual USB, ma ci sono un paio di schede che sono più adatte per questo.

Quelle sono Arduino Leonardo, Micro e Due . In questi, puoi utilizzare la Libreria della tastiera proprio come stai utilizzando la libreria Serial ora. Questa pagina ha un esempio molto simile al tuo progetto:

  void setup () {// rendi il pin 2 un ingresso e attiva la // resistenza pullup in modo che va alto a meno che // non sia connesso a terra: pinMode (2, INPUT_PULLUP); Keyboard.begin ();} void loop () {// se il pulsante viene premuto if (digitalRead (2) == LOW) {// Invia il messaggio Keyboard.print ("Hello!"); }}  
#2
+4
Madivad
2014-06-16 08:41:27 UTC
view on stackexchange narkive permalink

C'è un micro progettato più specificamente per l'emulazione della tastiera, non l'ho ancora sperimentato (ancora), ma è molto popolare nel mondo dei simulatori di volo dove questi micro sono attrezzati con pulsanti, interruttori e codificatori rotanti per simulare una cabina di pilotaggio. Questi input vengono convertiti in input da tastiera (per quanto posso vedere).

Ci sono alcuni progetti generali qui: https://www.pjrc.com/teensy/projects.html

Alcune cose più specifiche per la tastiera: https://www.pjrc.com/teensy/usb_keyboard.html

Maggiori informazioni su teensy nell'ambiente arduino: https://www.pjrc.com /teensy/teensyduino.html

Più specificamente su ciò che stai cercando, questo potrebbe essere molto utile: https://www.pjrc.com/teensy/td_keyboard. html

Non ti sto allontanando da Arduino, è solo qualcos'altro da esaminare

Scegli davvero Teensy. Sono piccoli, economici e possono essere utilizzati proprio come gli Arduino "ufficiali". Puoi continuare a utilizzare l'editor di Arduino, quindi a parte la scheda non cambierà nulla. Non solo ottieni l'emulazione della tastiera, puoi anche fingere di essere un mouse, un'interfaccia MIDI e molte altre cose.
#3
+1
JRobert
2014-06-15 17:43:18 UTC
view on stackexchange narkive permalink

Il tuo esempio descrive la raccolta di testo: soddisfa il tuo obiettivo o devi generare un qualsiasi tipo di evento chiave? Se non è necessario generare eventi di sistema, qualsiasi emulatore di terminale (non solo l'IDE di Arduino) dovrebbe essere in grado di ascoltare la stessa porta e di registrare tutto ciò che riceve in un file.

Ho bisogno che sia una specie di eventi chiave. Il mio obiettivo finale è creare una tastiera personalizzata da arduino
#4
  0
Tas
2016-01-04 20:15:31 UTC
view on stackexchange narkive permalink

Guarda questo video, Arduino UNO come una tastiera USB (dispositivo HID) [Anything Arduino] (ep 6), perché penso che questo sia quello che stai cercando.

Dal video di YouTube puoi ottenere collegamenti al sito della libreria e agli schemi.

Devi costruire una piccola interfaccia per collegare il tuo Arduino a un PC. L'ho preso per Uno e Micro, ma altri Arduino con l'ultimo firmware andrebbe bene.

Quando si collega a una fonte esterna, è utile riepilogare di cosa tratta il collegamento (il video in questo caso) o in che modo aiuta a risolvere il problema. Ciò è particolarmente utile se il collegamento "marcisce". Stiamo cercando di costruire una risorsa durevole qui, prova a pensare a lungo termine nelle tue risposte.
Se potessi modificare la tua risposta per fornire i link nella * tua * risposta, sarebbe una buona idea, così come una copia degli schemi, citando la fonte, se il copyright lo consente, nel caso in cui il video venga cancellato.
#5
-1
Mausy5043
2014-06-15 19:21:03 UTC
view on stackexchange narkive permalink

Penso che tu debba anche installare processing.

Vedi questo link

Ti permette di programmare il computer -lato dell'applicazione.

Vuoi dire che devo usare alcuni linguaggi di programmazione per scrivere un programma in esecuzione sul lato del computer? Devo usare il linguaggio di "elaborazione"? Ho trovato interessante, ma sono sicuro perché è speciale con Arduino?
L'elaborazione, sebbene sia un'aggiunta preziosa al tuo arsenale quando usi Arduino, non è necessaria per i tuoi scopi. Invece, renderà le cose eccessivamente complesse, se non impossibili.
#6
-2
George
2018-03-13 02:35:02 UTC
view on stackexchange narkive permalink

Ho lo stesso problema Ho costruito una tastiera a 12 pulsanti con Arduino e funziona molto bene con USB ora devo usare il modulo bluetooth invece di USB, ma non riesco a trovare un codice che mi permetta di inviare la stampa da Arduino al mio PC.

ecco il mio codice che devo cambiare per il mio modulo bluetooth CH-6 grazie per l'aiuto.

  #include <Keyboard.h> # include <Keypad. h>const byte ROWS = 4; // quattro righe con byte COLS = 3; // tre chiavi columnschar [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // connettersi ai pinout delle righe di kpdbyte colPins [COLS] = {8, 7, 6}; // connettersi alle piedinature delle colonne di kpdKeypad kpd = Keypad (makeKeymap (keys), rowPins, colPins, ROWS, COLS); unsigned long loopCount; unsigned long startTime; void setup () {Serial.begin (9600); loopCount = 0; startTime = millis ();} void loop () {loopCount ++; if ((millis () - startTime) >5000) {startTime = millis (); loopCount = 0; } // Riempie l'array kpd.key [] con un massimo di 10 chiavi attive. // Restituisce vero se sono presenti QUALSIASI chiavi attive. if (kpd.getKeys ()) {for (int i = 0; i<LIST_MAX; i ++) // Scansiona l'intero elenco di chiavi. {if (kpd.key [i] .stateChanged) // Trova solo le chiavi che hanno cambiato stato. {switch (kpd.key [i] .kstate) {// Segnala lo stato della chiave attiva: IDLE, PRESSED, HOLD, o RELEASED case PREMUTO: Keyboard.write (kpd.key [i] .kchar); //Serial.print(kpd.key[i”.kchar); // interruzione del numero di chiavi attive; }}}}} // Fine ciclo  
@MichelKeijzers Questa risposta avrebbe dovuto essere votata per l'eliminazione, non modificata e rimossa dalla coda LQP.
@gre_gor Hai perfettamente ragione, l'ho modificato e poi l'ho messo da cancellare (di nuovo).


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...