Variations de potentiomètres ne s'affichant pas sur le moniteur série

Bonsoir
Je souhaiterais, à l'aide d'une arduino méga, créer un montage qui retourne certaines valeurs selon la position de plusieurs potentiomètres. Un potentiomètre est censé faire varier un nombre de goutte compris entre 0 et 90. Un autre est censé faire varier une quantité d'ingrédient liquides entre 0 et 1000ml. 5 autres potentiomètres représentants des couleurs sont censés être reliés et varié entre eux selon un pourcentage entre 0 et 100%. Pareil pour d'autres potentiomètres représentants des ingrédients liquides à part qu'ils sont au nombre de sept.


Désolé de la complexité du schéma. Les potentiomètres représentants la quantité de couleur et la quantité d'ingrédient fonctionnent bien mais les valeurs des dix autres potentiomètres refusent de varier.

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);
}

J'ai changé le type de variable pour les ingrédients et couleurs, ainsi que dans les fonctions pour voir ce que le résultat donnerai dans le moniteur série mais toujours rien. Qu'est-ce qui ne vas pas selon vous ?

Cordialement

Tu n'aurais pas une breadboard dont les lignes d'alimentation sont coupées au milieu?
breadboard

Je crois que oui mais j'ai pris soin de relier les deux moitiés de chaque coté avec des fils même si ce n'est pas représenté sur le schéma

Au lieu d’être désolé et poster un truc inutilisable, prenez un crayon et une règle et faites le dessin d’un circuit un tant soit peu normalisé

Il y a aussi la possibilité que Frizing délivre ce schéma normalisé : il faut rechercher dans les menus.

Malgré tout, Fritzing ne sait pas se limiter aux traits uniquement verticaux ou horizontaux.
Pour avoir un schéma lisible, il faut retoucher à la main.

Finalement, on fait plus vite avec papier, stylo, règle et scan ou photo à la fin.

Pour tes difficultés, c'est probablement une erreur de câblage qui sera très difficile à détecter sur le montage complet.

Tu es en train d'apprendre qu'il ne faut pas aller trop vite.
À ta place, je n'aurais câblé les potentiomètres que par groupe de 2 ou 3 en vérifiant que cela fonctionne à chaque fois que j'ajoute un groupe.
L'intérêt est que si cela ne fonctionne pas, on sait que cela se passe dans le dernier groupe câblé.

Sans expérience, on pense que c'est perdre du temps.
Avec expérience, on sait que l'on va en gagner.

Pour être sûr, c'est la valeur des potentiomètres qui est mauvaises ou les résultats de tes calculs.
Parce qu'il y a quelques incohérences dans le code.
Par exemple:

  • quantiteCouleur est contrainte entre 0, 90
    rouge, vert, bleu, jaune et violet qui utilisent quantiteCouleur comme limite haute pour map() sont contraintes à 100
  • quantiteIngredient est contrainte entre 0, 1000
    ingredient1 à ingredient7 qui utilisent quantiteIngredient comme limite haute pour map() sont contraints à 100

Si c'est la valeur des potentiomètres qui est mauvaises, première chose à faire, vérifier le câblage; Les breadboards sont une calamité et elles sont pourries de mauvais contacts.
Faire tourner un programme simple qui lit les entrées analogiques en boucle et affiche les valeurs retournées dans la console.
Si le problème porte sur plusieurs entrées chercher le dénominateur commun (une ligne d'alimentation qui aurait un mauvais contact par exemple)

Bonjour,
@68tjs Est-ce des schémas comme ceci que l'on appelle "schémas normalisés" ?
Lire ou représenter un schéma électrique - Maxicours
image

Cordialement

oui c'est pas mal ça :slight_smile:
vous pouvez dessiner cela à a règle au crayon a papier sur une feuille et envoyer une photo de votre schéma

Oui c'est bien :smile:.

Des petits plus qui simplifient la lecture quand on peut le faire :

Le signal à traiter entre à gauche et sort à droite. Avec un microcontrôleur, ce n'est pas toujours facile à faire.
Pour simplifier la lecture du schéma, on omet souvent les fils d'alimentation que l'on remplace par des symboles masse et alim exemple :


Le dessin du bas qui est allégé, est plus compréhensible.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.