Problème de port en incluant une bibliothèque

Bonjour à tous

J'ai rédigé un code en faisant appel à la fonction keyboard. Je parviens à le téléverser dans le carte (port COM 3) et j'obtiens effectivement des retours à mes sollicitations analogiques sous forme de touches de clavier

J'ai copié le fichier INO dans un autre dossier puis j'ai inclus la bibliothèque "artisanale" de conversion de qwerry en azerty disponible sur github : GitHub - martin-leo/KeyboardAzertyFr

Concrètement j'ai copié dans le dossier contenant mon fichier INO les fichiers téléchargés soit "KeyboardAzertyFr.cpp" et "KeyboardAzertyFr.cpp". J'ai ajouté dans mon fichier INO " #include "KeyboardAzertyFr.h"" et j'ai remplacé "Keyboard.print" par "KeyboardAzertyFr.print"

La compilation se passe bien : aucune erreur détectée.

Je téléverse ensuite le code. Cela semble également bien se passer. En revanche, le port passe de lui-même de COM3 à COM6 et je n'ai plus de retour à mes sollicitations analogiques. Je ne parviens pas non plus à re-sélectionner le port COM3 alors que je peux le faire avec le fichier INO initial sans la nouvelle bibliothèque.

Pourriez vous svp m'aider ? Merci !

Keyboard gère vraisemblablement le clavier AZERTY pourquoi ce recours à une seconde librairie?

Il semblerait qu'il suffise d'inclure Keyboard_fr_FR.h en plus de Keyboard.h

Keyboard ne gère malheureusement pas un clavier azerty.
J'ai inclus keyboard_fr_FR.h dans mon code mais j'ai toujours le même problème de changement de port. Arduino passe du port COM 3 (le bon) au port COM 6 pour une raison que j’ignore.

Ce qui passe au COM6 c'est le port série virtuel ou l'émulation de clavier?

Bonne question ! Comment puis je le vérifier ?

Tu dois bien voir dans le gestionnaire de périphérique ce qui apparaît.

Sur le gestionnaire de périphérique de Windows, la carte arduino est indiqué sur le port COM3

Dans la classe keyboard, dans la fonction void begin(const uint8_t *layout = KeyboardLayout_en_US); le clavier est par défaut en clavier US mais il existe en français extern const uint8_t KeyboardLayout_fr_FR[];

Bonjour Viking
Merci de ta réponse.
Si je comprends bien, il faut modifier la bibliothèque keyboard.h comme tu me le conseilles en utilisant un logiciel de traitement de texte.
Est-ce bien exact ?
Merci !

Non, tu n'as pas besoin de modifier la librairie. Dans ton soft Il faut faire un appel à la fonction begin en mettant en paramètre le clavier français. Cette fonction va modifier le mappage du clavier, qui par défaut est en anglais US

Bonjour Viking
Merci de ta réponse. Je suis néanmoins débutant en Arduino.
Pourrais tu stp me préciser comment modifier le code ci-dessous ?

Pour l'instant, je procède de la manière suivante :

En début de code, j'ai écrit :

#include "Keyboard.h"

Puis après void_loop (), j'ai écrit :

if (etatVeille == LOW) 
   {
      veilletemps1 = millis();
      
      if (veilletemps1 - veilletemps2 >= vitesseveille)
            {
                  keyboard.print("a");
                  veilletemps2 = millis();    
          }
  }

Merci de mettre le code complet pas des morceaux.
Typiquement, là, on ne voit pas l'initialisation et c'est justement dans le setup() que la correction devrait apparaître.

Ce n'est pas spécifique à Arduino, ça fait partie des bases du C++ l'appel d'une méthode.

Keyboard.begin(KeyboardLayout_fr_FR);

Bonjour Viking et Fdufnews

Je n'ai pas codé en C++ depuis très longtemps et je ne rappelle plus comment appeler une méthode.

Le code complet est le suivant :


#include "Keyboard.h"

const int Veille = A4;
const int vitesseveille = 200;

long veilletemps1;
long veilletemps2;

void setup()
{
pinMode(Veille,INPUT);
etatVeille = HIGH;
veilletemps1 = 0;
veilletemps2 = 0;
}

void loop()
{
etatVeille = digitalRead(Veille);

if (etatVeille == LOW) 
   {
      veilletemps1 = millis();
      
      if (veilletemps1 - veilletemps2 >= vitesseveille)
            {
                  Keyboard.print("a");
                  veilletemps2 = millis();    
          }
  }
}

Pourriez vous svp me préciser comment je puis modifier le code ?

Merci de votre aide !

As-tu seulement regardé les exemples installés avec l'IDE?
Tu n'as même pas la ligne Keyboard.begin(); dans le setup(). il n'y a rien qui initialise le mode clavier.

Comme l'a dit @le_viking il faut mettre la ligne

Keyboard.begin(KeyboardLayout_fr_FR);

dans le setup()

Bonjour fdufnews

Je me forme avec le site suivant : Présentation d’Arduino - Arduino : premiers pas en informatique embarquée • Tutoriels • Zeste de Savoir

On ne rentre pas vraiment dans le détail sur le code.

J'ai implémenté Keyboard.begin(KeyboardLayout_fr_FR) dans le setup() et je peux à présent écrire azerty ! Merci !

Bonsoir Julien,
c'est bien de s'intéresser aux spécificités de l'embarqué mais il faut commencer par le début le C. Zeste de savoir a également un tuto sur ce sujet.

Merci Viking. Je ne manquerai d'y consacrer du temps.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.