A
Andoche
Compagnon
Bonjour Speedjf37.
Tout fonctionne super bien.
J'ai voulu faire la modification du post #108.
Comme dit plus haut, j'ai échoué.
Je suis allé voir dans les Références, la signification de tous les termes du C++.
Mais maintenant je sature.
Si j'avais 10 ans de moins je me serais replonger à fond dedans, mais à 83 ans j'avoue que je n'ais plus le courage.
Alors si tu pouvais inclure ta modification dans mon programme ce serait super.
Sinon il restera dans son état actuel.
En te remerciant par avance, et si toute fois, cela ne te dérange pas trop.
//Programme pour retomber dans le pas après débrayage vis mère. AVEC BUTEE ARRIERE EN FONCTION
const int CONNECTION = 13; //prend la pin 13 pour la liaison série avec écran PC
const int codeur = A1; //Codeur affecté à la pin analogique "A1"
const int InterButee = 3; //le détecteur de butée arrière sur le banc du tour affectée à la pin analogique "A3"
int Trous = 0; //lecture de l'état de la pin analogique "A1" dans trous
int ButeeAR = 0; //lecture de l'état de la pin analogique "A3" dans "ButeeAR" Si ButeeAR=1
int VM; //Compteur Nombre de tours de la vis mère Evolu pendant la marche du tour
int CT = 11; //compte le nombre de trous sur le disque de la vis mère 10trous = 1 tour complet de vis mère
int VRCVM; //valeur référence compteur vis mère varie en fonction du pas à faire rentrée avec les boutons
//(résultat rapport pas à faire sur pas vis mère (pour Ramo T37 pas de 6mm))
int LastTrous = 0; //inverse de Trous pour faire un FRONT MONTANT
int Last_lcd_key;
const char* Afficheur[10] = {" ",
" 8",
" 88",
" 888",
" 8888",
" 88888",
" 888888",
" 8888888",
" 88888888",
" 888888888"};
//____________________________Fin pour liaison série et variable vis mère___________________________
//POUR LIQUIDE CRISTAL --Début-
#include <LiquidCrystal.h> //Elle est appelée en début de programme avec #include <LiquidCrystal.h>
// Sélection des pins utilisées par l'écran LCD
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Definit des valeurs utilisées par les 5 boutons
int lcd_key = 0;//JF memo lecture clavier (code touche) // défini la pin utilisée pour les touches du clavier (Je pense ? )
int adc_key_in = 0;//JF Variable lecture clavier (analogique ) // défini les pins utilisée pour les entrées sur arduino de l’écran (Je pense ? )
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
// Lecture des boutons (tous regroupés sur la Pin Analog A0 (de l'écran LCD ? ))
int read_LCD_buttons() //lecture du bouton avec Read Rien entre les parenthèses on attend le N° du bouton qui sera appuyer
{ //____________________ON OUVRE UNE BOUCLE LIQUIDCRISTAL
adc_key_in = analogRead(0); // Lit la valeur analogique depuis le sensor sur A0 (la pin A0)suivant voltage ça designe le bouton
// centré sur ces valeurs : 0, 144, 329, 504, 741
// on ajoute environ 50 à ces valeurs et on vérifie si on est proche
if (adc_key_in > 1000) return btnNONE; // On définit ça en première option pour raison de rapidité car c'est l'option la plus probable (il n'y a aucun bouton appuyé au début)
// For V1.1 us this threshold Pour V1.1 sous ce seuil (ce qui suit)
if (adc_key_in < 50) return btnRIGHT; //si c’est en dessous de 50 c’est le bouton RIGHT qui est pris en compte
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT; //Sinon, on n'a aucun bouton de sélectionné (par défaut)
// For V1.0 pour commenter (/**/) l’autre seuil et utiliser celui ci-dessous :
/*
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
*/
return btnNONE; // Lorsque tous les autres échouent, retourner ce... quand aucun bouton appuyé retourne -reset-
} //____________________ON FERME UNE BOUCLE LIQUIDCRISTAL
// PROGRAMME VIS MERE______RIEN_____
// SETUP______________________________________________________________________________________________________________________________________
void setup()
{ //__________________________________DEBUT BOUCLE VOID SETUP //JF SETUP n'est pas une boucle on y passe qu'une fois au reset de l'arduino
//LIQUIDE CRISTAL --DEBUT-- DANS LE SETUP
{
lcd.begin(16, 2); // start the library définit un écran LCD de 16 caractères et 2 lignes. Lance la librarie (16 caractères et 2 lignes)
lcd.setCursor(0, 0); //positionne le curseur sur le 1er caracrère de la 1er ligne (haut)
lcd.clear(); //efface l'afficheur
lcd.print(""); // affiche 1 caractère vide
delay(30); // délai de 30/1000 seconde uniquement à la mise en route
}
//LIQUIDE CRISTAL --FIN-- DANS LE SETUP
{
Serial.begin(9600); //jf initialise la liaison série //on règle le débit de la connection Serie à 9600 bauds
Code:
#define TEXT_MAIN_MENU_TITLE "MON_LOGICIEL"
#define TEXT_AUTHOR_SOFT "Visrectif03"
#define TEXT_VERSION_SOFT "1.4.0"
Serial.print("TITRE : ");
Serial.println(TEXT_MAIN_MENU_TITLE);
Serial.print("Auteur : ");
Serial.println(TEXT_AUTHOR_SOFT);
Serial.print("Version : ");
Serial.println(TEXT_VERSION_SOFT);
pinMode(CONNECTION, OUTPUT); //on met la pin 13 (CONNECTION) en sortie
}
//if ((ButeeAR == 1)&&(Trous>1)) Si le trainard est en butée arrièr, que la butée arrière est actionnée (le contacte)
// que la vis mère est enclenchée et qu'un trou est en face de la fourche
//on peut renter la consigne du nombre de tours de vis mère
{
CT = 11; //Au départ mettre 1 trou en face de la fourche
// au 1er passage à vide du départ il met le CT égale à 10
}
}//______________________________FIN SETUP_
// LOOP____________________________________________________________________________________________________________________________________________
void loop()
{ //1_____________________________BOUCLE LOOP
// réaction à l'appui des boutons écrit sur la ligne N°1 du bas
if (read_LCD_buttons)
{ //4
lcd.setCursor(0, 1); // Curseur en début de seconde ligne (N°1 bas) JE PENSE PAS UTIL A VOIR
lcd_key = read_LCD_buttons(); // Lire le bouton appuyé avec read
switch (lcd_key) // Selon le bouton choisi
//on ouvre un 2eme niveau de boucle dans la 1er boucle
{ //5
//JF on n'incorpore pas de code dans le switch , par contre on peut le placer dans le corps du case
{case btnRIGHT: //6 Bouton marqué RIGHT droite ( VRCVM valeur référence compteur vis mère varie en fonction du pas à faire)
//on ouvre un 3eme niveau de boucle dans la 1er boucle
{//7
VRCVM = VRCVM - 10; //on décrémente de 10 en 10 la valeur rentrée de la vis mère
lcd.setCursor(12, 1); // sur le 13eme digit de la ligne du bas pour mémoire on par du digit 0
lcd.print(VRCVM);// affiche la valeur du nombre de tour de vis mère DECREMENTE de 10 en 10
delay(1000);
VM = VRCVM;
break;
}//7
case btnLEFT: // Bouton marqué LEFT (gauche)
{//7
VRCVM = VRCVM + 10; //on incrémente de 10 en 10 la valeur rentrée de la vis mère
lcd.setCursor(12, 1);
lcd.print(VRCVM); // affiche la valeur du nombre de tour de vis mère INCREMENTE de 10 en 10
delay(1000);
VM = VRCVM;
break;
}//7
case btnUP: // Bouton marqué UP haut
{//7
VRCVM = VRCVM + 1; //on incrémente de 1 en 1 la valeur rentrée de la vis mère
lcd.setCursor(12, 1);
lcd.print(VRCVM); // affiche la valeur du nombre de tour de vis mère INCREMENTE de 1 en 1
delay(1000);
VM = VRCVM;
break;
}//7
case btnDOWN: // Bouton marqué DOWN bas
{//7
VRCVM = VRCVM - 1; //on décrémente de 1 en 1 la valeur rentrée de la vis mère
lcd.setCursor(12, 1);
lcd.print(VRCVM); // affiche la valeur du nombre de tour de vis mère DECREMENTE de 1 en 1
delay(1000);
VM = VRCVM;
break;
}//7
}//6
case btnSELECT: //Bouton marqué SELECT remet VRCVM à zéro et efface la ligne du bas de l'afficheur
{//7
VRCVM = 0; //remet VRCVM à zéro (la valeur rentrée de la vis mère)
lcd.setCursor(0, 1);
lcd.print(" "); // efface la ligne du bas de l'afficheur
//______________________________
lcd.setCursor(0, 1);
lcd.print(VRCVM);
//_____________________________
break;
}//7
case btnNONE: // Bouton marqué RST relance le programme
{//7
lcd.print(""); // écrit sur aucune ligne mais fait un reset général
break;
}//7 //on ferme les 3eme niveaux de boucles
} //5
} //4 on ferme le 2eme niveau de boucle
{
//____________________________ON RENTRE DANS PROGRAMME VIS MERE
ButeeAR = analogRead(InterButee); // ON RECUPERE LES INFOS DE LA BUTEE ARRIERE
if (ButeeAR > 500)
{
ButeeAR = 0;
}
else
{
ButeeAR = 1;
}
} // affichage de valeurs de controle sur l'écran du PC. Peut être effacé
Serial.println ("ButeeAR:"); //Début de ce qui peut-être effacé
Serial.println (ButeeAR);
Serial.println ("VM"); //nom de la variable
Serial.println (VM); //valeur de la variable (en décimale)
Serial.println ("VRCVM:");
Serial.println (VRCVM);
Serial.println ("Trous:");
Serial.println (Trous);
Serial.println ("CT:");
Serial.println (CT);
//Serial.println (" "); //Fin de ce qui peut-être effacé
lcd.setCursor(9, 1); // Curseur sur ligne N°1 (bas) et position 9 (0, 1, 2, 3, >>>>>> 15) de l'afficheur LiquidCrystal
lcd.print(CT) ; // affichage valeur compteur trous sur l'écran ARDUINO
if (ButeeAR == 1) // si le detecteur arrière de Ø8mm (ou contact d'un inter) est enclanché (idem butée aux repères)
{
lcd.setCursor(12, 1); // Curseur sur ligne N°1 (bas) et position 12 (0, 1, 2, 3, >>>>>> 15)
lcd.print(VM) ; //affichage valeur compteur vis mère VM sur ardunio
}
// _____________________________________
if (VM < 100) //efface le dernier zéro du 100 quand le décrément arrive à 99 sur ardunio
{
lcd.setCursor(14, 1);
lcd.print(" ") ;
}
if (VM < 10) //efface le zéro du 10 quand le décrément arrive à 9 sur arduino
{
lcd.setCursor(13, 1);
lcd.print(" ") ;
}
//____________________________________
if ((VM == 1) && ( ButeeAR == 1)) //SI compteur vis mère=1 et compteur trous=10 (donc on attaque le dernier tour de vis mère avant embrayage) on met en route le chenillard
{ //_______________________________OUVERTURE BOUCLE CHENILLARD__________
lcd.setCursor (1,0);
lcd.print(Afficheur[CT]);
// ____________SI VM=1 ET CT= 0_____ON LANCE LE DEBUT DU CHENILLARD_______________________________
// Dans le dernier tour de vis mère suivant la valeur du compteur trous on affiche le chenillard avec CT 9 et on efface 1 à 1 avec 9 8 7 6....
// Les espaces vides permettent d'effacer les digits de l'afficheur
}//_______________________________FERMETURE BOUCLE CHENILLARD__________
//JF __FIN CHENILLARD__________
//_____________________TRAITEMENT DE CAPTEUR TROUS______
Trous = analogRead(codeur); //lit la pin Analogique A1 pour récupérer les impulsions des trous (capteur fourche)
// Serial.println (Trous);
if (Trous <10) //valeur référence élevée car les retour de la fourche varien
{
Trous = 1;
}
//_______________OUVERTURE BOUCLE DESSUS !=Last trous
if (Trous != LastTrous) //l'action se fera sur le front montant de Trous (capteur fourche)
{
if (CT < 10)
{
lcd.setCursor(10, 1); // Curseur sur ligne N°1 (bas) de l'ardunio et position 10 (0, 1, 2, 3, >>>>>> 15)
lcd.print (" "); // si CT inférieur à 10 on écrase le digit zéro de la valeur 10
delay (30);
}
if (Trous == HIGH)
{
CT = CT - 1;
}
// à chaque trou on fait moins 1 à CT (compteur trous)
if (CT == 0) //SI compteur trous arrive à zéro
{
VM = VM - 1; // donc si CT=0 (la vis a fait un tour complet) on fait -1 au compteur VM de la vis mère
}
if (VM == 0) //SI le compteur VM arrive à zéro
{
VM = VRCVM; //on réactualise la valeur référence compteur vis mère (varie en fonction du pas à faire)
//(résultat rapport pas à faire sur pas vis mère (pour Ramo T37 pas de 6mm)
}
if (CT == 0) //SI le compteur trous arrive à zéro
{
CT = 10; //on réactualise la valeur du compteur trous à 10 (CT=10)
}
} //jf fin if (Trous != LastTrous)
LastTrous = Trous; // Fin programme FRONT MONTANT on vide Trous dans LastTrous pour mémoriser l'état pour le prochain tour
}//1_____________________________BOUCLE LOOP
Bonne journée, et merci encore pour ton aide.
Tout fonctionne super bien.
J'ai voulu faire la modification du post #108.
Comme dit plus haut, j'ai échoué.
Je suis allé voir dans les Références, la signification de tous les termes du C++.
Mais maintenant je sature.
Si j'avais 10 ans de moins je me serais replonger à fond dedans, mais à 83 ans j'avoue que je n'ais plus le courage.
Alors si tu pouvais inclure ta modification dans mon programme ce serait super.
Sinon il restera dans son état actuel.
En te remerciant par avance, et si toute fois, cela ne te dérange pas trop.
//Programme pour retomber dans le pas après débrayage vis mère. AVEC BUTEE ARRIERE EN FONCTION
const int CONNECTION = 13; //prend la pin 13 pour la liaison série avec écran PC
const int codeur = A1; //Codeur affecté à la pin analogique "A1"
const int InterButee = 3; //le détecteur de butée arrière sur le banc du tour affectée à la pin analogique "A3"
int Trous = 0; //lecture de l'état de la pin analogique "A1" dans trous
int ButeeAR = 0; //lecture de l'état de la pin analogique "A3" dans "ButeeAR" Si ButeeAR=1
int VM; //Compteur Nombre de tours de la vis mère Evolu pendant la marche du tour
int CT = 11; //compte le nombre de trous sur le disque de la vis mère 10trous = 1 tour complet de vis mère
int VRCVM; //valeur référence compteur vis mère varie en fonction du pas à faire rentrée avec les boutons
//(résultat rapport pas à faire sur pas vis mère (pour Ramo T37 pas de 6mm))
int LastTrous = 0; //inverse de Trous pour faire un FRONT MONTANT
int Last_lcd_key;
const char* Afficheur[10] = {" ",
" 8",
" 88",
" 888",
" 8888",
" 88888",
" 888888",
" 8888888",
" 88888888",
" 888888888"};
//____________________________Fin pour liaison série et variable vis mère___________________________
//POUR LIQUIDE CRISTAL --Début-
#include <LiquidCrystal.h> //Elle est appelée en début de programme avec #include <LiquidCrystal.h>
// Sélection des pins utilisées par l'écran LCD
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Definit des valeurs utilisées par les 5 boutons
int lcd_key = 0;//JF memo lecture clavier (code touche) // défini la pin utilisée pour les touches du clavier (Je pense ? )
int adc_key_in = 0;//JF Variable lecture clavier (analogique ) // défini les pins utilisée pour les entrées sur arduino de l’écran (Je pense ? )
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
// Lecture des boutons (tous regroupés sur la Pin Analog A0 (de l'écran LCD ? ))
int read_LCD_buttons() //lecture du bouton avec Read Rien entre les parenthèses on attend le N° du bouton qui sera appuyer
{ //____________________ON OUVRE UNE BOUCLE LIQUIDCRISTAL
adc_key_in = analogRead(0); // Lit la valeur analogique depuis le sensor sur A0 (la pin A0)suivant voltage ça designe le bouton
// centré sur ces valeurs : 0, 144, 329, 504, 741
// on ajoute environ 50 à ces valeurs et on vérifie si on est proche
if (adc_key_in > 1000) return btnNONE; // On définit ça en première option pour raison de rapidité car c'est l'option la plus probable (il n'y a aucun bouton appuyé au début)
// For V1.1 us this threshold Pour V1.1 sous ce seuil (ce qui suit)
if (adc_key_in < 50) return btnRIGHT; //si c’est en dessous de 50 c’est le bouton RIGHT qui est pris en compte
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT; //Sinon, on n'a aucun bouton de sélectionné (par défaut)
// For V1.0 pour commenter (/**/) l’autre seuil et utiliser celui ci-dessous :
/*
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
*/
return btnNONE; // Lorsque tous les autres échouent, retourner ce... quand aucun bouton appuyé retourne -reset-
} //____________________ON FERME UNE BOUCLE LIQUIDCRISTAL
// PROGRAMME VIS MERE______RIEN_____
// SETUP______________________________________________________________________________________________________________________________________
void setup()
{ //__________________________________DEBUT BOUCLE VOID SETUP //JF SETUP n'est pas une boucle on y passe qu'une fois au reset de l'arduino
//LIQUIDE CRISTAL --DEBUT-- DANS LE SETUP
{
lcd.begin(16, 2); // start the library définit un écran LCD de 16 caractères et 2 lignes. Lance la librarie (16 caractères et 2 lignes)
lcd.setCursor(0, 0); //positionne le curseur sur le 1er caracrère de la 1er ligne (haut)
lcd.clear(); //efface l'afficheur
lcd.print(""); // affiche 1 caractère vide
delay(30); // délai de 30/1000 seconde uniquement à la mise en route
}
//LIQUIDE CRISTAL --FIN-- DANS LE SETUP
{
Serial.begin(9600); //jf initialise la liaison série //on règle le débit de la connection Serie à 9600 bauds
Code:
#define TEXT_MAIN_MENU_TITLE "MON_LOGICIEL"
#define TEXT_AUTHOR_SOFT "Visrectif03"
#define TEXT_VERSION_SOFT "1.4.0"
Serial.print("TITRE : ");
Serial.println(TEXT_MAIN_MENU_TITLE);
Serial.print("Auteur : ");
Serial.println(TEXT_AUTHOR_SOFT);
Serial.print("Version : ");
Serial.println(TEXT_VERSION_SOFT);
pinMode(CONNECTION, OUTPUT); //on met la pin 13 (CONNECTION) en sortie
}
//if ((ButeeAR == 1)&&(Trous>1)) Si le trainard est en butée arrièr, que la butée arrière est actionnée (le contacte)
// que la vis mère est enclenchée et qu'un trou est en face de la fourche
//on peut renter la consigne du nombre de tours de vis mère
{
CT = 11; //Au départ mettre 1 trou en face de la fourche
// au 1er passage à vide du départ il met le CT égale à 10
}
}//______________________________FIN SETUP_
// LOOP____________________________________________________________________________________________________________________________________________
void loop()
{ //1_____________________________BOUCLE LOOP
// réaction à l'appui des boutons écrit sur la ligne N°1 du bas
if (read_LCD_buttons)
{ //4
lcd.setCursor(0, 1); // Curseur en début de seconde ligne (N°1 bas) JE PENSE PAS UTIL A VOIR
lcd_key = read_LCD_buttons(); // Lire le bouton appuyé avec read
switch (lcd_key) // Selon le bouton choisi
//on ouvre un 2eme niveau de boucle dans la 1er boucle
{ //5
//JF on n'incorpore pas de code dans le switch , par contre on peut le placer dans le corps du case
{case btnRIGHT: //6 Bouton marqué RIGHT droite ( VRCVM valeur référence compteur vis mère varie en fonction du pas à faire)
//on ouvre un 3eme niveau de boucle dans la 1er boucle
{//7
VRCVM = VRCVM - 10; //on décrémente de 10 en 10 la valeur rentrée de la vis mère
lcd.setCursor(12, 1); // sur le 13eme digit de la ligne du bas pour mémoire on par du digit 0
lcd.print(VRCVM);// affiche la valeur du nombre de tour de vis mère DECREMENTE de 10 en 10
delay(1000);
VM = VRCVM;
break;
}//7
case btnLEFT: // Bouton marqué LEFT (gauche)
{//7
VRCVM = VRCVM + 10; //on incrémente de 10 en 10 la valeur rentrée de la vis mère
lcd.setCursor(12, 1);
lcd.print(VRCVM); // affiche la valeur du nombre de tour de vis mère INCREMENTE de 10 en 10
delay(1000);
VM = VRCVM;
break;
}//7
case btnUP: // Bouton marqué UP haut
{//7
VRCVM = VRCVM + 1; //on incrémente de 1 en 1 la valeur rentrée de la vis mère
lcd.setCursor(12, 1);
lcd.print(VRCVM); // affiche la valeur du nombre de tour de vis mère INCREMENTE de 1 en 1
delay(1000);
VM = VRCVM;
break;
}//7
case btnDOWN: // Bouton marqué DOWN bas
{//7
VRCVM = VRCVM - 1; //on décrémente de 1 en 1 la valeur rentrée de la vis mère
lcd.setCursor(12, 1);
lcd.print(VRCVM); // affiche la valeur du nombre de tour de vis mère DECREMENTE de 1 en 1
delay(1000);
VM = VRCVM;
break;
}//7
}//6
case btnSELECT: //Bouton marqué SELECT remet VRCVM à zéro et efface la ligne du bas de l'afficheur
{//7
VRCVM = 0; //remet VRCVM à zéro (la valeur rentrée de la vis mère)
lcd.setCursor(0, 1);
lcd.print(" "); // efface la ligne du bas de l'afficheur
//______________________________
lcd.setCursor(0, 1);
lcd.print(VRCVM);
//_____________________________
break;
}//7
case btnNONE: // Bouton marqué RST relance le programme
{//7
lcd.print(""); // écrit sur aucune ligne mais fait un reset général
break;
}//7 //on ferme les 3eme niveaux de boucles
} //5
} //4 on ferme le 2eme niveau de boucle
{
//____________________________ON RENTRE DANS PROGRAMME VIS MERE
ButeeAR = analogRead(InterButee); // ON RECUPERE LES INFOS DE LA BUTEE ARRIERE
if (ButeeAR > 500)
{
ButeeAR = 0;
}
else
{
ButeeAR = 1;
}
} // affichage de valeurs de controle sur l'écran du PC. Peut être effacé
Serial.println ("ButeeAR:"); //Début de ce qui peut-être effacé
Serial.println (ButeeAR);
Serial.println ("VM"); //nom de la variable
Serial.println (VM); //valeur de la variable (en décimale)
Serial.println ("VRCVM:");
Serial.println (VRCVM);
Serial.println ("Trous:");
Serial.println (Trous);
Serial.println ("CT:");
Serial.println (CT);
//Serial.println (" "); //Fin de ce qui peut-être effacé
lcd.setCursor(9, 1); // Curseur sur ligne N°1 (bas) et position 9 (0, 1, 2, 3, >>>>>> 15) de l'afficheur LiquidCrystal
lcd.print(CT) ; // affichage valeur compteur trous sur l'écran ARDUINO
if (ButeeAR == 1) // si le detecteur arrière de Ø8mm (ou contact d'un inter) est enclanché (idem butée aux repères)
{
lcd.setCursor(12, 1); // Curseur sur ligne N°1 (bas) et position 12 (0, 1, 2, 3, >>>>>> 15)
lcd.print(VM) ; //affichage valeur compteur vis mère VM sur ardunio
}
// _____________________________________
if (VM < 100) //efface le dernier zéro du 100 quand le décrément arrive à 99 sur ardunio
{
lcd.setCursor(14, 1);
lcd.print(" ") ;
}
if (VM < 10) //efface le zéro du 10 quand le décrément arrive à 9 sur arduino
{
lcd.setCursor(13, 1);
lcd.print(" ") ;
}
//____________________________________
if ((VM == 1) && ( ButeeAR == 1)) //SI compteur vis mère=1 et compteur trous=10 (donc on attaque le dernier tour de vis mère avant embrayage) on met en route le chenillard
{ //_______________________________OUVERTURE BOUCLE CHENILLARD__________
lcd.setCursor (1,0);
lcd.print(Afficheur[CT]);
// ____________SI VM=1 ET CT= 0_____ON LANCE LE DEBUT DU CHENILLARD_______________________________
// Dans le dernier tour de vis mère suivant la valeur du compteur trous on affiche le chenillard avec CT 9 et on efface 1 à 1 avec 9 8 7 6....
// Les espaces vides permettent d'effacer les digits de l'afficheur
}//_______________________________FERMETURE BOUCLE CHENILLARD__________
//JF __FIN CHENILLARD__________
//_____________________TRAITEMENT DE CAPTEUR TROUS______
Trous = analogRead(codeur); //lit la pin Analogique A1 pour récupérer les impulsions des trous (capteur fourche)
// Serial.println (Trous);
if (Trous <10) //valeur référence élevée car les retour de la fourche varien
{
Trous = 1;
}
//_______________OUVERTURE BOUCLE DESSUS !=Last trous
if (Trous != LastTrous) //l'action se fera sur le front montant de Trous (capteur fourche)
{
if (CT < 10)
{
lcd.setCursor(10, 1); // Curseur sur ligne N°1 (bas) de l'ardunio et position 10 (0, 1, 2, 3, >>>>>> 15)
lcd.print (" "); // si CT inférieur à 10 on écrase le digit zéro de la valeur 10
delay (30);
}
if (Trous == HIGH)
{
CT = CT - 1;
}
// à chaque trou on fait moins 1 à CT (compteur trous)
if (CT == 0) //SI compteur trous arrive à zéro
{
VM = VM - 1; // donc si CT=0 (la vis a fait un tour complet) on fait -1 au compteur VM de la vis mère
}
if (VM == 0) //SI le compteur VM arrive à zéro
{
VM = VRCVM; //on réactualise la valeur référence compteur vis mère (varie en fonction du pas à faire)
//(résultat rapport pas à faire sur pas vis mère (pour Ramo T37 pas de 6mm)
}
if (CT == 0) //SI le compteur trous arrive à zéro
{
CT = 10; //on réactualise la valeur du compteur trous à 10 (CT=10)
}
} //jf fin if (Trous != LastTrous)
LastTrous = Trous; // Fin programme FRONT MONTANT on vide Trous dans LastTrous pour mémoriser l'état pour le prochain tour
}//1_____________________________BOUCLE LOOP
Bonne journée, et merci encore pour ton aide.