Bonjour tous le monde
j'ai découvert arduino il ya une semaine en cherchant un moyen de pouvoir controller une boite de vitesse automatique (non récente). Je me suis donc mis à suivre des cours, tuto mais même si la logique peut être simple ce n'est pas du tous le cas.
Je vous explique explique le projet:
1-La carte arduino connecté au moteur reçois les informations nécessaire au bon fonctionnement .
2-Selon les informations reçues (RPM, Vitesse, Position pédale) => action sur des solenoides (3 +2 ) en 12V
(Les positions des solenoides controles le rapport de vitesse) example si :
-Le 1er en ON, le 2eme en OFF,le 3eme en OFF = la vitesse 1
-Si 1er en ON, le 2eme en OFF,le 3eme en ON = la vitesse 2 ect.... 4 vitesse au total.
3-Un afficheur 7 segments afficherais le numéro de vitesse (mini 1.2.3.4 max)
4-Deux boutons poussoirs pour changer les rapports toujours de 1 à 4 maximum .
Voici un Schéma approximatif de la chose :
Maintenant ce que j'ai fais:
J'ai trouvé sur internet des codes pour afficher les informations moteur en temps réel (via la prise diag):
arduino-consult.ino
Code à modifier car pas besoin de l’écran et je possède une carte Méga.
De ce que j'ai compris je seulement branché les pins Rx et Tx pour recevoir les infos.
En revanche je ne sais pas comment me branché (une 2éme fois) sans affecté les infos car une prise sera déjà connecté pour un affichage au tableau de bord.
Mon montage actuelle :
Voici mon code actuelle : (action appui sur bouton, +1 a l'ecran)
// G F + A B
// | | | | | -> pins and segments they control
// ---------
// F| A |B
// |---G---| -> segments
// E| D |C
// ---------
// | | | | | -> pins and segments they control
// E D + C DP
// Segments that make each number when lit:
// 0 => ABCDEF
// 1 => BC
// 2 => ABDEG
// 3 => ABCDG
// 4 => BCFG
// 5 => ACDFG
// 6 => ACDEFG
// 7 => ABC
// 8 => ABCDEFG
// 9 => ABCDFG
// Arduino digital pins used to light up
// corresponding segments on the LED display
#define A 2
#define B 3
#define C 4
#define D 5
#define E 6
#define F 7
#define G 8
// Pushbutton connected to pin 9
#define BUTTON 10
// Common anode;
// on when pin is low
// and off when pin is high
#define ON HIGH
#define OFF LOW
int count = 0; // current display count
int val = 0; // digital input from button
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(BUTTON, INPUT);
one();
}
void loop() {
val = digitalRead(BUTTON);
if (val == HIGH) {
count++;
delay(200);
switch (count) {
case 1:
one();
break;
case 2:
two();
break;
case 3:
three();
break;
case 4:
four();{
count = -1;
break;
}
}
}
}
// 1 => BC
void one() {
digitalWrite(A, OFF);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, OFF);
}
// 2 => ABDEG
void two() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, OFF);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, OFF);
digitalWrite(G, ON);
}
// 3 => ABCDG
void three() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, ON);
}
// 4 => BCFG
void four() {
digitalWrite(A, OFF);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, ON);
digitalWrite(G, ON);
}
Ce que je souhaite c'est faire -1 si appuie sur un 2éme bouton et que même si je reste appuyé longtemps sa ne saute pas de chiffre
et ne pas tourner, si appui bouton + avec le chiffre 4 => zero action
idem pour le 1 et bouton -
Merci d'avance déjà pour avoir pris le temps de lire et pour les futur possible aides à réaliser ce projet.