#define OF 0
#define I1 1
#define U1 2
#define I2 3
#define U2 4
#define I3 5
#define U3 6
// k = 0 pour OF, k = 1 pour I1, k = 2 pour U1, K = 3 = I2, k = 4 = pour U2, k = 5 pour I3, k = 6 pour U3
const uint8_t NBCOMBIGPIOUXI = 7;
int8_t Analog_UxI[][NBCOMBIGPIOUXI] = {
{ -1, 35, 35, 34, 35, 35, 32 }, // Mesure Offset OF
{ -1, 33, 34, 33, 39, 33, 33 }, // Mesure Intensité I1
{ -1, 32, 32, 32, 36, 32, 34 }, // Mesure Voltage U1
{ -1, -1, -1, -1, -1, 34, 35 }, // Mesure Intensité I2
{ -1, -1, -1, -1, -1, -1, 36 }, // Mesure Voltage U2
{ -1, -1, -1, -1, -1, -1, 39 }, // Mesure Intensité I3
{ -1, -1, -1, -1, -1, -1, -1 } // Mesure Voltage U3
};
// annonce si le gpio proposé est bloqué pour un autre composant matériel
bool gpioUsed(int8_t g) {
return false;
}
#define IS_ADC1_GPIO(p) (digitalPinToAnalogChannel(p) != -1 && digitalPinToAnalogChannel(p) < SOC_ADC_MAX_CHANNEL_NUM)
String sendPlaceHolder_GPIOUxI() {
char buffer[1000]; // suffisant pour 10 combinaisons avec triphasé ou 18 combinaisons monophasé 1 voie
int len = 0;
for (int i = 1; i < NBCOMBIGPIOUXI; i++) {
if (IS_ADC1_GPIO(Analog_UxI[OF][i]) && IS_ADC1_GPIO(Analog_UxI[U1][i]) && IS_ADC1_GPIO(Analog_UxI[I1][i]) && !(gpioUsed(Analog_UxI[OF][i]) || gpioUsed(Analog_UxI[U1][i]) || gpioUsed(Analog_UxI[I1][i]))) {
len += snprintf(buffer + len, sizeof(buffer) - len, "<option value='%d'>Commun(%d), I1(%d), U1(%d)", i, Analog_UxI[OF][i], Analog_UxI[I1][i], Analog_UxI[U1][i]); // OF, I1 et U1 sont obligatoire
}
for (int k = 3; k < (sizeof(Analog_UxI) / sizeof(Analog_UxI[0])); k++) { // k = 0 pour OF, k = 1 pour I1, k = 2 pour U1, K = 3 = I2, k = 4 = pour U2, k = 5 pour I3, k = 6 pour U3
switch (k) {
case I2: // 3 I2 sans U2 fera une situation avec 2 mesures d'intensité en monophasé *** I2 avec U2, I3 (et U3) fera une mesure source en triphasé
if (IS_ADC1_GPIO(Analog_UxI[I2][i]) && !gpioUsed(Analog_UxI[I2][i]))
len += snprintf(buffer + len, sizeof(buffer) - len, ", I2(%d)", Analog_UxI[I2][i]);
break;
case U2: // 4
if (IS_ADC1_GPIO(Analog_UxI[U2][i]) && !gpioUsed(Analog_UxI[U2][i]))
len += snprintf(buffer + len, sizeof(buffer) - len, ", U2(%d)", Analog_UxI[U2][i]);
break;
case I3: // 5
if (IS_ADC1_GPIO(Analog_UxI[I3][i]) && !gpioUsed(Analog_UxI[I3][i]))
len += snprintf(buffer + len, sizeof(buffer) - len, ", I3(%d)", Analog_UxI[I3][i]);
break;
case U3: // 6
if (IS_ADC1_GPIO(Analog_UxI[U3][i]) && !gpioUsed(Analog_UxI[U3][i]))
len += snprintf(buffer + len, sizeof(buffer) - len, ", U3(%d)", Analog_UxI[U3][i]);
break;
default:
break; // ce cas ne devrait pas se présenter si les groupes de gpio sont bien défini
}
}
len += snprintf(buffer + len, sizeof(buffer) - len, "</option>\n");
}
if (strlen(buffer)) return String(buffer);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("booting");
Serial.println((sizeof(Analog_UxI) / sizeof(Analog_UxI[0])));
Serial.println(sendPlaceHolder_GPIOUxI());
Serial.println("End !");
}
void loop() {
delay(100); // this speeds up the simulation
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4