Bonjour, Cela ne fait que 3 jours que j'ai un Arduino Uno avec un motor shield L293 donc niveau BABY
Je viens de programmer quelque chose qui fonctionne +-
Par contre, j'aimerais que la sécurité anti coincement remonte la porte mais que dés que le contacteur de fin de course est activer, arrête le programme de remonter.
Par exemple a 4 secondes de descende, la porte rencontre un obstacle, fait remonter la porte de 3 secondes. Mais si l'obstacle est a 2 secondes, et dés la porte active le fin de course haut , ne continue pas le delay.
Si le code peut être améliorer, pouvez-vous m'expliquer votre changement svp
#include <AFMotor.h>
AF_DCMotor motor(1); // create motor #1
int Int1; int Int2;
int BP1; int BP2; int BP3;
int sp = 200;
void setup() {
Int1 = A0;
Int2 = A1;
BP1 = A3;
BP2 = A4;
BP3 = A5;
pinMode(Int1,INPUT_PULLUP);
pinMode(Int2,INPUT_PULLUP);
pinMode(BP1,INPUT_PULLUP);
pinMode(BP2,INPUT_PULLUP);
pinMode(BP3,INPUT_PULLUP);
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");
motor.setSpeed(sp); // set the speed to 200/255
motor.run(RELEASE);
delay(1500);
}
void loop() {
boolean IntH=digitalRead(Int1);
boolean IntB=digitalRead(Int2);
boolean BPP1=digitalRead(BP1);
boolean BPP2=digitalRead(BP2);
boolean BPsec=digitalRead(BP3);
// Commande moteur
if (IntH == 0 and BPP1 == 1) { // Monter si BPP1 fin de course pas atteint
Serial.print("Avant ");
motor.run(FORWARD);
}
else if (IntB == 0 and BPP2 == 1){
if (BPsec == 0 and BPP2 == 1) { // Si coince
Serial.print("Aiiiiiiieeeeeeeee ");
motor.run(FORWARD); // Remonte 5sec
delay(3000);
motor.run(RELEASE); // stop
delay(10000);
}
Serial.print("Arriere "); // Descend si BPP2 fin de course pas atteint
motor.run(BACKWARD);
}
else {
Serial.print ("Au repos ");
motor.run(RELEASE);
delay(500);
}
// Fin commande moteur
}