bonjour,
j ai un peu modifié mon code ,
je peux maintenant arrêter le moteur 5 secondes après son démarrage ,
mais je ne peux toujours pas le faire tourner dans l autre sens ..
le sens change bien et est affiche quand je mets 1 ou -1 dans action moteur , mais il ne change pas au niveau de mon moteur
qu est ce qui cloche ?
int pin1Moteur=4; //pin de commande moteur 1
int pin2Moteur=8; // pin de commande moteur 1
int pinPMoteur=3;// pin PWM moteur 1
int pinBouton=7; //pin du bouton poussoir en mode INPUT_PULLUP
int vitesseM=0; //variable de pourcentage de vitesse pour moteur 1
int sens=1; //variable de sens pour moteur 1
void setup() {
Serial.begin(9600); //initialise la communication série
pinMode(pin1Moteur,OUTPUT); //pin moteur en sortie
pinMode(pin2Moteur,OUTPUT); //pin moteur en sortie
pinMode(pinPMoteur,OUTPUT); //pin pwm en sortie
pinMode(pinBouton,INPUT_PULLUP); //pinBouton en mode INPUT_PULLUP
}
void loop() {
//gestion du moteur 1 avec le bouton
if (!digitalRead(pinBouton))// test d'appui du bouton (mode inversé car INPUT_PULLUP)
{
for (vitesseM=0; vitesseM <=50; vitesseM+=5)
{
actionMoteur(1, vitesseM); //commande pour moteur 1
analogWrite(pinPMoteur, vitesseM);
Serial.println();
delay(20);
}
if (analogRead(vitesseM==50))
{
delay(5000);
analogWrite(pinPMoteur, vitesseM=0);
}
}
}
//fonction de gestion d'un moteur
void actionMoteur (int sens,int pourcentage){
int pin1Moteur,etat1,pin2Moteur,etat2,pinPMoteur,puissance; //variable de la fonction
//test sens du moteur 1,-1 (sens contraire) ou tout autre valeur (stoppe le moteur)
if (sens==1){
etat1=1;
etat2=0;
}
else if (sens==-1){
etat1=0;
etat2=1;
}
else {
etat1=0;
etat2=0;
}
puissance=map(pourcentage,0,100,0,255);
analogWrite(pinPMoteur,puissance);
digitalWrite(pin1Moteur,etat1);
digitalWrite(pin2Moteur,etat2);
//affichage sur le moniteur série
if (sens==-1 || sens==1){
Serial.print(" sens : ");
Serial.print(sens);
}
else {
Serial.print(" ! stop ! ");
}
Serial.print(" puissance : ");
Serial.print(pourcentage);
Serial.print("%\t");
}