Bonjour,
J'ai pour projet de piloter deux vérins via des électrovannes à l'aide d'une ARDUINO UNO.
Sur mes deux vérins seront posés un capteur début de course et un de fin de course=> il y aura donc 4 capteurs.
Jusque la pas de soucis :)!
Grosso-modo j'aimerais :
1)phase d'initialisation (on ne sait pas ou sont les vérins, je les rentre tout les deux jusqu’à détecter mes capteurs début de course pour chaque vérin).
2)boucle infinie
-vérin 1 sort sa tige=> on détecte capteur fin de course 1
-dès que le capteur est détecté, on rentre la tige de vérin 1 jusqu'à capteur début de course 1
-des que capteur début de course 1 est détecte, c'est le vérin 2 cette fois qui s'actionne
-dès que le capteur fin de course de v2 est détecté, il rentre sa tige
-dès que le capteur début de course de v2 est détecté, on recommence.
Sur mon arduino ça va se traduire par 4 capteurs connectées à 4 entrées analogiques de l'arduino
Mes deux électrovannes connectées à 2 sorties PWM (alors pourquoi PWM, je sais pas, j'ai suivi quelques exemples trouvés sur internet, si quelqu'un d'ailleurs pourrait m'expliquer...).
Avant de brancher mes capteurs et mes électrovannes (et tout le tointoin qui va avec (MOSFET etc...) j'ai voulu tester mon programme.
Et c'est la que j'ai vu que malgré la simplicité apparente du truc ben ça plante, en gros je suis pas très douée...(je débute en ARDUINO, peut être ai-je oublié de le mentionner?)
Alors pour tester tout ca, je me suis munie de mon multimètre et j'ai mesuré ma tension aux bornes de mes sorties PMW 9 et 11 tout en alimentant mes entrées A2, A3, A4 et A5 pour simuler mes capteurs.
Voici mon programme:
int electrovanne1=9;
int electrovanne2=11;
int capteur_debut_course_v1=2;
int capteur_fin_course_v1=3;
int capteur_debut_course_v2=4;
int capteur_fin_course_v2=5;
int val_lue_2;
int val_lue_3;
int val_lue_4;
int val_lue_5;
void setup()
{
pinMode(electrovanne1, OUTPUT);
pinMode(electrovanne2, OUTPUT);
pinMode(capteur_debut_course_v1, INPUT);
pinMode(capteur_debut_course_v2, INPUT);
pinMode(capteur_fin_course_v1, INPUT);
pinMode(capteur_fin_course_v2, INPUT);
}
void loop()
{
//phase d'initialisation, je ne sais pas ou sont mes vérins, je leur demande de rentrer tout les deux.
digitalWrite(electrovanne1, LOW);
digitalWrite(electrovanne2, LOW);
val_lue_2=analogRead(capteur_debut_course_v1);
val_lue_4=analogRead(capteur_debut_course_v2);
//tant que mes DEUX vérins ne sont pas rentrés, j'attends...
while((val_lue_2<=204)||(val_lue_4<=204))
{
val_lue_2=analogRead(capteur_debut_course_v1);
val_lue_4=analogRead(capteur_debut_course_v2);
}
//OUF Ca y est!!
//Je commence ma boucle infinie
while(1)
{
do{
val_lue_3=analogRead(capteur_fin_course_v1);
digitalWrite(electrovanne1, HIGH);
}while(val_lue_3<=204);
do{
val_lue_2=analogRead(capteur_debut_course_v1);
digitalWrite(electrovanne1, LOW);
}while(analogRead(val_lue_2<=204));
do{
val_lue_5=analogRead(capteur_fin_course_v2);
digitalWrite(electrovanne2, HIGH);
}while(analogRead(val_lue_5<=204));
do{
val_lue_4=analogRead(capteur_debut_course_v2);
digitalWrite(electrovanne2, LOW);
}while(analogRead(val_lue_4<=204));
}
}
Mon soucis ici c'est que malgré que mes entrées A2 et A4 ne soient pas au dessus de 4V comme je lui demande, il passe directement à la boucle infinie, et je me retrouve à mesurer du 5V à la sortie 9 alors qu'il devrait y avoir 0.
Je ne comprend pas trop pourquoi...
Est ce que mon code est erroné?
Ai-je oublié des lignes d’initialisation?
Une autre chose que je ne sais pas c'est si les lignes suivantes sont nécessaires:
pinMode(capteur_debut_course_v1, INPUT);
pinMode(capteur_debut_course_v2, INPUT);
pinMode(capteur_fin_course_v1, INPUT);
pinMode(capteur_fin_course_v2, INPUT);
En effet, est-ce bien utile pour des entrées analogiques? Et si on utilise à la fois l'entrée analogique 1 et l'entrée digitale 1, comment on fait?
(l'erreur ne vient pas de la, même sans ces lignes ça plante).
Je vous remercie par avance de vos retours

