Advertisements

DRO Clavier matriciel pour Arduino

  • Auteur de la discussion gaston83
  • Date de début
Advertisements
V
vibram
Compagnon
15 Mars 2014
3 610
FR-74
tu branches ca sur les pins digital (je crois D1 à D13 sur un uno) et apres c'est dans le soft, il faut que tu utilises la librairie qui va bien (keypad.h de memoire ?) puis que tu assignes les bons ports
 
gaston83
gaston83
Compagnon
17 Février 2016
1 170
FR-71520
  • Auteur de la discussion
  • #3
Ok, mais il y a 20 touches pour 9 sorties... :7grat: y aurait-il une histoire de multiplexeur et démultiplexeur là-dessous ?
 
gaston83
gaston83
Compagnon
17 Février 2016
1 170
FR-71520
  • Auteur de la discussion
  • #4
Ok, mais il y a 20 touches pour 9 sorties... :7grat: y aurait-il une histoire de multiplexeur et démultiplexeur là-dessous ?
Quand je vous dis que ma neurone est fatiguée...

En fait il y a 5 lignes et 4 colonnes.... simplement :spamafote:
 
gaston83
gaston83
Compagnon
17 Février 2016
1 170
FR-71520
  • Auteur de la discussion
  • #7
Bonjour à tous,
Je suis toujours sur mon projet d'une télécommande pour MACH3.

J'avance petit à petit... j'ai récupéré ce code sur le net et je l'ai modifié pour mon clavier (post au dessus) de 5 lignes et 4 colonnes.

J'aimerais activer les touches CTRL ou SHIFT ou ALT avec une autre touche (pat exemple "j" en même temps.

Le code:

#include <Keypad.h>
#include <Keyboard.h>
#include <HID.h>

const byte ROWS = 5; //cinq lignes
const byte COLS = 4; //quatre colennes

char keys[ROWS][COLS] = {
{'I', 'U', '#', '*'},
{'1', '2', '3', 'H'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'e'},
{'L', '0', 'R', 'E'}
};

byte rowPins[ROWS] = {9, 8, 7, 6, 5}; //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 setup(){
}

void loop(){

char key = keypad.getKey();

switch(key){

case 'U': Keyboard.write(KEY_TAB);

case 'L': Keyboard.write(KEY_LEFT_ARROW); // "Left"
case 'H': Keyboard.write(KEY_DOWN_ARROW); // "Down"
case 'I': Keyboard.write(KEY_LEFT_SHIFT);
case 'B': Keyboard.write(KEY_UP_ARROW); // "Up"
case 'R': Keyboard.write(KEY_RIGHT_ARROW); // "Right"
}
}
 
gaston83
gaston83
Compagnon
17 Février 2016
1 170
FR-71520
  • Auteur de la discussion
  • #8
Sur un PC avec Mach3, en position de saut, lorsqu'on presse la touche SHIFT_LEFT ou RIGHT et une touche de déplacement (← →) le déplacement est en continu.

J'ai fait une modif... j'ai rajouté un bouton sec entre la pin 2 et la masse qui simule l'appui de SHIFT_LEFT ... j'ai constaté que lorsque j'appui sur le bouton (donc le shift gauche) et que j'appui sur une des touches de déplacement du clavier relié au PC (flèche gauche ou droite) le déplacement se fait en continu. Lorsqu'on relâche le touche SHIFT_LEFT, le déplacement se fait par saut à chaque appui sur une des flèches.

Je fais la même manip avec le clavier déporté et le bouton sec... et ça ne fonctionne pas. J'ai toujours le déplacement par saut à chaque appui mais pas le continu.

le code:

#include <Keypad.h>
#include <Keyboard.h>
#include <HID.h>

void setup() {
{
pinMode (2, INPUT_PULLUP);
}
}

const byte ROWS = 5; //cinq lignes
const byte COLS = 4; //quatre colennes

char keys[ROWS][COLS] = {
{'I', 'U', '#', '*'},
{'1', '2', '3', 'H'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'e'},
{'L', '0', 'R', 'E'}
};

byte rowPins[ROWS] = {9, 8, 7, 6, 5}; //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() {

Keyboard.begin();
if (digitalRead(2) == LOW) {
{
Keyboard.press(KEY_LEFT_SHIFT);
delay(50);
Keyboard.releaseAll();
}
}


char key = keypad.getKey();

switch (key) {

case 'U': Keyboard.write(KEY_TAB);

case 'L': Keyboard.write(KEY_LEFT_ARROW); break; // "Left"
case 'H': Keyboard.write(KEY_DOWN_ARROW); break; // "Down"
case 'B': Keyboard.write(KEY_UP_ARROW); break; // "Up"
case 'R': Keyboard.write(KEY_RIGHT_ARROW); break; // "Right"
}
}
 
gaston83
gaston83
Compagnon
17 Février 2016
1 170
FR-71520
Oui, mais pas trop eu le temps de m'y replonger. C'est toujours derrière l'oreille... J'ai fait le boitier y a plus qu'a le remplir... :chupachupz:
 
Advertisements
Haut