Bonjour , je suit arrivé à faire ce que je voulais.
voici mon code complet :
#include <Arduino.h>
#include <Nextion.h>
#include <Stepper.h>
#include <AccelStepper.h>
//Pin des cellules etiquete
const int ETIQON = 7;
const int ETIQOFF = 5;
//Gestion anti-rebond
bool etiqOnStatus = false;
bool etiqOnStatusOld = false;
unsigned long DebutTimer = 0;
unsigned long TimerDelais = 50;
//etat des cellules
int CelulleOn = LOW;
int CelulleOFF = LOW;
//variable utilisé pour le NEXTION
//uint32_t numberRE = 0; //Variable pour l'arret etiquette
uint32_t VitEtiq = 0; //Variable pour la vitesse etiquette
//definie les pin moteur et le setp pour le moteur
//const int dirPin = 9; //DIR+
//const int stepPin = 8; //PULL+
const int PasRevol = 6400;//pas moteur - switch parametrer sur le driver sur 1600 STEPS ON/OFF/ON/ON (defaut=6400)
Stepper MyMoteur(PasRevol, 9,8);
int StepCount = 0;
//declaration des elements nextion - exemple :( page ID = 0, element ID= 1, name = "b0")
//----SetupEtiquette----
//NexText t5 = NexText(1, 8, "t5"); //Resultat valeur retard etiquette
//NexSlider retet = NexSlider(1, 5, "retet"); //slider valeur
//-----------------------
NexSlider vitet = NexSlider(1, 9, "vitet");
//registre des boutons
NexTouch *nex_listen_list[] = {
&vitet, NULL
};
//RETET
//Slider retard etiq
// void retetPopCallback (void *ptr) {
// char temp[3] = {0};
// retet.getValue(&numberRE);
// utoa(numberRE, temp, 0);
// }
//VITET
//Slider vitesse etiq
void vitetPopCallback (void *ptr) {
char temp[3] = {0};
vitet.getValue(&VitEtiq);
utoa(VitEtiq, temp, 0);
}
void setup(void) {
// Serial.begin(9600); retour moniteur serie
Serial2.begin(9600);
// Nexion
nexInit();
// retet.attachPop(retetPopCallback, &retet); //slide retard etiquette
vitet.attachPop(vitetPopCallback, &vitet); //slide vitesse etiquette
// declaration des pins etiqueteuse
pinMode(ETIQON, INPUT_PULLUP); //entrer
pinMode(ETIQOFF, INPUT); //entrer
//Serial.println("Cellule initialisé");
// declaration des pins moteur
//pinMode(dirPin, OUTPUT); // Sortie
//pinMode(stepPin, OUTPUT); // Sortie
}
void loop() {
CelulleOn = digitalRead(ETIQON);
nexLoop (nex_listen_list);
DistribEtiq();
}
void DistribEtiq () {
if (CelulleOn == HIGH) {
//delay (numberRE);
do {
CelulleOFF = digitalRead(ETIQOFF);
//Serial.println("Detection d'un flacon");
int Speed = VitEtiq; //vitesse moteur (1450)
int MoteurSpeed = map(Speed, 0, 1023, 0, 100);
(MoteurSpeed >0);
MyMoteur.setSpeed(MoteurSpeed);
MyMoteur.step(PasRevol / 100);
}
//}
while (CelulleOFF == HIGH); //arret moteur quand cellule off detecte un creux d'etiquette .
//Serial.println("Arret moteur OFF ");
}
}
merci pour votre aide. si il y a moyen d'optimiser mieux le code je suit preneur :D.