Re: La maquette de l'APT de Patrice
Posté : 08 oct. 2025, 19:20
Le forum des passionnés de trains miniature, de petites autos etc etc
https://forum-passionnement.eu/
Pour commencer ça devrait aller ...

Bin mon vieux, ça c'est du super boulot!!!herwat a écrit : 12 oct. 2025, 10:37 Voilà, le boitier de commande pour les réglages est fait .
.
IMG_3338.jpg
.
Bon ! maintenant, il faut vérifier que ça fonctionne . . .![]()
![]()
![]()
.herwat a écrit : 13 oct. 2025, 19:15 .
1 - Appel de la fonction de réglage et mémorisation, à la fin .
2 - Témoin de fonction et clignotement pour confirmer la mémorisation .
3 - Choix du réglage rapide ou fin .
4 - réglage sur les deux axes .
En fait, j'ai repris la même technique que pour l'ascenseur .

Code : Tout sélectionner
void loop()
{
if(!digitalRead(pinBPajust)) {Pressunefois = true ; Ajustement ();}
if (!Mvt){ SelecVoie() ; }
if (Mvt){ Deplacement() ; }
}
Code : Tout sélectionner
void Ajustement ()
{
ini = false ;
Mvt = true ;
digitalWrite(pinAlimajust,HIGH);
affichage (7) ;
HauteurMod = Hauteur[CtDroitSel][VoieSel] ;
PositionMod = Position[CtDroitSel][VoieSel] ;
while (Pressunefois || digitalRead ( pinBPajust ))
{
if( digitalRead ( pinChxRF )) { Avance = 1600 ; Recule = -1200 ;
Vitesse = 2500 ; Accel = 5000 ;}
else { Avance = 120 ; Recule = -100 ;
Vitesse = 1500 ; Accel = 5000 ;}
if( digitalRead ( pinBPajustVA )&& !ini ){ini=true ;
HauteurMod = HauteurMod + Avance ;
BougeV ();
Pressunefois = false ; }
if( digitalRead ( pinBPajustVR )&& !ini ){ini=true ;
HauteurMod = HauteurMod + Recule ;
BougeV ();
Pressunefois = false ; }
if( digitalRead ( pinBPajustHA )&& !ini ){ini=true ;
PositionMod = PositionMod + Avance ;
BougeH ();
Pressunefois = false ; }
if( digitalRead ( pinBPajustHR )&& !ini ){ini=true ;
PositionMod = PositionMod + Recule ;
BougeH ();
Pressunefois = false ; }
}
Mvt = false ;
i = VoieSel-5 ;
add = 50+300*CtDroitSel +10*i ;
EEPROM.put(add, PositionMod) ; // Mémorise la nouvelle position
EEPROM.get(add,Position[CtDroitSel][VoieSel]) ;
add = 55+300*CtDroitSel +10*i ;
EEPROM.put(add, HauteurMod) ; // Mémorise la nouvelle hauteur
EEPROM.get(add,Hauteur[CtDroitSel][VoieSel]) ;
TempsZero = millis() ; i=0;
while (i<10)
{ if ( millis() - TempsZero > 400 )
{
Tempo = !Tempo ;
digitalWrite(pinAlimajust,Tempo);
TempsZero = millis() ; i=i+1 ;
}
}
Vitesse = 4500 ; Accel = 1800 ;
affichage (Affich) ;
}
void BougeH ()
{
digitalWrite(pinCdDriverH,LOW);
MoteurH.setMaxSpeed(Vitesse);
MoteurH.setAcceleration(Accel);
MoteurH.moveTo(PositionMod );
while (ini) {
MoteurH.run();
if ( !MoteurH.run() ){ ini = false ; }
}
digitalWrite(pinCdDriverH,HIGH);
}
void BougeV ()
{
digitalWrite(pinCdDriverV,LOW);
MoteurV.setMaxSpeed(Vitesse);
MoteurV.setAcceleration(Accel);
MoteurV.moveTo(HauteurMod );
while (ini) {
MoteurV.run();
if ( !MoteurV.run() ){ ini = false ; }
}
digitalWrite(pinCdDriverV,HIGH);
}

