En cours Leonardo bootloader help...

gaston83

Compagnon
17 Février 2016
798
FR-71520
Bonsoir à tous,

Je viens de découvrir MachScreen..... :zoutte: y a tout ce qu'il faut.... pour avancer... surtout les raccourcis ... bon sang !!!

Bon je vais réfléchir au boitier, maintenant.... j'en ai vu sur le net, faut faire un choix !
 

gaston83

Compagnon
17 Février 2016
798
FR-71520
Bonjour à tous,

Je bute sur un truc... je voudrais appuyer sur le bouton (qui fait CTRL) le maintenir appuyer tout en modifiant le saut avec le rotatif ... dans le code la routine keyctrl est mal placée... je ne sais pas ou la mettre.... j'ai essayé mais en vain...

/*---------------------------------------------------------------------------------------
'* jpbbricole 2019 03 13
'* modifié gaston 83 (ajout du bouton sur pin 5)
et l'aide de speedf37
*/

#include <Encoder.h> // Gestion bouton rotatif https://github.com/PaulStoffregen/Encoder
#include <Keyboard.h> // Pour simuler les fonctions du clavier

// Définition des boutons (raccourcis clavier)
char keyalt = KEY_LEFT_ALT;
char keytab = 179; // valeur Ascii décimale de TAB
char keyctrl = 128; // Valeur Ascii décimale de CTRL Gauche

//------------------------------------- Codeur rotatif
#define codRotApin 6 // Pin du port A
#define codRotBpin 7 // Pin du port B

Encoder codRot(codRotApin, codRotBpin);
int rotencIncrement = 0; // Direction de l'encodeur +1 ou -1
int codRotIncrement = 0; // Direction de l'encodeur +1 ou -1

void setup() {

{
pinMode (5, INPUT_PULLUP);
pinMode (9, INPUT_PULLUP);
pinMode (10, INPUT_PULLUP);
Keyboard.begin();
}
}
void loop()
{
if (digitalRead(9) == LOW) { //KEY ALT
delay(100);
Keyboard.press(keyalt);
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}

if (digitalRead(10) == LOW) { //KEY TAB
delay(100);
Keyboard.press(keytab);
delay(100);
Keyboard.releaseAll();
}

{
if (digitalRead(5) == LOW) { //KEY CTRL GAUCHE
delay(100);
Keyboard.press(keyctrl);
delay(100);
Keyboard.releaseAll();
}


// initialisation codeur

codRotIncrement = codRot.read() / 4; // Divisé par 4 parcequ chaque impulsion ressentie en tournant le bouton
// Génère 4 impulsions (https://www.logre.eu/wiki/Codeur_rotatif_incrémental)

if (codRotIncrement != 0) // Changement de MS affiché
{
if (codRotIncrement < 0)
{
delay(50);
Keyboard.write(KEY_LEFT_ARROW);
}

if (codRotIncrement > 0)
{
delay(50);
Keyboard.write(KEY_RIGHT_ARROW);
}
codRotIncrement = 0;
codRot.write(0); // Pour remettre le compteur du bouton rotatif à 0 (dans bibliothèque)
}
}
}




// fin du prog
 

speedjf37

Compagnon
15 Octobre 2009
1 800
indre et loire
Bonjour Gaston,

Toujours pas compris que tu n'as pas besoin de redéfinir les commandes.

Elles sont la:
1553081938180.png


Pour utiliser un "modifier"
il faut envoyer ensemble le ""modifer" et la touche concernée
exemple pour ctrl_left et rotary encoder

si entrée 5 haut encodeur = flèche
si entrée 5 bas encodeur = ctrl_left + flèche

Code:
if (codRotIncrement != 0) // Changement de MS affiché
    {
      if (codRotIncrement < 0)
      {
     Keyboard.begin();
      if (digitalRead(5) == LOW) {      //KEY CTRL GAUCHE
          {
          Keyboard.press(KEY_LEFT_CTRL);
          delay(100);
          }
      Keyboard.write(KEY_LEFT_ARROW);
      delay(100);
      Keyboard.releaseAll();
      }

if (codRotIncrement != 0) // Changement de MS affiché
    {
      if (codRotIncrement > 0)
      {
     Keyboard.begin();
      if (digitalRead(5) == LOW) {      //KEY CTRL GAUCHE
          {
          Keyboard.press(KEY_LEFT_CTRL);
          delay(100);
          }
      Keyboard.write(KEY_RIGHT_ARROW);
      delay(100);
      Keyboard.releaseAll();
      }
PS pas testé !

Edit il manque les indentations pourtant elles sont insérées
avec les balises c'est mieux

JF
 
Dernière édition:

speedjf37

Compagnon
15 Octobre 2009
1 800
indre et loire
et ??? ... je comprends pas.... ce qu'il faut faire... je me remets doucement à la programmation .... mais je suis largué.
Peux-tu m'expliquer .... mais plus en détail... s'il te plaît ?
En haut de ma capture d'écran il y a le chemin du fichier Keyboard.h .
Dans ce fichier il y des constantes pour toutes les touches non Alphanumériques.

La ligne :
#include <Keyboard.h>

permet d'utiliser les constantes:

KEY_RIGHT_CTRL 0x84 132
KEY_RIGHT_SHIFT 0x85 133
KEY_RIGHT_ALT 0x86 134
KEY_RIGHT_GUI 0x87 135

KEY_LEFT_ARROW

JF
 

gaston83

Compagnon
17 Février 2016
798
FR-71520
Bonjour à tous,

Un grand pas pour ... moi :roxxx:


/*---------------------------------------------------------------------------------------
'* jpbbricole 2019 03 13
'* modifié gaston 83 (ajout du bouton sur pin 5)
et l'aide de speedf37
*/

#include <Encoder.h> // Gestion bouton rotatif https://github.com/PaulStoffregen/Encoder
#include <Keyboard.h> // Pour simuler les fonctions du clavier

//------------------------------------- Codeur rotatif
#define codRotApin 6 // Pin du port A
#define codRotBpin 7 // Pin du port B

Encoder codRot(codRotApin, codRotBpin);
int codRotIncrement = 0; // Direction de l'encodeur +1 ou -1

void setup() {

{
pinMode (5, INPUT_PULLUP);
pinMode (9, INPUT_PULLUP);
pinMode (10, INPUT_PULLUP);
Keyboard.begin();
}
}
void loop()
{
if (digitalRead(9) == LOW) { //KEY ALT
delay(100);
Keyboard.press(KEY_LEFT_ALT);
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}

if (digitalRead(10) == LOW) { //KEY TAB
delay(100);
Keyboard.press(KEY_TAB);
delay(100);
Keyboard.releaseAll();
}

// initialisation codeur

codRotIncrement = codRot.read() / 4; // Divisé par 4 parcequ chaque impulsion ressentie en tournant le bouton
// Génère 4 impulsions (https://www.logre.eu/wiki/Codeur_rotatif_incrémental)

if (codRotIncrement != 0) // Changement de MS affiché
{
if (codRotIncrement < 0)
{
Keyboard.begin();
if (digitalRead(5) == LOW) { //KEY CTRL GAUCHE
{
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.write(KEY_LEFT_ARROW);
Keyboard.releaseAll();
}
}
}

if (codRotIncrement > 0)
{
Keyboard.begin();
if (digitalRead(5) == LOW) { //KEY CTRL GAUCHE
{
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.write(KEY_RIGHT_ARROW);
Keyboard.releaseAll();
}
}
}

codRotIncrement = 0; // Remise à Zéro du codeur
codRot.write(0);

}
}

// fin du prog
 

gaston83

Compagnon
17 Février 2016
798
FR-71520
Bonjour,

Si tu n'as besoin que d'un mode de déplacement , il n'y a pas d'intéret à utiliser l'entrée 5
Ben, disons qu'involontairement je me suis fais une sécurité de fonctionnement. Il faudra que j'appui sur le bouton en 5 (CTRL) pour pouvoir actionner la manivelle. Je serais donc obligé d'être concentré sur ce que je fais....
 
Dernière édition:
Haut