Bonjour,
Voici la problématique à résoudre, au travail nous venons de recevoir une machine qui éjecte des feuilles à très faible grammage, l'éjection se fait bien pour la première puis ça devient vite l'anarchie car la seconde tombe dessus et ainsi de suite jusqu'à, ce que très vite, l'une d'elle reste debout et provoque un bourrage à la sortie de la machine.
Je souhaiterai donc détecter chaque feuille, les plier grossièrement, les convoyer vers une panière.
Pour ça j'ai prévu, un détecteur d'obstacle, deux servo-moteurs 17g, un moteur PàP (nema 17) avec une carte pilote, deux capteurs de fin de course, et je dispose d'un Uno et d'un Nano.
J'ai fait le montage comme dans l'image en pièce jointe (pas forcément utilisé les mêmes pin, à force de bidouiller...).
J'arrive à faire fonctionner individuellement chaque composant, en gardant la même configuration pour chaque.
Mais lorsque j'assemble le tout pour provoquer les réactions en chaîne ça coince, voici le code :
#include <Stepper.h>
#include <Servo.h>
const int stepsPerRevolution = 200;
Servo myservo; // création de l'objet myservo
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
int pinCapteurObstacle; // Pin sur lequel est branché le capteur d'obstacle
int pin_servo = 6; // Pin sur lequel est branché le servo
int position = 45; // Position souhaitée
int pinCapteurFdC = 7; // Pin de lecture du contact de fin de course
void setup() {
Serial.begin(9600);
pinCapteurObstacle=5; // Pin sur lequel est branché le capteur d'obstacle
pinMode(pinCapteurObstacle,INPUT);
myservo.attach(pin_servo); // attache le servo au pin spécifié sur l'objet myservo
myservo.write(position); // Place le servo moteur dans la position initiale(45)
myStepper.setSpeed(60); // Fixe la vitesse du moteur à 60 rpm
pinMode (pinCapteurFdC, INPUT); // indique que le capteur de fin de course est une donnée entrante sur le pin 7
}
void loop() {
boolean etatCapteurObstacle=digitalRead(pinCapteurObstacle);
Serial.println(etatCapteurObstacle);
//si le capteur d'obstacle est égal à 1
if (etatCapteurObstacle) {
// Fait bouger le bras de 0° à 180°
for (int position = 0; position <= 90; position++) {
myservo.write(position);
delay(15);
}
// Fait bouger le bras de 180° à 10°
for (int position = 90; position >= 0; position--) {
myservo.write(position);
delay(15);
}
}
boolean etatCapteurFdC=digitalRead(pinCapteurFdC);
// Boucle tant que le capteur de fin de course n'est pas touché
while(etatCapteurFdC != 1){
myStepper.step(-stepsPerRevolution); // Déclenche le moteur pas à pas jusqu'à ce qu'il touche le capteur
}
}
Comme vous le pouvez le constater il n'y a qu'un seul servo-moteur et un seul capteur de fin de course...deux fois moins de problème pour le moment
1er problème : mon capteur d'obstacle, détecte tout de suite quelque chose ce qui lance la suite du code.
2ème problème : mon capteur de fin de course ne réagit pas lorsque je le touche, du coup le moteur pàp tourne indéfiniment.
J'espère que l'un d'entre vous pourra m'aiguiller, merci par avance.