dans ma première version de code j'avais mis un délai entre l'appui et la relache du bouton.
ça a changé depuis.
Salut Boss
Bravo
Tu as utilisé une partie de mon code ?
Ou pas du tout
Bonne soirée à toi
Benoit.
Non j’ai repris un code de zéro. Trop newbie pour comprendre le tien.
Je n’ai jamais fait de code arduino jusque maintenant.
Salut
Et niveau bibliothèque tu utilises lesquelles stp.
Benoit.
Juste la Keyboard.h
Salut Boss,
Impressionnant.. tu as réalisé cette box en un rien de temps
Bravo
Est ce que tu veux bien m'aider maintenant
Bonne journée
Benoit.
Oui sans problème.
J’aurai voulu monter mes boutons en matrice mais j’ai trouvé ça complexe à mon niveau.
Au lieu de ça, j’ai utilisé la resistance interne en (INPUT_PULLUP). Pas resistance au montage.
Tous les boutons sont reliés à la fois à la masse et individuellement à une entrée sur la carte.
Donc Ignition sur 2, Starter sur 3 etc….
Je vais mettre mon code en dessous.
Top sympa
Benoit.
#include <Keyboard.h>
const int Ignition = 2; //definit les entrées pour chaque bouton
const int Start = 3;
const int Tcplus = 4;
const int Tcmoins = 5;
const int Absplus = 6;
const int Absmoins = 7;
const int Wipers = 9;
const int Rainlights = 12;
const int Lights = 13;
char shift = KEY_LEFT_SHIFT; // definit les touches ctrl et shift
char alt = KEY_LEFT_ALT;
char ctrl = KEY_LEFT_CTRL;
int StateIgnition; // definit les variables d'état pour les interrupteurs
int StateprevIgnition;
int StateRainlights;
int StatePrevRainlights;
int Statewipers;
int Stateprevwipers;
void setup() {
Serial.begin(9600);
pinMode(Ignition, INPUT_PULLUP); // definit les raccourcis d'entrées
pinMode(Start, INPUT_PULLUP);
pinMode(Wipers, INPUT_PULLUP);
pinMode(Rainlights, INPUT_PULLUP);
pinMode(Tcplus, INPUT_PULLUP);
pinMode(Tcmoins, INPUT_PULLUP);
pinMode(Absplus, INPUT_PULLUP);
pinMode(Absmoins, INPUT_PULLUP);
pinMode(Lights, INPUT_PULLUP);
}
void loop() {
StateprevIgnition = digitalRead(Ignition); //lit et enregistre la variable d'état AVANT pour allumage
delay(10);
Statewipers = digitalRead(Wipers); //lit et enregistre la variable d'état AVANT pour essuies-glaces
delay(200);
RainLightsOn();
StateIgnition = digitalRead(Ignition); //lit et enregistre la variable d'état APRES pour allumage
delay(10);
Stateprevwipers = digitalRead(Wipers); //lit et enregistre la variable d'état APRES pour allumage
delay(10);
if (StateIgnition != StateprevIgnition) // CHANGEMENT D'ETAT : si AVANT est different de APRES alors execute CONTACT (ALLUME/ETEINT le vehicule)
{
StateIgnition = StateprevIgnition; //efface la difference d'état
contact(); //excute le programme CONTACT (hors LOOP)
delay(10);
}
if (digitalRead(Start)) //INTERRUPTEUR/BOUTON SWITCH si declenchement interupteur START alors... APPUIE S pendant 1 seconde
{
Keyboard.press('s');
delay(1000);
Keyboard.release('s');
delay(1);
}
if (Statewipers != Stateprevwipers) // BOUTON SWITCH //CHANGEMENT D'ETAT : si AVANT est different de APRES alors APPUIE ALT+W
{
Keyboard.press(alt);
Keyboard.press('w');
delay(50);
Keyboard.releaseAll();
delay(10);
}
if (digitalRead(Tcplus)) // BOUTON retour auto //TC PLUS - si appui sur bouton alors : Shift + T
{
Keyboard.press(shift);
Keyboard.press('T');
delay(50);
Keyboard.releaseAll();
delay(500);
}
if (!digitalRead(Tcmoins)) // BOUTON retour auto // TC MOINS - si appui sur bouton alors : Ctrl + T (attention ne fonctionne correctement que si delai >= 150 ms)
{
Keyboard.press(ctrl);
Keyboard.press('t');
delay(150);
Keyboard.releaseAll();
delay(500);
}
if (digitalRead(Absplus)) // BOUTON retour auto //ABS PLUS - si appui sur bouton alors : Shift + a
{
Keyboard.press(shift);
Keyboard.press('a');
delay(10);
Keyboard.releaseAll();
delay(500);
}
if (!digitalRead(Absmoins)) // BOUTON retour auto // ABS MOINS - si appui sur bouton alors : Ctrl + a
{
Keyboard.press(ctrl);
Keyboard.press('a');
delay(10);
Keyboard.releaseAll();
delay(500);
}
if (!digitalRead(RainLights)) // BOUTON NF retour auto // Rain Lights ON/OFF - si appui sur bouton alors : Ctrl + a
{
Keyboard.press(ctrl);
Keyboard.press('l');
delay(10);
Keyboard.release('l');
Keyboard.release(ctrl);
delay(10);
}
if (!digitalRead(Lights)) // BOUTON NF retour auto // Lights OFF/ON/ENDU - si appui sur bouton alors : L
{
Keyboard.press('l');
delay(10);
Keyboard.release('l');
delay(10);
}
} // FIN DU LOOP
void contact() // programme qui permet l'allumage //Interrupteur ON/OFF
{
Keyboard.press(shift);
Keyboard.press('i');
delay(50);
Keyboard.release('i');
Keyboard.release(shift);
delay(5);
}
void demarre() // Starter / demarre l'auto //Interrupteur ON/OFF a remettre en place manuellement
{
if (digitalRead(Start)) {
Keyboard.press('s');
delay(10);
Keyboard.release('s');
delay(1);
}
}
void AugTraction() {
if (digitalRead(Tcplus)) {
Keyboard.press(shift);
Keyboard.press('T');
delay(10);
Keyboard.releaseAll();
delay(500);
}
}
void RainLightsOn() {
StateRainlights = digitalRead(Rainlights);
delay(10);
StatePrevRainlights = digitalRead(Rainlights);
if (StateRainlights != StatePrevRainlights) {
Keyboard.press(ctrl);
Keyboard.press('l');
delay(10);
Keyboard.release('l');
Keyboard.release(ctrl);
delay(1);
}
}
Le code a évolué un peu en intégrant 2 encodeurs rotatifs
Pour le TC et l’ABS
Salut,
encore bravo
mon codage a bien progressé en regardant le tien, la différence remarquée ave les lettres en ' ou "
maintenant mon programme tourne dans l'ordre du codage mais sans action sur les boutons .
Dés que je connecte le codage envoie des touches sans que j'appuis sur une touche.
bonne journée à toi.
Salut sre_boss,
yes enfin réussi.
juste en pb, elle ne veux pas démarrer!!
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.