Bonjour, j'ai fait l'acquisition d'une boutton box avec une Leonardo, mais je mis connais pas du tout, merci de votre aide
Bonjour emonone
Que veux-tu faire avec ?
Quelques suggestions ici.
Cordialement
jpbbricole
J'ai une boutton box avec une Leonardo micro mais j'arrive pas à trouver le code pour programmer un 1 interrupteur 4 rotatif poussoir 10 bouton poussoir et 1 démarrage merci
Il faut que tu comprennes qu’il va te falloir apprendre et donc faire des effots.
Sinon tu te lasseras vite de recopier le travail des autres.
Un bon point d’entée est de faire les tuto d’Eskimon (eskimon.fr).
Ils sont en français, ils sont très progressifs.
Avec eux tu acquiereras facilement des connaissances indispensables tant sur comment on écrit du code que tant sur comment on gère le matériel.
Tu y trouveras des explication sur ce que tu veux faire.
Avant de construire le mur on fait des fondations solides.
L’étape suivante pourra être la modification d’un code existant avec l’ajout de nouvelles fonctionnalités.
Un bon exemple pour commencer est de modifier l’exemple ”blink” et de comprendre la différence entre ”blink” et ”blink without delay”.
Ensuite c’est la liberté totale de faire ce qu’on veut.
mon problème ces que j’ai effacé le programme de ma bouton box que je venais de recevoir
Bonjour demonone
Quel est sa référence exacte?
Cordialement
jpbbricole
Bonjour, je cherche toujours le code pour ma boîte merci a vous
Oui, mais c'est un informe plat de spaghetti de provenance inconnue, il n'y a aucune info et aucun schéma.
Qu'est-ce que tu voudrais que l'on fasse. On est pas devins.
Et au passage, si tu as payé pour ça, on est à la limite de l'arnaque.
Ces moi qui est fait une fausse manip
fausse manip ou pas , demandes au vendeur de cette m.... de te fournir le fichier .hex pour te permettre de reflasher la carte Arduino Pro MIni
en effet , sinon je ne vois pas comment il serait possible de faire une boite à boutons USB avec juste une uacre Pro Mini
Bon courage pour retrouver le concepteur, il y a plein de petits fabricants avec des imprimantes 3D qui proposent ces produits de copie des grandes marques.
Si j 'ai bien déchiffré c'est une Pro Micro
Oups !
Pro Micro en effet avec son 32u4
#include <Keypad.h>
#include <Joystick.h>
#define ENABLE_PULLUPS
#define NUMROTARIES 4
#define NUMBUTTONS 14
#define NUMPOTS 0
#define NUMROWS 4
#define NUMCOLS 4
byte buttons[] = {
// We are using .kcode (the index, 0-24) instead of
// .kchar (the character from this table) so
// these letters are unused and arbitrary as long as
// they are each unique and none of them are '\0'.
"ABCD"
"EFGH"
"IJKL"
"NO"
};
struct rotariesdef {
byte pin1;
byte pin2;
int ccwchar;
int cwchar;
volatile unsigned char state;
};
rotariesdef rotaries[NUMROTARIES]{
{ 7, 6, 26, 27, 0 },
{ 4, 5, 28, 29, 0 },
{ A3, A2, 30, 31, 0 },
{ A1, A0, 24, 25, 0 },
};
#define DIR_CCW 0x10
#define DIR_CW 0x20
#define R_START 0x0
#ifdef HALF_STEP
#define R_CCW_BEGIN 0x1
#define R_CW_BEGIN 0x2
#define R_START_M 0x3
#define R_CW_BEGIN_M 0x4
#define R_CCW_BEGIN_M 0x5
const unsigned char ttable[6][4] = {
// R_START (00)
{ R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START },
// R_CCW_BEGIN
{ R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START },
// R_CW_BEGIN
{ R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START },
// R_START_M (11)
{ R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START },
// R_CW_BEGIN_M
{ R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW },
// R_CCW_BEGIN_M
{ R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW },
};
#else
#define R_CW_FINAL 0x1
#define R_CW_BEGIN 0x2
#define R_CW_NEXT 0x3
#define R_CCW_BEGIN 0x4
#define R_CCW_FINAL 0x5
#define R_CCW_NEXT 0x6
const unsigned char ttable[7][4] = {
// R_START
{ R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START },
// R_CW_FINAL
{ R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW },
// R_CW_BEGIN
{ R_CW_NEXT, R_CW_BEGIN, R_START, R_START },
// R_CW_NEXT
{ R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START },
// R_CCW_BEGIN
{ R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START },
// R_CCW_FINAL
{ R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW },
// R_CCW_NEXT
{ R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START },
};
#endif
byte rowPins[NUMROWS] = { 10, 9, 8, 2 };
byte colPins[NUMCOLS] = { 15, 14, 16, 3 };
Keypad buttbx = Keypad(makeKeymap(buttons), rowPins, colPins, NUMROWS, NUMCOLS);
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_JOYSTICK, 32, 0,
false, false, false, false, false, false,
false, false, false, false, false);
void setup() {
Joystick.begin();
rotary_init();
Serial.begin(9600);
}
void loop() {
CheckAllEncoders();
CheckAllButtons();
}
void CheckAllButtons(void) {
if (buttbx.getKeys()) {
for (int i = 0; i < LIST_MAX; i++) {
if (buttbx.key[i].stateChanged) {
switch (buttbx.key[i].kstate) {
case PRESSED:
Joystick.setButton(buttbx.key[i].kcode, 1);
break;
case RELEASED:
Joystick.setButton(buttbx.key[i].kcode, 0);
break;
case IDLE:
case HOLD:
default:
break;
}
}
}
}
}
void rotary_init() {
for (int i = 0; i < NUMROTARIES; i++) {
#ifdef ENABLE_PULLUPS
pinMode(rotaries[i].pin1, INPUT_PULLUP);
pinMode(rotaries[i].pin2, INPUT_PULLUP);
#else
pinMode(rotaries[i].pin1, INPUT);
pinMode(rotaries[i].pin2, INPUT);
#endif
}
}
unsigned char rotary_process(int _i) {
unsigned char pinstate = (digitalRead(rotaries[_i].pin2) << 1) | digitalRead(rotaries[_i].pin1);
rotaries[_i].state = ttable[rotaries[_i].state & 0xf][pinstate];
return (rotaries[_i].state & 0x30);
}
void CheckAllEncoders(void) {
for (int i = 0; i < NUMROTARIES; i++) {
unsigned char result = rotary_process(i);
if (result == DIR_CCW) {
Joystick.setButton(rotaries[i].ccwchar, 1);
delay(50);
Joystick.setButton(rotaries[i].ccwchar, 0);
}
if (result == DIR_CW) {
Joystick.setButton(rotaries[i].cwchar, 1);
delay(50);
Joystick.setButton(rotaries[i].cwchar, 0);
}
}
}