G
Le confinement a quand même certains effets secondairesTout pour moi, dans mes manip dans l'onglet Outils, j' ai malencontreusement mis une UNO à la place de la Leonardo...
Le confinement a quand même certains effets secondaires
Je n'ai aucun problème avec ça, sur les forums, le tutoiement est le plus courant.Tu l'as dit.... mais je sais plus si on se Vou-voyez ou Tu-toyez.
Je n'ai aucun problème avec ça, sur les forums, le tutoiement est le plus courant.
Oui, plus ou moins, mais je n'ai jamais utilisé de HC-05...et puisque je te tiens... as-tu suivi mes péripéties avec le HC-05 ?
Le Leonardo étant un vrai USB il y a la possibilité d’émuler un clavier USB.
Je plussoie JFEn ajoutant les modules Bluetooth comment garder l’émulation clavier ?
A mon avis, ce n'est tout simplement pas possible, tu ne peut simplement pas "transporter" cette émulation par BT et, d'ailleurs, la bibliothèque qui fait cette émulation, "s'adresse" à la liaison USB du Leonardo uniquement et ne peut pas être déviée sur Serial1 du Leonardo. Dans ce type d'émulation, la liaison USB Leonardo PC n'est pas une simple liaison série.Là au niveau du code je suis paumé... je ne sais pas ce qu'il faut faire.
Si tu veux avoir une liaison sans fils, tout en gardant le Leonardo comme émulateur, c'est l'utilisation de télécommande infrarouge ou RF24 ou BT avec le Leonardo comme récepteur.
tu ne peut simplement pas "transporter" cette émulation par BT
Ou une ficelle, de mêmeJe présume que ce serait pareil avec des modules Wi Fi...
Oui, dans ton cas, seul le Leonardo et sa liaison USB au PC peut "transporter" cette émulation du clavier/souris. Je ne sait pas ce que tu utilises comme moyen de commandes au niveau du Leonardo, actuellement, pour imaginer une transmission sans fils.... que si je place une autre leonardo comme récepteur sur le PC ça peut fonctionner (avec le sketch qui va bien).
/*---------------------------------------------------------------------------------------
'* jpbbricole 2019 03 13
'* modifié gaston 83 (ajout du bouton Fn sur pin 2)
et l'aide de speedf37
avec la sélection des axes
mouture du 1 avril 2020
*/
#include <Encoder.h> // Gestion bouton rotatif
#include <Keypad.h>
#include <Keyboard.h>
#include <HID.h>
//------------------------------------- Codeur rotatif
#define codRotApin 3 // Pin du port A
#define codRotBpin 4 // Pin du port B
#define X A0 // Sélection Axe
#define Y A1
#define Z A2
const int AXEX = A0;
const int AXEY = A1;
const int AXEZ = A2;
int changeAxe;
int changeAxe1;
Encoder codRot(codRotApin, codRotBpin);
int codRotIncrement = 0; // Direction de l'encodeur +1 ou -1
int compteur = 0;
void setup()
{
pinMode (2, INPUT_PULLUP); // CTRL bouton pour la manivelle
pinMode (3, INPUT_PULLUP); // avance X gauche clavier déporté
pinMode (4, INPUT_PULLUP); // avance X droite clavier déporté
pinMode (AXEX, INPUT_PULLUP);
pinMode (AXEY, INPUT_PULLUP);
pinMode (AXEZ, INPUT_PULLUP);
pinMode (A3, INPUT_PULLUP); // Sélection de l'axe
pinMode (A4, INPUT_PULLUP);
pinMode (A5, INPUT_PULLUP);
Keyboard.begin();
}
const byte ROWS = 5; //cinq lignes
const byte COLS = 4; //quatre colonnes
//char ctrlKey = ('-');
char keys[ROWS][COLS] = {
{'I', 'U', '#', '*'},
{'1', '2', '3', 'H'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'L', '0', 'R', 'E'}
};
byte rowPins[ROWS] = {5, 6, 7, 8, 9}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {13, 12, 11, 10}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void loop() {
char key = keypad.getKey();
switch (key) {
{
case'E': // Entrée
if (digitalRead(2) == LOW)
{
Keyboard.write('F'); // Réglage Avance en Manuel
}
else
{
Keyboard.press (KEY_RETURN); // Entrée
//Keyboard.release (KEY_RETURN);
Keyboard.releaseAll();
}
break;
case'1':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.press (KEY_LEFT_ALT); // Visu Automatique ALT-1
delay(100);
Keyboard.press (49); Keyboard.release (49);
Keyboard.releaseAll();
}
Keyboard.write(219);
Keyboard.press (225);
Keyboard.releaseAll ();
Keyboard.write(219);
Keyboard.press (225);
Keyboard.releaseAll ();
break;
case'2':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.press (KEY_LEFT_ALT); // Visu Manuel ALT-2
delay(100);
Keyboard.press (50); Keyboard.release (50);
Keyboard.releaseAll();
}
{
Keyboard.write(226); // écrit le ciffre 2
Keyboard.releaseAll ();
}
break;
case '3':
{
while (digitalRead(2) == LOW) // boucle pour garder le shift appuyé
{
{
Keyboard.write(KEY_LEFT_SHIFT); // remontée du Z
delay(20);
Keyboard.write(211);
Keyboard.releaseAll();
}
}
}
{
Keyboard.write (211); // PgUp
Keyboard.write (227); // écrit le chiffre 3
Keyboard.releaseAll();
}
break;
case '4':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{ Keyboard.write ('X'); // écrit X dans le bandeau manuel
Keyboard.release ('X');
delay (400);
}
else
{
Keyboard.write(228); // écrit le chiffre 4
Keyboard.releaseAll();
}
break;
case '5':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.write ('Y'); // écrit Y dans le bandeau manuel
Keyboard.release ('Y');
delay (400);
}
else
{
Keyboard.write(219);
Keyboard.press (229); // écrit le chiffre 5
Keyboard.releaseAll ();
Keyboard.write(219);
Keyboard.press (229); // écrit le chiffre 5
Keyboard.releaseAll ();
}
break;
case '6':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.write ('W'); // en fait c'est le Z qui est écrit
Keyboard.release ('W');
delay (400);
}
else
{
Keyboard.press (230); // écrit le chiffre 6
Keyboard.release (230);
}
break;
case '7':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
delay(50);
Keyboard.press(54); //signe "-"
delay(50);
Keyboard.release (54);
delay (400);
}
else
{
Keyboard.press (231); // écrit le chiffre 7
Keyboard.releaseAll ();
}
break;
case '8':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
delay(50);
Keyboard.press(43); //signe "+"
delay(50);
Keyboard.release (43);
}
else
{
Keyboard.press (232); // écrit le chiffre 8
Keyboard.release (232);
}
break;
case '9':
{
while (digitalRead(2) == LOW) // boucle pour garder le shift appuyé
{
{
Keyboard.write(KEY_LEFT_SHIFT); // descente du Z
delay(20);
Keyboard.write(214);
Keyboard.releaseAll();
}
}
}
{
Keyboard.write(214); // écrit le chiffre 9
Keyboard.press (233); // écrit le chiffre 9
Keyboard.release (233);
}
break;
case 'I': // touche F1 clavier déporté // Tab Affichage panneau de droite
if (digitalRead(2) == LOW)
{
Keyboard.write(KEY_TAB);
}
else
{
Keyboard.press (KEY_LEFT_ALT); // Ouverture du menu fichier Gcode et fermeture
delay(100);
Keyboard.press (102); Keyboard.release (102);
Keyboard.releaseAll();
}
break;
case 'U': // Touche F2 clavier déporté
if (digitalRead(2) == LOW) // Arret/Départ cycle en Automatique
{
Keyboard.press (KEY_LEFT_ALT);
delay(100);
Keyboard.press (158); Keyboard.release (158); // touche S avec ALT Arret
delay(1000);
}
else // Départ cycle en Automatique
{
Keyboard.press (KEY_LEFT_ALT);
delay(100);
Keyboard.press (157); Keyboard.release (157); // touche R avec ALT Départ
break;
}
case '0': // Ctrl O = remise à zéro des axes X et Y
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.press(KEY_LEFT_CTRL);
delay(100);
Keyboard.press(79); Keyboard.release(79);
Keyboard.releaseAll();
}
else
{
Keyboard.write(219);
Keyboard.press (234); // chiffre 0
Keyboard.release (234);
Keyboard.write(219);
Keyboard.press (234); // chiffre 0
Keyboard.release (234);
}
break;
//************************ Déplacements LEFT-RIGHT et UP-DOWN **************************
case 'L': // "Déplacemnt à Gauche"
{
while (digitalRead(2) == LOW) // boucle pour garder le shift appuyé
{
{
Keyboard.write(KEY_LEFT_SHIFT);
delay(20);
Keyboard.write(KEY_LEFT_ARROW); // flèche de Gauche"
}
}
}
Keyboard.write(KEY_LEFT_ARROW);
break;
Keyboard.releaseAll();
case 'R': // "Déplacement à Droite"
{
while (digitalRead(2) == LOW) // boucle pour garder le shift appuyé
{
{
Keyboard.write(KEY_LEFT_SHIFT);
delay(20);
Keyboard.write(KEY_RIGHT_ARROW); // "Déplacemnt à Droite"
}
}
}
Keyboard.write(KEY_RIGHT_ARROW);
break;
Keyboard.releaseAll();
case 'B': // "Déplacement Bas"
{
while (digitalRead(2) == LOW) // boucle pour garder le shift appuyé
{
{
Keyboard.press(KEY_LEFT_SHIFT);
delay (50);
Keyboard.releaseAll();
}
Keyboard.write(KEY_DOWN_ARROW); // "Déplacemnt vers le bas"
}
}
Keyboard.write(KEY_DOWN_ARROW);
break;
case 'H': // "Déplacement Haut"
{
while (digitalRead(2) == LOW) // boucle pour garder le shift appuyé
{
{
Keyboard.press(KEY_LEFT_SHIFT);
delay (50);
Keyboard.releaseAll();
}
Keyboard.write(KEY_UP_ARROW); // "Déplacemnt vers le haut"
}
}
Keyboard.write(KEY_UP_ARROW);
break;
//******************************************************************************************
case '#': // Manuel / Automatique
if (digitalRead(2) == LOW)
{
Keyboard.press (KEY_LEFT_CTRL); // Début cycle
Keyboard.press(165); // touche W
delay(100);
Keyboard.releaseAll();
Keyboard.press (KEY_LEFT_CTRL);
Keyboard.press(165); // je répète deux fois la fonction
delay(100); // pour qu'elle soit prise en compte
Keyboard.releaseAll(); // Pourquoi ???????
}
else
{
Keyboard.press(KEY_LEFT_CTRL);
delay(100);
Keyboard.press(KEY_LEFT_ALT);
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}
break;
case '*':
if (digitalRead(2) == LOW)
{
Keyboard.press (8); // étoile du clavier déporté pour le Backspace
Keyboard.release (8);
delay(100);
}
else
{
Keyboard.press(KEY_LEFT_ALT); // Réglage du saut 1.00, 0.10, 0.01
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}
break;
case 'C': // esc du clavier déporté // Passage Continu / Saut
{
Keyboard.press(KEY_LEFT_CTRL);
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}
break;
}
//---------------------------- Choix de l'axe -------------------------------
if (digitalRead(AXEX) == LOW)
{
changeAxe = KEY_LEFT_ARROW;
changeAxe1 = KEY_RIGHT_ARROW;
}
if (digitalRead(AXEY) == LOW)
{
changeAxe = KEY_UP_ARROW;
changeAxe1 = KEY_DOWN_ARROW;
}
if (digitalRead(AXEZ) == LOW)
{
changeAxe = (211);
changeAxe1 = (214);
}
// ----------------------- 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(2) == LOW)
{
{
Keyboard.press(KEY_LEFT_CTRL);
delay(50);
Keyboard.write (changeAxe);
delay(50);
Keyboard.releaseAll();
}
}
}
if (codRotIncrement > 0)
{
Keyboard.begin();
if (digitalRead(2) == LOW)
{
{
Keyboard.press(KEY_LEFT_CTRL);
delay(50);
Keyboard.write (changeAxe1);
delay(50);
Keyboard.releaseAll();
}
}
}
codRotIncrement = 0; // Remise à Zéro du codeur
codRot.write(0);
}
}
}
// fin du prog
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?