Bonjour, j'ai pu testé aujourd'hui le programme et au bout de … 2 heures de réglages, il a fonctionné dans le bon sens.
J'abandonne l'idée du capteur de couleur et je vais me contenter de faire avec un capteur de contact.
Là ou devait intervenir le milis() j'ai enlever pour l'instant la remontée de 3s donc ça va toucher à tout les coups le capteur de contact. J'essaierai de l'introduire la prochaine fois
J'ai eu juste un petit problème, pour le capteur de courant, la valeur que je mettais était soit trop élevée, soit trop faible et le moteur s'arrêter de suite ...
Le programme qui a fonctionné ce matin est celui-ci :
Code:#define VMV 6 // vitesse moteur vertical #define SMV 5 // sens moteur vertical #define MOTEUR_VERT_ON_1(VIT)analogWrite(VMV, VIT);digitalWrite(SMV, LOW) #define MOTEUR_VERT_ON_2(VIT)analogWrite(VMV, VIT);digitalWrite(SMV, HIGH) #define MOTEUR_VERT_OFF()analogWrite(VMV, 0);digitalWrite(SMV, LOW) #define VMH 10 // vitesse moteur horizontal #define SMH 9 // sens moteur horizontal #define MOTEUR_HORI_ON_1(VIT)analogWrite(VMH, VIT);digitalWrite(SMH, LOW) #define MOTEUR_HORI_ON_2(VIT)analogWrite(VMH, VIT);digitalWrite(SMH, HIGH) #define MOTEUR_HORI_OFF()analogWrite(VMH,255);digitalWrite(SMH, HIGH) #define VME 11 // vitesse moteur etiquette #define SME 12 // sens moteur etiquette #define MOTEUR_ETIQ_ON_1(VIT)analogWrite(VME, VIT);digitalWrite(SME, HIGH) #define MOTEUR_ETIQ_ON_2(VIT)analogWrite(VME, VIT);digitalWrite(SME, LOW) #define MOTEUR_ETIQ_OFF()analogWrite(VME, 0);digitalWrite(SME, LOW) #define BPC 2 // broche bouton poussoir cycle #define BPPI 3 // broche bouton poussoir position initiale #define BD 13 // broche bouton deroulement (interrupteur) #define sensorPin A0 // broche capteur de courant #define CaptGauche 8 // broche capteur gauche #define CaptDroit 7 // broche capteur droit #define CaptHaut 4 // broche capteur haut void setup() { pinMode(SMV,OUTPUT); pinMode(SMH,OUTPUT); pinMode(SME,OUTPUT); pinMode(BPC,INPUT); pinMode(BPPI,INPUT); pinMode(BD, INPUT); pinMode(CaptGauche,INPUT); pinMode(CaptDroit,INPUT); pinMode(CaptHaut,INPUT); } void loop() { if(digitalRead(BPC)==HIGH) // lire bouton poussoir cycle { MOTEUR_VERT_ON_1(255); // moteur verticale descend delay(500); while(analogRead(sensorPin)<192); // tant que valeur du capteur <160 MOTEUR_VERT_OFF(); MOTEUR_HORI_ON_1(220); // moteur horizontal et étiquette MOTEUR_ETIQ_ON_1(0); while( digitalRead(CaptDroit)!= HIGH); // tant que capteur pas atteind MOTEUR_HORI_OFF(); MOTEUR_ETIQ_OFF(); MOTEUR_VERT_ON_2(0); // moteur verticale qui remonte while(digitalRead(CaptHaut) != HIGH ); // tant que temps ou capteur pas atteind MOTEUR_VERT_OFF(); MOTEUR_HORI_ON_2(0); // moteur horizontale position initiale while(digitalRead(CaptDroit) != HIGH); // tant que capteur pas atteind MOTEUR_HORI_OFF(); } else // si le bouton poussoir cycle n'est pas presse { if(digitalRead(BPPI) == HIGH) // appuie sur bouton poussoir position initiale { MOTEUR_VERT_ON_2(0); while(digitalRead(CaptHaut) != HIGH); // tant que capteur pas atteind MOTEUR_VERT_OFF(); } else // si bouton poussoir cycle et position initiale pas presse { if (digitalRead(BD) == HIGH) { MOTEUR_ETIQ_ON_2(255); while(digitalRead(BD) != LOW); MOTEUR_ETIQ_OFF(); } else // si aucun bouton poussoir n'est presse { MOTEUR_VERT_OFF(); MOTEUR_HORI_OFF(); MOTEUR_ETIQ_OFF(); } } } }
-----