93 lines
1.9 KiB
C++
93 lines
1.9 KiB
C++
#define DUREE_MVT_TRANSLATEUR_MS 1000
|
|
enum translateur_action_t{
|
|
TRANSLATEUR_INIT,
|
|
TRANSLATEUR_AVANCE,
|
|
TRANSLATEUR_RECULE,
|
|
}translateur_action = TRANSLATEUR_INIT;
|
|
|
|
unsigned long temps_debut_action = 0;
|
|
|
|
void Translateur_init(void){
|
|
// Moteur
|
|
/*ledcAttach(3, 500, 8);
|
|
ledcWrite(3, 0);
|
|
ledcAttach(4, 500, 8);
|
|
ledcWrite(4, 0);*/
|
|
pinMode(3, OUTPUT);
|
|
pinMode(4, OUTPUT);
|
|
// Etat des contacteurs de fin de course
|
|
// relecture de 3 sur 2 (Avant)
|
|
// relecture de 4 sur 10 (Arrière)
|
|
pinMode(2, INPUT);
|
|
pinMode(10, INPUT);
|
|
}
|
|
|
|
|
|
enum etat_action_t Translateur_etat(void){
|
|
if(temps_debut_action + DUREE_MVT_TRANSLATEUR_MS < millis()){
|
|
if(translateur_action == TRANSLATEUR_AVANCE){
|
|
if(digitalRead(2) == 0){
|
|
return ACTION_TERMINEE;
|
|
}
|
|
}else if(translateur_action == TRANSLATEUR_RECULE){
|
|
if(digitalRead(10) == 0){
|
|
return ACTION_TERMINEE;
|
|
}
|
|
}else{
|
|
return ACTION_TERMINEE;
|
|
}
|
|
}
|
|
return ACTION_EN_COURS;
|
|
}
|
|
|
|
|
|
void Translateur_cycle(void){
|
|
if(Translateur_etat() == ACTION_TERMINEE){
|
|
if(translateur_action == TRANSLATEUR_RECULE){
|
|
Translateur_avance();
|
|
}else{
|
|
Translateur_recule();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void Translateur_avance(){
|
|
Moteur_set(-255);
|
|
temps_debut_action = millis();
|
|
translateur_action = TRANSLATEUR_AVANCE;
|
|
}
|
|
|
|
void Translateur_recule(){
|
|
Moteur_set(255);
|
|
temps_debut_action = millis();
|
|
translateur_action = TRANSLATEUR_RECULE;
|
|
}
|
|
|
|
/// @brief pilote la vitesse des moteurs
|
|
/// @param vitesse vitesse signée, sera saturée à 255
|
|
void Moteur_set(int vitesse){
|
|
if(vitesse < 0){
|
|
digitalWrite(3, 1);
|
|
digitalWrite(4, 0);
|
|
}else{
|
|
digitalWrite(3, 0);
|
|
digitalWrite(4, 1);
|
|
}
|
|
/*ledcWrite(3, 0);
|
|
ledcWrite(4, 0);
|
|
if(vitesse < 0){
|
|
vitesse = -vitesse;
|
|
if(vitesse > 255){
|
|
vitesse = 255;
|
|
}
|
|
ledcWrite(3, vitesse);
|
|
}else{
|
|
if(vitesse > 255){
|
|
vitesse = 255;
|
|
}
|
|
ledcWrite(4, vitesse);
|
|
}*/
|
|
}
|
|
|