Bonjour papoo01
Ton voltmètre peut causer de petits "parasites" qui déclenchent le processus. Ca fait, aussi avec une PULLUP externe?
Essaies le programme ci-dessous, l'entrée ent5V (pin 2) est gérée par la bibliothèque JC_Button.h, qui elle s'occupe des rebonds et autres parasites, c'est le 40 de cette ligne:
Button btnEnt5v(ent5v, 40, true, true); // definition du bouton pin, anti-rebonds, avec PULLUP, actif à LOW
De toute façon, dans ta configuration finale, avec ton long câble, tu devra passer par la case bibliothèque pour gérer le bouton poussoir, ça simplifie grandement les choses.
Il y a des indications quand au fonctionnement du programme, dans la console à 115200.
Le programme:
//***********************************************
//*************** PULDOWN ou PULLUP *************
//***********************************************
#include <JC_Button.h>
const int pin1moteur = 9;
const int pin2moteur = 10;
const int ent5v = 2;
const int led1 = 11;
int a;
// https://github.com/JChristensen/JC_Button#buttonpin-dbtime-puenable-invert
Button btnEnt5v(ent5v, 40, true, true); // definition du bouton pin, anti-rebonds, avec PULLUP, actif à LOW
void setup()
{
Serial.begin(115200);
btnEnt5v.begin(); // Démarrage du bouton
pinMode(pin1moteur, OUTPUT);
pinMode(pin2moteur, OUTPUT);
// Arrêter le moteur
digitalWrite(pin1moteur,LOW);
digitalWrite(pin2moteur,LOW);
Serial.println("H-bridge L L");
pinMode(led1, OUTPUT);
Serial.println("\nFin setup()");
}
void loop()
{
if (btnEnt5v.read())
{
Serial.println("ent5v ON");
delay(2000);//attend 2 s apres la detection de la bille par le capteur
digitalWrite(pin1moteur,HIGH);//fait tourner le moteur 1 dans un sens
digitalWrite(pin2moteur,LOW);
Serial.println("\tH-bridge H L");
cligno();// fait clignoter la led pendant la descente uniquement
digitalWrite(pin1moteur,LOW);
digitalWrite(pin2moteur,LOW);
Serial.println("\tH-bridge L L");
delay(2000);// le moteur s'arrête 2 s avant de toruner dans l'autre sens
digitalWrite(pin1moteur,LOW);
digitalWrite(pin2moteur,HIGH);
Serial.println("\tH-bridge LH");
delay(7000);//ajout de 500ms a la montee pour compenser le poids et fatigue moteur
digitalWrite(pin1moteur,LOW);
digitalWrite(pin2moteur,LOW);
Serial.println("\tH-bridge L L");
a=0;
Serial.println("\tEND");
}
}
void cligno()
{
Serial.println("\tClignote");
while (a < 14) {
digitalWrite(led1,HIGH);
delay(250);
digitalWrite(led1,LOW);
delay(250);
a=a+1;
}
}
A+
jpbbricole