diff --git a/platformio.ini b/platformio.ini index f265a03..dae4554 100644 --- a/platformio.ini +++ b/platformio.ini @@ -12,4 +12,6 @@ platform = espressif32 board = nodemcu-32s framework = arduino -lib_deps = madhephaestus/ESP32Servo@^0.9.0 +lib_deps = + madhephaestus/ESP32Servo@^0.9.0 + br3ttb/PID@^1.2.1 diff --git a/src/main.cpp b/src/main.cpp index 73add75..74e82d6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,6 +4,7 @@ #include "SD.h" #include "SPI.h" #include "RTClib.h" +#include #include // #include "pcnt.h" // https://github.com/espressif/arduino-esp32/blob/master/tools/sdk/include/driver/driver/pcnt.h #include "driver/pcnt.h" @@ -18,6 +19,15 @@ #define PCNT_INPUT_SIG_IO 4 // Pulse Input GPIO #define PCNT_INPUT_CTRL_IO 5 // Control GPIO HIGH=count up, LOW=count down +//PID +#define PIN_INPUT 0 //entrée physique perso? +#define PIN_OUTPUT 3// sortie physique perso? +//PID Define Variables we'll be connecting to +double Setpoint, Input, Output; +//PID Specify the links and initial tuning parameters +double Kp=2, Ki=5, Kd=1; +PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT); + int numero_capteur = 0; // numéro de série du capteur int bouton_wifi = 7; // pin du bouton wifi bool sem_wifi; //semaphore du minuteur du bouton wifi @@ -92,6 +102,18 @@ void start_compteur() { //pcnt_counter_resume(PCNT_TEST_UNIT); pcnt_get_counter_value(PCNT_TEST_UNIT, &pulsations); } +void pid () { + Input = analogRead(PIN_INPUT); + myPID.Compute(); + analogWrite(PIN_OUTPUT, Output); +} +void pidsetup() { + //initialize the variables we're linked to + Input = analogRead(PIN_INPUT); + Setpoint = 100; + //turn the PID on + myPID.SetMode(AUTOMATIC); +} void sd_init(){ if (!SD.begin(broche_CS)) { @@ -131,42 +153,12 @@ void rtc_init() { } -void setup() { - // serial - Serial.begin(115200); - // wifi - pinMode(bouton_wifi, INPUT); - sem_wifi = false; // initialaisation du sémaphore - // moteur - moteur.attach(pinMoteur); - start_moteur(); - // compteur de pulsations - sem_compteur = false; // initialisation du sémaphore - pinMode(pulsePin,INPUT_PULLUP); - start_compteur(); - // lecteur de carte SD - sd_init (); - // RTC - rtc_init(); -} - - - //void stop_compteur { - - //} //void start_wifiAP { - //} -void pid() { - -} - - - void stop_moteur() { moteur.writeMicroseconds(1500); delay(1000); @@ -217,6 +209,27 @@ void vigie () { } } +void setup() { + // serial just for feedback + Serial.begin(115200); + // wifi + pinMode(bouton_wifi, INPUT); + sem_wifi = false; // initialisation du sémaphore + // moteur + moteur.attach(pinMoteur); + start_moteur(); + // compteur de pulsations + sem_compteur = false; // initialisation du sémaphore + pinMode(pulsePin,INPUT_PULLUP); + start_compteur(); + // lecteur de carte SD + sd_init (); + // RTC + rtc_init(); + //PID + pidsetup(); +} + void loop (){ // vigie (); //pid ();