faut que je selectionne quoi comme programmer ?
Bonjour shiftermodarduino
Sélectionne la carte que tu avais au départ.
Prépare un sketch le plius simple comme le blink.
Puis "bombarde" ta carte en mitraillant sur téléchargement, jusqu'à ce que ça passe.
J'ai récupéré une Lenardo, qui faisait le même chose, ainsi.
Cordialement
jpbbricole
deconnexion après 5-6 secondes, trop court pour uploader, j'ai essayé au moins 20 x...
la 25e a été la bonne...
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
VID 0x2341
PID 0x8037
SN null
carte AVR Arduino micro
// Fanatec shifter mod
//compile and uplaod with Sparkfun/Sparkfun Pro Micro in card manager in Arduino IDE
#include <Joystick.h>
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD,
18, 0, // Button Count, Hat Switch Count
false, false, false, // No X and Y Z Axis
false, false, false, // No Rx, Ry, or Rz
false, false, // No rudder or throttle
false, false, false); // No accelerator, brake, or steering
//***********
// for A0 to A3 input, specific way to adress on AVR boards
enum { SwH1, SwH2, SwH3, SwH4, SwH5, SwH6, SwH7, SwHR, SwSeqUp, SwSeqDn, SwMode, Btn1, Btn2, Btn3, Btn4_A0, Btn5_A1, Btn6_A2, Btn7_A3};
const int btnPin[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 16, 17, A0, A1, A2, A3 }; // Pins used
// Initialize Button Pins for windows butons
// Speed shifter position R 1 2 3 4 5 6 7 Upshift DnShift H/Seq // extra btns 1 2 3 4 5 6 7
// Arduino Btn 7 0 1 2 3 4 5 6 8 9 10 // 14 15 16 18 19 20 21 not 11 12 13 17
// Windows Btn 8 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18
// for arduino leonardo and micro only
const int btnNumber = sizeof(btnPin) / sizeof(btnPin[0]); // Number of btns
boolean ShifterMode;
boolean currentButtonState;
boolean lastButtonState[18] = { LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW };
// max btn inputs = 18
//************
void setup() {
// switch off RX TX leds
pinMode(LED_BUILTIN_TX, INPUT);
pinMode(LED_BUILTIN_RX, INPUT);
// Initialize Joystick Library
Joystick.begin();
for (int b = 0; b < btnNumber; b++) {
pinMode(btnPin[b], INPUT_PULLUP);
}
// test only **************
//Serial.begin(9600); //This pipes to the serial monitor
}
void UpdateButton(int i) {
currentButtonState = !digitalRead(btnPin[i]);
if (currentButtonState != lastButtonState[i]) {
Joystick.setButton(i, currentButtonState);
lastButtonState[i] = currentButtonState;
}
}
//***********
void loop() { // Read pin values
for (int i = 0; i < btnNumber; i++) {
UpdateButton(i);
}
delay(50);
}
ça marche... tant pis pour la Sparkfun Pro Micro ? au faut retenter ?.... vu la mesaventure, je ne suis pas chaud...
Il faut être têtu avec ces petites bêtes
Pour information :
mes clones de Sparkfun Pro MIcro 8MHZ apparaissent de la manière suivante sous Windows11 (utilitaire USBDeview) VID:PID 1b4f:9204
le port COM3 qui leur été attribué ne disparait pas , c'est appréciable ....
Bootloader CATERINA
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
Dans ton cas, @shiftermodarduino , guettes la fin de la compilation pour brancher la carte
Le bouton de Reset est absent de ces cartes, en ajouter un relié à la masse est utile, en particulier pour activer facilement le bref bootloader.
Içi le Guide Sparkfun pour les diverses cartes Pro Micro;
https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/all
Merci bcp à tous les deux pour votre réactivité et votre aide.
Pour moi c'est réglé, ça marche.
Je prend le cas d'une nano.
La terminologie Arduino est d’appeler une E/S "D14" quand elle est en mode natif, c'est à dire numérique et "A0" quand elle passe dans sa fonction secondaire analogique.
Voir le fichier pinarduino.h de la carte.
C'est ainsi dans les fichiers de configuration des cartes Uni, Nano, Léonardo, Mega, etc.
Simplement comme sur le circuit imprimé il est écrit A3, c'est moins fatigant d'écrire digitalWrite (A3, Haut/Bas, il y a un allias qui relie A3 à D17, que de se dire: voyons pour une nano la dernière pin uniquement numérique c'est D13, A3 c'est la 4e qui suit, soit digitalWrite(17, Haut/Bas).
D14 génère une erreur, la syntaxe est 14.
error: 'D14' was not declared in this scope
const int digiPin = D14;
Si, avec un Nano, tu utilises 14 pour A0, si tu passes sur un Mega, ton programme ne fonctionnera plus vu que A0 = 54.
Donc l'usage de l'usage du numéro de pin est à éviter.
Bien sur quand on programme, mais dans la doc Wiring/Arduino on trouve D14, D pour Digital et A pour analog.
Je ne partage pas l'affirmation que A0 est supérieur à 14 en utilisation numérique.
Mais à chacun sa logique et à chacun sa non-logique et je revendique la mienne .
Bonjour,
Avec des SI, on met Paris en bouteille.
SI par exemple on veut faire un code compatible UNO et MEGA, parce que par exemple on veut utiliser un shield qu'on peut empiler sur un UNO ou un MEGA.
On constate quand même qu'il y a des broches sur le UNO et le MEGA qui sont aux mêmes endroits, et qui sont (généralement) celles qu'utilisent les fabricants de shield.
Et comme par hasard (il n'y a pas de hasard...) ces broches ont mêmes noms ou alias
PAR EXEMPLE
Sur la UNO, A0 c'est D14
Sur la MEGA, A0 c'est D54
Au niveau du code, A0, c'est A0!
Au niveau du shield, qu'il se mette sur UNO ou MEGA, A0 est au même endroit.
Avec tout ces SI, peut-on dire qu'utiliser A0 plutôt que D14 pour UNO ou D54 pour MEGA, c'est "supérieur" ou non?
Réponse:
C'est surtout selon qui est entre la chaise et la clavier, @jpbbricole ou @68tjs ?
Du moins je le pense.
Code valide pour transformer Shifter Fanatec SQ1.5 avec microswitches à laplace des capteurs Hall et ajout de 7 boutons (boutonbox) avec carte Arduino Pro Micro
// Fanatec shifter mod
//compile and uplaod with or AVR Arduino Arduino Micro depending on card you have or Sparkfun/Sparkfun Pro Micro in card manager in Arduino IDE
#include <Joystick.h>
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD,
18, 0, // Button Count, Hat Switch Count
false, false, false, // No X and Y Z Axis
false, false, false, // No Rx, Ry, or Rz
false, false, // No rudder or throttle
false, false, false); // No accelerator, brake, or steering
//***********
// for A0 to A3 input, specific way to adress on AVR boards
enum { SwH1, SwH2, SwH3, SwH4, SwH5, SwH6, SwH7, SwHR, SwSeqUp, SwSeqDn, SwMode, Btn1, Btn2, Btn3, Btn4_A0, Btn5_A1, Btn6_A2, Btn7_A3};
const int btnPin[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 16, 17, A0, A1, A2, A3 }; // Pins used
// Initialize Button Pins for windows butons
// Speed shifter position R 1 2 3 4 5 6 7 Upshift DnShift H/Seq // extra btns 1 2 3 4 5 6 7
// Arduino Btn 7 0 1 2 3 4 5 6 8 9 10 // 14 15 16 18 19 20 21 not 11 12 13 17
// Windows Btn 8 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18
// for arduino leonardo and micro only
const int btnNumber = sizeof(btnPin) / sizeof(btnPin[0]); // Number of btns
boolean currentButtonState;
boolean lastButtonState[18] = { LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW };
// max btn inputs = 18
boolean ShifterMode;
//************
void setup() {
// switch off RX TX leds
pinMode(LED_BUILTIN_TX, INPUT);
pinMode(LED_BUILTIN_RX, INPUT);
// Initialize Joystick Library
Joystick.begin();
for (int b = 0; b < btnNumber; b++) {
pinMode(btnPin[b], INPUT_PULLUP);
}
// test only **************
//Serial.begin(9600); //This pipes to the serial monitor
}
void UpdateButton(int i) {
currentButtonState = !digitalRead(btnPin[i]);
if (currentButtonState != lastButtonState[i]) {
Joystick.setButton(i, currentButtonState);
lastButtonState[i] = currentButtonState;
}
}
void SetButtonHigh(int i) {
Joystick.setButton(i, HIGH);
lastButtonState[i] = HIGH;
}
void UpdateShifterMode () {
ShifterMode = digitalRead(btnPin[10]);
Joystick.setButton(10, ShifterMode);
lastButtonState[10] = ShifterMode;
}
//***********
void loop() { // Read pin values
// shifter
UpdateShifterMode();
// digitalRead(BtnPin[10]) is LOW if mode H
for (int i = 0; 9; i++) {
if ( ShifterMode == LOW ) {
// mode H
if (i < 8) {
UpdateButton(i);
// Update 1 to 7 + Reverse Speed mixcroSwitches
} else {
SetButtonHigh(i);
// UpShift & DnShift Released
}
} else {
// mode Seq
if (i < 8) {
SetButtonHigh(i);
// 1 to 7 + Reverse Released
} else {
UpdateButton(i);
// Update UpShift DnShift
}
}
}
// btnbox
for (int i = 11; btnNumber; i++) {
UpdateButton(i);
// Update buttonPress on ButtonBox
}
// debounce
delay(50);
}
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.