/* arduino moteur mp5
03/01/2024
Dominique Hudry
Commande d'un moteur d'aiguillage MTB MP5
liens: https://micro-modele.fr/fr/moteurs-d-aiguillage/7701-moteur-lent-pour-aiguillages-avec-2-interrupteurs-auxilliaires.html
https://wokwi.com/projects/386745621340258305
Câblage du moteur en 3 fils :
+8v sur COM
une masse venant sur POZ1 et POZ2 par l'intermédiaire d'un ULN2003
A la mise sous tension:
le moteur est figé
test des leds de position
Un appui sur le BP:
inverse l'état des commandes pour changer la position du moteur
affiche la nouvelle position
Code compatible ATtiny85
*/
#include "simpleBouton.h"
// configuration
const byte BPcommande = 4;
const byte CdeULN1 = 5;
const byte CdeULN2 = 7;
const byte LedVoieDirecte = 10;
const byte LedVoieDeviee = 8;
bool variableEtat = false;
simpleBouton bouton(BPcommande);
void setup() {
pinMode(CdeULN1, OUTPUT); // on règle CdeULN1 en sortie
pinMode(CdeULN2, OUTPUT); // on règle CdeULN2 en sortie
pinMode(LedVoieDirecte, OUTPUT); // on règle LedVoieDirecte en sortie
pinMode(LedVoieDeviee, OUTPUT); // on règle LedVoieDeviee en sortie
digitalWrite(CdeULN1, LOW); // le moteur est figé
digitalWrite(CdeULN2, LOW);
test();
} // fin setup
void loop() {
bouton.actualiser();
if (bouton.vientDEtreEnfonce()) {
variableEtat = !variableEtat;
if (variableEtat) {
digitalWrite(LedVoieDeviee, LOW); // effacement de la position précédente
digitalWrite(CdeULN1, HIGH); // l'entrée1 de l'ULN est commandée
digitalWrite(CdeULN2, LOW);
clignote(LedVoieDirecte);
} // fin if
else {
digitalWrite(LedVoieDirecte, LOW); // effacement de la position précédente
digitalWrite(CdeULN1, LOW);
digitalWrite(CdeULN2, HIGH); // l'entrée2 de l'ULN est commandée
clignote(LedVoieDeviee);
} // fin else
} // fin if
} // fin loop
void test() {
digitalWrite(LedVoieDirecte, HIGH);
digitalWrite(LedVoieDeviee, HIGH);
delay(200);
digitalWrite(LedVoieDirecte, LOW);
digitalWrite(LedVoieDeviee, LOW);
} // fin test
void clignote(byte Led) {
for (byte i = 0; i < 4; i++) {
delay(250);
digitalWrite(Led, LOW);
delay(250);
digitalWrite(Led, HIGH);
} // fin for
} // fin clignote