Bonjour, vous n'imaginez pas comment j'ai besoin de vous ! je suis tout nouveau dans la communauté arduino ^^
Afin de faire translater verticalement un chariot pour un projet sans intérêt d'être expliqué, j'ai mis en oeuvre des capteur fin de courses ref. IFC5001 (chariot arrivé en haut/ en bas), mais la partie programmation ne fonctionne pas. J'utilise l'arduino uno. Cela fais plusieurs heures que je cherche, en vain . Voilà ce que je voudrais faire exactement : au départ, le chariot ce trouve quelque part sur la trajectoire linéaire ;
si il n'est pas en contact avec le capteur fin de course haut, un motoréducteur le fait monter via une courroie ; ensuite, après contact avec le capteur fin de course haut, le moteur tourne dans l'autre sens pour le faire descendre jusqu'à contact avec le capteur fin de course bas ; et le moteur tourne à nouveau dans l'autre sens pour le faire monter, et ainsi de suite. C'est un peu comme un renvoi de balle Pour la rotation du moteur dans un sens puis dans l'autre j'utilise un l293d. J'arrive à par exemple allumer une led avec un capteur fin de course, mais impossible de réaliser ce que je veux
Voici le programme que j'ai essayé de mettre en place :
//debut
int motor1Pin1 = 3; // pin 2 (Input 1) du L293D
int motor1Pin2 = 4; // pin 7 (Input 2) du L293D
int enablePin = 9; // pin 1 (Enable 1) du L293D
const int Capt1= 7; // broche 7 du micro-contrôleur se nomme maintenant : Capt1
const int Capt2= 8; // broche 3 du micro-contrôleur se nomme maintenant : Capt2
void setup() {
// set all the other pins you're using as outputs:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(Capt1, INPUT); // Capt1 est une broche d'entree
pinMode(Capt2, INPUT); // Capt2 est une broche d'entree
// Mettre la broche Enable a high comme ca le moteur tourne
digitalWrite(enablePin, HIGH);
}
void loop() //
{
//contenu du programme
monte() ;
int test = digitalRead(Capt1);// Lecture de l'entree et sockage du résultats dans test
if(test==LOW) {// Si test est à l'état bas
descend();
}
int test2 = digitalRead(Capt2);
if(test2==LOW) {// Si test est à l'état bas
monte();
}
}
void monte() {
digitalWrite(motor1Pin1, LOW); // mettre pin 2 a 293D low
digitalWrite(motor1Pin2, HIGH); // mettre pin 7 a L293D high
}
void descend() {
digitalWrite(motor1Pin1, HIGH); // Mettre pin 2 a L293D high
digitalWrite(motor1Pin2, LOW); // Mettre pin 7 a L293D low
}
//fin
Voici ce qu'il était censé exécuter tel que je l'ai écrit :
- initialisation des fonctions
→ broches du l293d en sorties
→ les deux capteurs fin de courses paramétrés en entrés (entré d'information)
---
- boucle
→ si aucun capteur niveau haut, monter chariot
→ si le capteur du haut niveau haut : descendre chariot (mettre pin 2 du l293d niveau haut / pin 7 niveau bas)
→ si le capteur du bas niveau haut : monter chariot (mettre pin 2 du l293d niveau bas / pin 7 niveau haut)
Voila j'espère que j'ai plus ou moins répondu à ce que vous vouliez savoir, si vous pouvez m'éclairer... merci beaucoup !
Pouvez-vous m'aidez s.v.p. ?
-----