changements compte-tour & scribe
This commit is contained in:
parent
0b80117ca3
commit
530cde8e80
33
src/main.cpp
33
src/main.cpp
|
@ -18,14 +18,14 @@
|
|||
#define PCNT_TEST_CHANNEL PCNT_CHANNEL_0
|
||||
#define PCNT_INPUT_SIG_IO GPIO_NUM_15 // Pulse Input GPIO
|
||||
#define PCNT_INPUT_CTRL_IO GPIO_NUM_2 // Control GPIO HIGH=count up, LOW=count down
|
||||
#define PCNT_H_LIM_VAL 10000 //valeur max du compteur_minuteur
|
||||
#define PCNT_H_LIM_VAL 10000 //valeur max du depart_compteur_minuteur
|
||||
#define PCNT_L_LIM_VAL -10 //valeur mini du compteur
|
||||
bool sem_compteur; // sémaphore pour le compteur
|
||||
bool sem_scribe; // sémaphore pour le compteur
|
||||
int16_t count = 0; // variable de compteur
|
||||
int vRotReel; // vitesse réelle mesurée du moteur
|
||||
unsigned long compteur_minuteur = 0; // minuteur pour le déclenchement du compteur
|
||||
unsigned long start_chrono_scribe= 0; // minuteur pour le déclenchement du compteur
|
||||
bool sema_compte_tour = false; // semaphore poour le compte tour
|
||||
unsigned long compteur_compte_tour = 0; // minuteur pour le déclenchement du compte-tour
|
||||
unsigned long depart_compte_tour = 0; // minuteur pour le déclenchement du compte-tour
|
||||
int refresh_compte_tour = 500; // durée entre deux mesures du compte-tour en ms
|
||||
int pptr = 2; //nombre de pulsations par tour d'hélice
|
||||
|
||||
|
@ -48,7 +48,7 @@ DateTime now{rtc.now()};
|
|||
////////////////////////////////
|
||||
/* DÉFINITIONS DE LA CARTE SD */
|
||||
////////////////////////////////
|
||||
unsigned long freq_ecriture = 60000; // durée entre deux écritures sur la carte SD en micro secondes
|
||||
unsigned long intervalle_d_ecriture = 60000; // durée entre deux écritures sur la carte SD en micro secondes
|
||||
char horodatage[12]; //création du tableau pour contenir l'horodatage
|
||||
char fichier[] = "/"; //tableau pour le nom de fichier
|
||||
|
||||
|
@ -174,12 +174,13 @@ void stop_compteur() {
|
|||
|
||||
void compte_tour() {
|
||||
if (sema_compte_tour == false){
|
||||
compteur_compte_tour = millis();
|
||||
depart_compte_tour = millis();
|
||||
sema_compte_tour = true;
|
||||
}
|
||||
int offset = (millis() - compteur_compte_tour );
|
||||
int offset = (millis() - depart_compte_tour );
|
||||
pcnt_get_counter_value(PCNT_UNIT_0, &count);
|
||||
if (offset >= refresh_compte_tour && sema_compte_tour == true && count >= 1){
|
||||
compteur_compte_tour = millis()- ;
|
||||
vRotReel = (60000*count/(pptr*offset)); //vitesse en tours par min (4 pulsations /tour, 2 montantes, 2 descendantes)
|
||||
Serial.println("count =");
|
||||
Serial.println(count);
|
||||
|
@ -188,7 +189,7 @@ void compte_tour() {
|
|||
Serial.println("vRrotReel=");
|
||||
Serial.println(vRotReel);
|
||||
gaz_moteur();// ajustement des gaz en fonction de la vitesse mesurée
|
||||
sema_compte_tour = false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -324,11 +325,14 @@ void sd_init() {
|
|||
}
|
||||
|
||||
void scribe_sd (){
|
||||
if ( sem_compteur == false ) {
|
||||
compteur_minuteur = millis();
|
||||
sem_compteur = true;
|
||||
if ( sem_scribe == false ) {
|
||||
sem_scribe = true;
|
||||
pcnt_counter_pause(PCNT_TEST_UNIT);
|
||||
pcnt_counter_clear(PCNT_TEST_UNIT);
|
||||
pcnt_counter_resume(PCNT_TEST_UNIT);
|
||||
start_chrono_scribe = millis();
|
||||
}
|
||||
if ( sem_compteur == true && millis() - compteur_minuteur >= freq_ecriture ){
|
||||
if ( sem_scribe == true && millis() - start_chrono_scribe >= intervalle_d_ecriture ){
|
||||
char timestamp[] = "YY-MM-DD-hh:mm:ss";
|
||||
char *horodatage = now.toString(timestamp);
|
||||
char buffer[64];
|
||||
|
@ -338,7 +342,8 @@ void scribe_sd (){
|
|||
appendFile(SD, fichier, buffer);
|
||||
appendFile(SD, fichier, "\n" );
|
||||
Serial.println(vRotReel);
|
||||
compteur_minuteur = 0;
|
||||
start_chrono_scribe= 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -475,7 +480,7 @@ void setup() {
|
|||
sd_init (); // initialisation de la carte SD
|
||||
sem_wifi = false; // initialisation du sémaphore
|
||||
/* compteur de pulsations */
|
||||
sem_compteur = false; // initialisation du sémaphore
|
||||
sem_scribe = false; // initialisation du sémaphore
|
||||
//pinMode(pulsePin,INPUT_PULLUP);
|
||||
start_compteur();
|
||||
start_moteur(); // moteur
|
||||
|
|
Loading…
Reference in a new issue