Le but est de digitaliser ce code qui fonctionne avec des potentiomètres en les substituant par des sliders:
const byte pinPotQuantiteCouleur = A0;
const byte pinPotQuantiteIngredient = A1;
const byte pinPotRouge = A2;
const byte pinPotBleu = A3;
const byte pinPotJaune = A4;
const byte pinPotViolet = A5;
const byte pinPotGris = A6;
const byte pinPotIngredient1 = A7;
const byte pinPotIngredient2 = A8;
const byte pinPotIngredient3 = A9;
const byte pinPotIngredient4 = A10;
const byte pinPotIngredient5 = A11;
const byte pinPotIngredient6 = A12;
const byte pinPotIngredient7 = A13;
const int minPotQuantiteCouleur = 0;
const int maxPotQuantiteCouleur = 1023;
const int minPotQuantiteIngredient = 0;
const int maxPotQuantiteIngredient = 1023;
const int minPotRouge = 0;
const int maxPotRouge = 1023;
const int minPotBleu = 0;
const int maxPotBleu = 1023;
const int minPotJaune = 0;
const int maxPotJaune = 1023;
const int minPotViolet = 0;
const int maxPotViolet = 1023;
const int minPotGris = 0;
const int maxPotGris = 1023;
const int minPotIngredient1 = 0;
const int maxPotIngredient1 = 1023;
const int minPotIngredient2 = 0;
const int maxPotIngredient2 = 1023;
const int minPotIngredient3 = 0;
const int maxPotIngredient3 = 1023;
const int minPotIngredient4 = 0;
const int maxPotIngredient4 = 1023;
const int minPotIngredient5 = 0;
const int maxPotIngredient5 = 1023;
const int minPotIngredient6 = 0;
const int maxPotIngredient6 = 1023;
const int minPotIngredient7 = 0;
const int maxPotIngredient7 = 1023;
float ratio2(float nb3, float nb4,float nb5, float nb6, float nb7) {
if ((nb3 == 0) && (nb4 == 0) && (nb5 == 0) && (nb6 == 0) && (nb7 == 0)) return 0;
return (100.0 * nb3) / (nb3 + nb4 + nb5 + nb6 + nb7);
}
int ratio3(int nb8, int nb9, int nb10, int nb11, int nb12, int nb13, int nb14) {
if ((nb8 == 0) && (nb9 == 0)&& (nb10 == 0)&& (nb11 == 0)&& (nb12 == 0)&& (nb13 == 0)&& (nb14 == 0)) return 0;
return (100.0 * nb8) / (nb8 + nb9 + nb10 + nb11 + nb12 + nb13 + nb14);
}
void setup() {
Serial.begin(115200);
}
void loop() {
int quantiteCouleur = constrain(map(analogRead(pinPotQuantiteCouleur),minPotQuantiteCouleur,maxPotQuantiteCouleur,0,90),0,90);
int quantiteIngredient = constrain(map(analogRead(pinPotQuantiteIngredient),minPotQuantiteIngredient,maxPotQuantiteIngredient,0,1000),0,1000);
float rouge = constrain(map(analogRead(pinPotRouge), minPotRouge, maxPotRouge, 0, quantiteCouleur), 0, 100);
float bleu = constrain(map(analogRead(pinPotBleu), minPotBleu, maxPotBleu, 0, quantiteCouleur), 0, 100);
float jaune = constrain(map(analogRead(pinPotJaune), minPotJaune, maxPotJaune, 0, quantiteCouleur), 0, 100);
float violet = constrain(map(analogRead(pinPotViolet), minPotViolet, maxPotViolet, 0, quantiteCouleur), 0, 100);
float gris = constrain(map(analogRead(pinPotRouge), minPotRouge, maxPotRouge, 0, quantiteCouleur), 0, 100);
int ingredient1 = constrain(map(analogRead(pinPotIngredient1), minPotIngredient1, maxPotIngredient1, 0, quantiteIngredient), 0, 100);
int ingredient2 = constrain(map(analogRead(pinPotIngredient2), minPotIngredient2, maxPotIngredient2, 0, quantiteIngredient), 0, 100);
int ingredient3 = constrain(map(analogRead(pinPotIngredient3), minPotIngredient3, maxPotIngredient3, 0, quantiteIngredient), 0, 100);
int ingredient4 = constrain(map(analogRead(pinPotIngredient4), minPotIngredient4, maxPotIngredient4, 0, quantiteIngredient), 0, 100);
int ingredient5 = constrain(map(analogRead(pinPotIngredient5), minPotIngredient5, maxPotIngredient5, 0, quantiteIngredient), 0, 100);
int ingredient6 = constrain(map(analogRead(pinPotIngredient6), minPotIngredient6, maxPotIngredient6, 0, quantiteIngredient), 0, 100);
int ingredient7 = constrain(map(analogRead(pinPotIngredient7), minPotIngredient7, maxPotIngredient7, 0, quantiteIngredient), 0, 100);
Serial.print("Qte couleur:"); Serial.print(quantiteCouleur); Serial.print(" gouttes ");
Serial.print("Qte ingredient:"); Serial.print(quantiteIngredient); Serial.print("ml ");
Serial.print("rouge:"); Serial.print(ratio2(rouge, bleu, jaune, violet, gris)); Serial.print("% ");
Serial.print("bleu:"); Serial.print(ratio2(bleu, rouge, jaune, violet, gris)); Serial.print("% ");
Serial.print("jaune:"); Serial.print(ratio2(jaune, bleu, rouge, violet, gris)); Serial.print("% ");
Serial.print("violet:"); Serial.print(ratio2(violet, bleu, jaune, rouge, gris)); Serial.print("% ");
Serial.print("gris:"); Serial.print(ratio2(gris, bleu, jaune, violet, rouge)); Serial.print("% ");
Serial.print("ingredient1:"); Serial.print(ratio3(ingredient1, ingredient2, ingredient3, ingredient4, ingredient5, ingredient6, ingredient7)); Serial.print("% ");
Serial.print("ingredient2:"); Serial.print(ratio3(ingredient2, ingredient1, ingredient3, ingredient4, ingredient5, ingredient6, ingredient7)); Serial.println("% ");
Serial.print("ingredient3:"); Serial.print(ratio3(ingredient3, ingredient2, ingredient1, ingredient4, ingredient5, ingredient6, ingredient7)); Serial.print("% ");
Serial.print("ingredient4:"); Serial.print(ratio3(ingredient4, ingredient2, ingredient3, ingredient1, ingredient5, ingredient6, ingredient7)); Serial.print("% ");
Serial.print("ingredient5:"); Serial.print(ratio3(ingredient5, ingredient2, ingredient3, ingredient4, ingredient1, ingredient6, ingredient7)); Serial.print("% ");
Serial.print("ingredient6:"); Serial.print(ratio3(ingredient6, ingredient2, ingredient3, ingredient4, ingredient5, ingredient1, ingredient7)); Serial.print("% ");
Serial.print("ingredient7:"); Serial.print(ratio3(ingredient7, ingredient2, ingredient3, ingredient4, ingredient5, ingredient6, ingredient1)); Serial.println("% ");
delay(1000);
}
Je pourrais envisager de faire en sorte que le calcul des ratios se fasse au niveau de l'arduino mais à ce moment l'utilisateur ne verrai pas le ratio de couleur et d'ingrédient qu'il initialise. Le réglage doit être visible sur l'appli car l'arduino est destiné à la fin à être débranché du PC définitivement et donc séparé du moniteur série
Cordialement