Bonjour j'aimerais vous demandez votre aide car je ne trouve rien et je suis vraiment a cours de possibiliter... Je suis entrain de créer une "boite a boutons" pour mon pc et j'utilise un leonardo (ou pro micro je ne sais pas trop c'est aliexpress) et je n'arrive pas a reset ma carte car, j'ai mis un code mais il ne marche pas et surtout il n'apparait plus en tant que port COM mais comme périphérique (non reconnu en plus de ça) donc Arduino IDE ne le voit plus et du coup je voulais le reset (pas de bouton donc par RST et GND) pour le rentrer en boot loader sauf que sur l'ide 2.x il m'affiche une erreur :
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.
Programmer supports the following devices:
Device code: 0x44
Donc j'ai vu qu'il fallait passer sur une version avant 2.x donc je suis en 1.8.x et j'ai tenté d'effacer l'ancien code avec EEPROM clear ou je ne sais pas quoi mais même si la carte la téléverser il ne se passe toujours rien et il le détecte toujours en périphérique non reconnu.
Merci d'avance !
Yeah I saw this but I don't understand why this don't work, i would need to erase the old code i think but I didn't found anything about it, and the RST just make it in bootloader but it doesn't erase the code inside it !
Donc j'ai testé de ne "rien" mettre dans le code et aussi le code "Bonjour" que vous m'avez donné mais rien ne change (je rappelle que la seule manière d'importé mon code et de passer par le "bootloader" en faisont un pont entre RST et GND) Pour l'instant j'aimerais juste pouvoir le remttre COMPLETEMENT a zéro, est ce que c'est possible d'une autre maniere que d'importé un code car ca ne marche pas (sauf si vous savez comme je fais pour l'importer de cete manière).
Le code devait ressembler a peu près a ça (c'est du ChatGPT donc j'ai tellement de version de ce code que je ne serai pas dire le qu'elle exactement) :
const int colonnePins[3] = {2, 3, 4};
const int lignePins[4] = {5, 6, 7, 8};
void setup() {
Serial.begin(9600);
for (int i = 0; i < 3; i++) {
pinMode(colonnePins[i], OUTPUT);
digitalWrite(colonnePins[i], HIGH);
}
for (int i = 0; i < 4; i++) {
pinMode(lignePins[i], INPUT_PULLUP);
}
}
void loop() {
for (int col = 0; col < 3; col++) {
digitalWrite(colonnePins[col], LOW);
for (int ligne = 0; ligne < 4; ligne++) {
if (digitalRead(lignePins[ligne]) == LOW) {
int keyIndex = col + ligne * 3;
Serial.println(keyIndex); // Envoyer un chiffre unique (par exemple "0", "1", "2", ...)
delay(200); // Anti-rebond pour éviter la répétition
}
}
digitalWrite(colonnePins[col], HIGH);
}
}
Si vous devez utiliser l'astuce de réinitialisation à chaque fois (même avec des croquis innocents), la seule raison à laquelle je peux penser est que votre carte n'est pas ce que vous pensez qu'elle est.
Pouvez-vous publier un lien (URL) vers ce que vous avez acheté ?
Le Pro Micro est disponible en deux versions : une 5 V/16 MHz et une 3,3 V/8 MHz. Si vous programmez la carte comme une Leonardo ou une Micro, elle appliquera les paramètres du croquis téléchargé qui sont applicables à la version 5 V/16 MHz. Si votre version est une version 3,3 V/8 MHz, les « timings » sont désactivés et la carte ne réagira pas lorsque le PC l'interrogera.
Veuillez confirmer la carte que vous avez sélectionnée dans l'IDE.
Remarque :
À l'avenir, veuillez publier le code en utilisant des balises de code.
```cpp
votre code ici
```
résultera en
votre code ici
À l'avenir, lorsqu'on vous demandera de publier des messages d'erreur, veuillez utiliser des balises de code.
```text
vos erreurs ici
```
entraînera
Vous n'avez pas répondu à la question "Veuillez confirmer la carte que vous avez sélectionnée dans l'IDE".
Notes à l'avance
J'utilise une version anglaise de l'IDE.
Instructions pour l'IDE 2.x ; les instructions pour l'IDE 1.8.x sont similaires.
J'utilise Google Translate car mon français est presque inexistant. Je peux commander une bière à Paris, mais c'est à peu près tout
Le produit dans le lien indique qu'il s'agit d'une version 5V/16MHz. Ce n'est peut-être pas le cas.
Je vous suggère de procéder comme suit.
Dans l'IDE sous file/preferences (fichier/préférences?), ajoutez l'URL de carte supplémentaire suivante : https://raw.githubusercontent.com/sparkfun/Arduino_Boards/main/IDE_Board_Manager/package_sparkfun_index.json
Désolé pour le temps d'attente j'était en déplacement...
Alors je pense que ça a marché en partie car il est maintenant affiché en permanence par contre le simple "Blink" ne fonctionne pas mais je suppose que c'est juste que soit il y en pas ou alors pas le même nom mais du coup j'aurais savoir ce que vous pensiez de ce code que m'as passé ChatGPT pour voir si vous voyez déjà de gros problème...
#include <Keyboard.h> // Inclure la bibliothèque HID pour émuler un clavier
const int colonnePins[3] = {2, 3, 4}; // Broches des colonnes
const int lignePins[4] = {5, 6, 7, 8}; // Broches des lignes
void setup() {
// Configurer les colonnes en sorties, initialisées à HIGH
for (int i = 0; i < 3; i++) {
pinMode(colonnePins[i], OUTPUT);
digitalWrite(colonnePins[i], HIGH);
}
// Configurer les lignes en entrées avec résistances pull-up
for (int i = 0; i < 4; i++) {
pinMode(lignePins[i], INPUT_PULLUP);
}
// Initialiser la bibliothèque Keyboard
Keyboard.begin();
}
void loop() {
// Balayer les colonnes
for (int col = 0; col < 3; col++) {
digitalWrite(colonnePins[col], LOW); // Activer la colonne courante
for (int ligne = 0; ligne < 4; ligne++) {
// Si un bouton est pressé dans la matrice
if (digitalRead(lignePins[ligne]) == LOW) {
int keyIndex = col + ligne * 3; // Calculer l'index de la touche
envoyerTouche(keyIndex); // Envoyer la touche correspondante
delay(200); // Anti-rebond
while (digitalRead(lignePins[ligne]) == LOW); // Attendre que le bouton soit relâché
}
}
digitalWrite(colonnePins[col], HIGH); // Désactiver la colonne courante
}
}
void envoyerTouche(int keyIndex) {
// Envoyer une touche en fonction de l'index de la touche
switch (keyIndex) {
case 0:
Keyboard.press('a');
break;
case 1:
Keyboard.press('b');
break;
case 2:
Keyboard.press('c');
break;
case 3:
Keyboard.press('d');
break;
case 4:
Keyboard.press('e');
break;
case 5:
Keyboard.press('f');
break;
case 6:
Keyboard.press('g');
break;
case 7:
Keyboard.press('h');
break;
case 8:
Keyboard.press('i');
break;
case 9:
Keyboard.press('j');
break;
case 10:
Keyboard.press('k');
break;
case 11:
Keyboard.press('l');
break;
}
// Relâcher la touche
Keyboard.releaseAll();
}
Donc c'est une boite a bouton de 3 colonnes et 4 lignes, et souder en matrice que j'aimerais pouvoir le configurer comme si j'avais branché un pc de 12 boutons. Pour qu'après si possible avoir plusieurs config que je pourrai alterner entre (bureautique/Simu DCS/Jeux/...) pour pouvoir avoir beaucoup plus de possibilité.
Bon du coup j'ai tenté le tout pour le tout ai je l'ai téléverser et... il marche !
Mais j'aurai aimé savoir un truc, quand je faisait des recherches pour la créer j'ai trouvé une info comme quoi il existait des touches de fonction (F1/F2/F3...) qui allait plus loin que F12, et je pense que ça serait parfait pour mon utilisation car pas besoin de gérer des erreurs de raccourcis qui poserait problème avec ceux qui pourrais déjà exister...