Bonjour à tous,
je me suis fixé un objectif pour faire fonctionner un simulateur dynamique pour console de jeu avec un arduino et un monster motor shield.
je voulais pas reprendre le code tout fait que l'on trouve pour le monster motor shield, j'ai essayé de comprendre son fonctionnement et je me suis lancé dans le code.
le problème c'est que rien ne fonctionne.
le but etant de recuperer les valeurs des potentiometres du pedalier ( frein et accelerateur) ainsi que du volant.
je me permet de vous mettre le code. c'est sur qu'il y a certainement des raccourcis à faire dans ce code mais j'ai préféré le faire le plus simple pour moi. (enfin pour le moment)
int const potaraccelerateur = A0;
int const potarfreinage = A1;
int const potarvolant = A4;
int const moteur1 = 5; //vitesse moteur1,moteur acceleration freinage
int const sensmoteur1hor = 7; //sens de rotation horaire
int const sensmoteur1anti = 8; //sens de rotation anti-horaire
int const moteur2 = 6; // vitesse moteur2 , moteur inclinaison droite et gauche
int const sensmoteur2hor = 4; //sens de rotation horaire
int const sensmoteur2anti = 9;//sens de rotation anti-horaire
int const courantmoteur1 = A2; //consommation courant moteur
int const courantmoteur2 = A3; //consommation courant moteur
int valeurpotaraccel = 0;
int valeurpotarfrein = 0;
int valeurpotarvolant = 0;
int valeurmoteur1 = 0;
void setup()
{
Serial.begin(9600);
pinMode(potaraccelerateur, INPUT);
pinMode(potarfreinage, INPUT);
pinMode(potarvolant, INPUT);
pinMode(moteur1, OUTPUT);
pinMode(sensmoteur1hor, OUTPUT);
pinMode(sensmoteur1anti, OUTPUT);
pinMode(moteur2, OUTPUT);
pinMode(sensmoteur2hor, OUTPUT);
pinMode(sensmoteur2anti, OUTPUT);
digitalWrite(sensmoteur1hor, HIGH);
digitalWrite(sensmoteur1anti, LOW);
digitalWrite(sensmoteur2hor, HIGH);
digitalWrite(sensmoteur2anti, LOW);
analogWrite(moteur1,127);
analogWrite(moteur2,127);
moteurstop();
}
void loop()
{
valeurpotaraccel = analogRead(potaraccelerateur);
valeurpotarfrein = analogRead(potarfreinage);
valeurpotarvolant = analogRead(potarvolant);
valeurpotaraccel = map(valeurpotaraccel, 0, 1023, 0, 255);
valeurpotarfrein = map(valeurpotarfrein, 0, 1023, 0, 255);
valeurpotarvolant = map(valeurpotarvolant, 0, 1023, 0, 255);
if (valeurpotaraccel >= valeurpotarfrein) { //recupere la valeur du potentiometre de la pedale la plus enfoncé
valeurmoteur1 = valeurpotaraccel;
if (valeurmoteur1 >= valeurpotaraccel){ //lorsqu'on leve le pied de l'accelerateur, ca determine le sens du moteur
analogWrite(moteur1, valeurpotaraccel);
sensantihoraire1();
delay(50);
moteurstop();
}else{
analogWrite(moteur1, valeurpotaraccel);
senshoraire1();
delay(50);
moteurstop();
}
}else{
valeurmoteur1 = valeurpotarfrein;
if (valeurmoteur1 >= valeurpotarfrein){
analogWrite(moteur1, valeurpotarfrein);
sensantihoraire1();
delay(50);
moteurstop();
}else{
analogWrite(moteur1, valeurpotarfrein);
senshoraire1();
delay(50);
moteurstop();
}
}
if (valeurpotarvolant >= 127) {
analogWrite(moteur2, valeurpotarvolant);
senshoraire2();
delay(50);
moteurstop();
}else{
analogWrite(moteur2, valeurpotarvolant);
sensantihoraire2();
delay(50);
moteurstop();
}
}
//Serial.println(valeur);
void moteurstop() //arret du moteur
{
digitalWrite(sensmoteur1hor, LOW);
digitalWrite(sensmoteur1anti, LOW);
digitalWrite(sensmoteur2hor, LOW);
digitalWrite(sensmoteur2anti, LOW);
analogWrite(moteur1,0);
analogWrite(moteur2,0);
}
void senshoraire1() //direction du moteur 1 sens horaire
{
digitalWrite(sensmoteur1hor, HIGH);
digitalWrite(sensmoteur1anti, LOW);
}
void senshoraire2() //direction du moteur 2 sens horaire
{
digitalWrite(sensmoteur2hor, HIGH);
digitalWrite(sensmoteur2anti, LOW);
}
void sensantihoraire1() //direction du moteur 1 sens anti-horaire
{
digitalWrite(sensmoteur1hor, LOW);
digitalWrite(sensmoteur1anti, HIGH);
}
void sensantihoraire2() //direction du moteur 2 sens anti-horaire
{
digitalWrite(sensmoteur2hor, LOW);
digitalWrite(sensmoteur2anti, HIGH);
}
apres , comment peut on faire pour verifier le bon fonctionnement du monster motor shield?
j'espere qu'on pourra m'éguiller sur une solution, en attendant je continu mais investigation.
merci à tous.