Question:
Est-il possible d'appuyer sur un bouton d'Arduino et mon ordinateur recevra un événement clé?
Freewind
2014-06-15 16:23:23 UTC
view on stackexchange narkive permalink

Mon idée semble simple:

Je connecte un bouton à arduino, puis j'écris du code et je le télécharge sur arduino. Ensuite, j'ouvre le bloc-notes (ou tout autre éditeur) sur mon ordinateur. Lorsque j'appuie sur le bouton, un caractère «A» s'affiche dans le bloc-notes.

J'ai essayé avec mon Arduino uno et j'utilise la fonction Serial.write / print pour envoyer un A au port série 9600 , mais il semble que le caractère A n'apparaisse que dans l'interface graphique du moniteur série.

Ma question est:

  1. Est-ce que «Arduino uno» est OK pour mettre en œuvre cela?
  2. Sinon, quelle autre carte dois-je utiliser?
  3. Est Serial.write / print la fonction correcte?
  4. Ou dois-je utiliser la fonction Keyboard. ??? ?
  5. Do Je dois écrire une application qui s'exécute sur l'ordinateur et écoute le port série, et émet un véritable événement clé? (c'est triste)
Six réponses:
sachleen
2014-06-15 20:46:29 UTC
view on stackexchange narkive permalink

La Uno n'est pas la meilleure planche pour cela. Vous pourrez peut-être aller quelque part avec le projet Virtual USB, mais il existe quelques cartes qui conviennent mieux à cela.

Ce sont les Arduino Leonardo, Micro et Due . Dans ceux-ci, vous pouvez utiliser la bibliothèque de claviers comme vous utilisez actuellement la bibliothèque série. Cette page a un exemple très similaire à votre projet:

  void setup () {// fait de la broche 2 une entrée et active la // résistance pullup pour qu'elle passe à l'état haut sauf si // est connecté à la masse: pinMode (2, INPUT_PULLUP); Keyboard.begin ();} void loop () {// si le bouton est enfoncé if (digitalRead (2) == LOW) {// Envoie le message Keyboard.print ("Hello!"); }}  
Madivad
2014-06-16 08:41:27 UTC
view on stackexchange narkive permalink

Il existe un micro conçu plus spécifiquement pour l'émulation de clavier, je n'ai pas (encore) fait d'expérimentation avec lui, mais il est très populaire dans le monde des simulateurs de vol où ces micro sont équipés de boutons et commutateurs et encodeurs simuler un cockpit. Ces entrées sont converties en entrées clavier (pour autant que je puisse voir).

Il y a quelques projets généraux ici: https://www.pjrc.com/teensy/projects.html

Quelques trucs plus spécifiques au clavier: https://www.pjrc.com/teensy/usb_keyboard.html

Plus d'informations sur l'adolescent dans l'environnement arduino: https://www.pjrc.com /teensy/teensyduino.html

Plus précisément sur ce que vous recherchez, cela pourrait être très utile: https://www.pjrc.com/teensy/td_keyboard. html

Je ne vous éloigne pas d'Arduino, c'est juste quelque chose d'autre à examiner

Optez pour Teensy en effet. Ils sont petits, bon marché et peuvent être utilisés comme les Arduinos «officiels». Vous pouvez continuer à utiliser l'éditeur d'Arduino, donc à part la carte, rien ne changera. Vous n'obtenez pas seulement l'émulation du clavier, vous pouvez également faire semblant d'être une souris, une interface MIDI et bien d'autres choses.
JRobert
2014-06-15 17:43:18 UTC
view on stackexchange narkive permalink

Votre exemple décrit la collecte de texte - est-ce que cela répond à votre objectif ou avez-vous besoin de générer un type d'événement clé? Si vous n'avez pas besoin de générer des événements système, n'importe quel émulateur de terminal (pas seulement l'IDE Arduino) devrait pouvoir écouter ce même port et enregistrer tout ce qu'il reçoit dans un fichier.

J'ai besoin que ce soit une sorte d'événements clés. Mon objectif final est de créer un clavier personnalisé par arduino
Tas
2016-01-04 20:15:31 UTC
view on stackexchange narkive permalink

Regardez cette vidéo, Arduino UNO en tant que clavier USB (périphérique HID) [Anything Arduino] (ep 6), car je pense que c'est ce que vous recherchez.

À partir de la vidéo youtube, vous pouvez obtenir des liens vers le site de la bibliothèque et les schémas.

Vous devez créer une petite interface pour connecter votre Arduino à un PC, je l'ai pour Uno et Micro, mais d'autres Arduinos avec le dernier firmware serait OK.

Lorsque vous créez un lien vers une source extérieure, il est utile de résumer en quoi consiste le lien (la vidéo dans ce cas) ou en quoi il aide à résoudre le problème. Ceci est particulièrement utile si le lien «pourrit». Nous essayons de construire une ressource durable ici, essayez de penser à long terme dans vos réponses.
Si vous pouviez modifier votre réponse pour fournir les liens dans * votre * réponse, ce serait une bonne idée, ainsi qu'une copie des schémas, en citant la source, si le droit d'auteur le permet, au cas où la vidéo serait supprimée.
Mausy5043
2014-06-15 19:21:03 UTC
view on stackexchange narkive permalink

Je pense que vous devez également installer processing.

Voir ce lien

Il vous permet de programmer l'ordinateur - côté de l'application.

Voulez-vous dire que je dois utiliser des langages de programmation pour écrire un programme fonctionnant côté ordinateur? Dois-je utiliser le langage "traitement"? J'ai trouvé que c'était intéressant, mais je suis sûr pourquoi c'est spécial avec Arduino?
Le traitement, bien qu'il soit un ajout précieux à votre arsenal lors de l'utilisation d'Arduino, n'est pas nécessaire à vos fins. Au lieu de cela, cela rendra les choses trop complexes, voire impossibles.
George
2018-03-13 02:35:02 UTC
view on stackexchange narkive permalink

J'ai le même problème que j'ai construit un clavier à 12 boutons avec Arduino et il fonctionne très bien avec USB maintenant je dois utiliser le module Bluetooth au lieu de l'USB, mais je ne trouve pas de code qui me permettra d'envoyer de la presse depuis Arduino sur mon PC.

voici mon code que j'ai besoin de changer pour mon module bluetooth CH-6 merci pour l'aide.

  #include <Keyboard.h> # include <Keypad. h>const byte ROWS = 4; // quatre lignes sur octet COLS = 3; // trois clés columnschar [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; octet rowPins [ROWS] = {5, 4, 3, 2}; // se connecte aux broches de ligne des kpdbyte colPins [COLS] = {8, 7, 6}; // se connecter aux broches de colonne du 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; } // Remplit le tableau kpd.key [] avec jusqu'à 10 clés actives. // Renvoie true s'il y a TOUTES les clés actives. if (kpd.getKeys ()) {for (int i = 0; i<LIST_MAX; i ++) // Analyser toute la liste des clés. {if (kpd.key [i] .stateChanged) // Ne trouve que les clés qui ont changé d'état. {switch (kpd.key [i] .kstate) {// Rapport de l'état de la touche active: IDLE, PRESSED, HOLD ou RELEASED case PRESSED: Keyboard.write (kpd.key [i] .kchar); //Serial.print(kpd.key[i[] .kchar); // rupture de nombre de clés actives; }}}}} // Fin de la boucle  
@MichelKeijzers Cette réponse aurait dû être supprimée, non modifiée et supprimée de la file d'attente LQP.
@gre_gor Vous avez tout à fait raison, je l'ai édité, puis je l'ai mis à supprimer (à nouveau).


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...