Bug Arduino librarie Keyboard

Bonjour,
Il semble que le logiciel Arduino plante sans arrêt après plusieurs téléversements:
J’utilise actuellement uniquement la bibliothèque Keyboard pour simuler les touches WASD avec un joystick. Le programme marchait très bien au début( J’ai fait plusieurs test avec des touches différentes)
Puis, sur la base du même code j’ai ajouter un second joystick, je l’ai téléversé, ça n’a pas fonctionné.

Je suis donc revenu sur le premier code avec un seul joystick qui marchait très bien, je le téléverse et là bug: plus aucune fonction de la bibliothèque keyboard ne fonctionne, donc le programme ne fonctionne plus.

J’ai reset le arduino puis réessayé le code mais aucun résultat.

Comment réparer ce bug ?

Voici le code basique:

#include<Keyboard.h>

// Analog input of the horizontal joystick position
const int JoystickX = A0;
// Analog input of the vertical joystick position
const int JoystickY = A1;

void setup()
{
Serial.begin(9600);
}

void loop()
{
  // Process horizontal joystick position
  int x = analogRead(JoystickX);
  if (1023 == x)
  {
    Keyboard.press('d');
    Serial.print("eaezae");
  }
  else if (0 == x)
  {
    Keyboard.press('a');
  }
  else
  {
    Keyboard.release('d');
    Keyboard.release('a');
    delay(5);
  }

  // Process vertical joystick position
  int y = analogRead(JoystickY);
  if (0 == y)
  {
    Keyboard.press('w');
  }
  else if (1023 == y)
  {
    Keyboard.press('s');
  }
  else
  {
    Keyboard.release('w');
    Keyboard.release('s');
    delay(5);
  }
}

et voici le code du double joystick qui après le téléversement a rendu les fonctions keyboard inutilisables:

#include<Keyboard.h>

// Analog input of the horizontal joystick position
const int JoystickX = A0;
// Analog input of the vertical joystick position
const int JoystickY = A1;

//second joystick
const int JoystickX_right = A2;
const int JoystickY_right = A3;

void setup()
{

}

void loop()
{
  // Process horizontal joystick position
  int x = analogRead(JoystickX);
  if (1023 == x)
  {
    Keyboard.press('d');
  }
  else if (0 == x)
  {
    Keyboard.press('a');
  }
  else
  {
    Keyboard.release('d');
    Keyboard.release('a');
    delay(5);
  }

  // Process vertical joystick position
  int y = analogRead(JoystickY);
  if (0 == y)
  {
    Keyboard.press('w');
  }
  else if (1023 == y)
  {
    Keyboard.press('s');
  }
  else
  {
    Keyboard.release('w');
    Keyboard.release('s');
    delay(5);
  }
  //second joystick
  int xR = analogRead(JoystickX_right);
  if(1023 == xR)
  {
   Keyboard.press(KEY_RIGHT_ARROW);
  }
  else if (0 == xR)
  {
    Keyboard.press(KEY_LEFT_ARROW);
  }
  else
  {
    Keyboard.release(KEY_RIGHT_ARROW);
    Keyboard.release(KEY_LEFT_ARROW);
    delay(10);
  }
  int yR = analogRead(JoystickY_right);
  if (0 == yR)
  {
    Keyboard.press(KEY_UP_ARROW);
  }
  else if (1023 == yR)
  {
    Keyboard.press(KEY_DOWN_ARROW);
  }
  else
  {
    Keyboard.release(KEY_UP_ARROW);
    Keyboard.release(KEY_DOWN_ARROW);
    delay(10);
  }
   
  
}

Comment refaire fonctionner les fonctions des bibliothèques incluses ?

Bonjour

le bug est peut être entre la chaise et le clavier !!
Ce serait le cas si la carte Arduino mystère utilisée n’est pas compatible avec cette librairie…
Quele varte Arduino ? Est-ce la même que celle sur laquelle le code fonctionnait auparavant ?..

Sur ce forum il est demandé, entre autres , de préciser le matériel utilisé lors d’une demande d’aide (voir les Règles du Forum)

Arduino Leonardo
" Le programme marchait très bien au début " ce qui implique que la carte est compatible.

C’est bon a savoir !!!
Que se passe-t-il au téléchargement ? erreur ou pas ?

(pour info : j’ai modifié le titre du fil pour y faire apparaître le nom de la librairie concernée par la deamande)

Le code est verifié et validé. Il n’y a que les fonctions des bibliothèques qui ne marchent pas après téléversement

  if (1023 == x)
  {
    Keyboard.press('d');
    Serial.print("eaezae");
  }

avec ce code je vérifié très bien que Keyboard.press(‘d’); ne fonctionne pas mais Serial.print(“eaezae”); affiche bien le texte dans serial monitor

J’ai eu le même problème avec une librairie (non native) : Joystick ArduinoJoystick.
J’ai dû desinstaller Arduino IDE complètement et puis ça a remarché

je connais très mal la carte Leonardo utilisée en périphérique USB HID

est_elle censée pouvoir à la fois fonctionner en périphérique HID (keyboard.press et autres)
et en port série USB (Serial.print) ?

J’ai dû desinstaller Arduino IDE complètement et puis ça a remarché

J’ai la réponse à ma question !!

+problème auto résolu !! :+1:
Merci pour le retour.

La question exactement est comment survient ce bug de librairies ? Y a t-il une solution qui evite de desinstaller puis réinstaller Arduino à chaque expérimentation ?

Si on joue avec le protocole HID, il peut arriver que cela ne fonctionne plus correctement (c’est souvent à cause d’une erreur de programmation) et j’ai travaillé un petit moment sur le clavier donc j’ai eu le problème quelques fois. Avec un arduino pro micro, un double reset fait apparaître un second port com série qui permet de le reprogrammer. Pour la Léonardo, refaire un reset juste après l’indication de téléchargement, à essayer, il peut être aussi nécessaire éventuellement de redémarrer la session.

  • j’ai reset plusieurs fois avec les deux méthodes:
  1. maintenir le bouton reset sur la board et televerser un code vierge
  2. maintenir le bouton reset
    J’ai fermé Arduino IDE après , avant le reset.
    NB:
    j’ai téléversé un programme avec include “joystick.h”, et les fonctions de joystick marchent. Par contre, en revenant sur le programme avec keyboard, les fonctions de cette dernière ne repondent pas.
    J’ai également essayé avec un programme qui change le Joystick en souris avec la bibliothèque mouse() et ce programme fonctionne, mais en la bibliothèque keyboard ne fait toujours rien
    Bref, toutes tentatives de reset, de changement de périphériques ne marchent pas.

Soit c’est la bibliothèque keyboard qui plante, soit ce sont les bibliothèques ou alors c’est le logiciel arduino.

PS: j’ai choisi tous les paramètres par défaut à l’installation. J’avais déjà java/eclipse installé sur mon PC mais j’ai quand même inclus Java dans l’installation de Arduino IDE

Est ce que quelqu’un a une solution du style reboot qui permettrait de nettoyer le arduino IDE, les ports utilisés par l’arduino ?

La désinstallation du logiciel Arduino ne fonctionne plus pour refaire fonctionner la bibliothèque keyboard

Bonjour
Il manque Keyboard.begin(); dans vos setup

hello
dans ton code ci dessous, avec des entrées analogiques, il me semble hazardeux de comparer une egalité stricte “==” avec 1023 ou 0. il serait préférable de faire if (x >=1015) par exemple ou if (x<=5)

déjà essayé avec <=
déjà essayé avec keyboard.begin()

d’ailleurs avec égalité stricte, il suffit d’incliner le joystick au delà de la moitié de la direction pour faire fonctionner

Et le bruit électrique sur les câbles et dans le microcontrôleur tu en fais quoi ?

C’est la pire des choses à faire.

Ce n’est pas un exercice de mathématiques avec la tête dans les nuages, c’est de la réalité pratique avec les pieds sur terre.

Lis la datasheet du microcontrôleur et tu verras qu’avec toutes les incertitudes et les défauts à l’intérieur du microcontrôleur la mesure réaliste est à ± 5 pas près dans le meilleur des cas.
La réalité de tous les jours, avec les défauts ajoutés par la carte arduino, fait plutôt à ± 10 pas près.

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