Aide sur voltmètre 4 diviseur de tention

le code fonctionne. Problème d’adresse au lieu d’utiliser les pin analogique A1 à A4
je fonctionne sur les pin A1, A2, A3, A6, . A4 et A5 sont utiliser pour I2C 24lc256

/tension 4 HUB USB (pin A6)/
il y a une erreur de calcul affichage sur LCD 55.1V

/*--------------------------------------------------------------
  Program:      voltmeter_LCD

  
Description: 4 canaux voltmètre DC avec des tensions affichées 
                 sur l'écran LCD à 1a décimale 
  
   Matériel: Arduino pro mini avec des diviseurs de tension sur A1, A2, A3, A6. 
                 4 x 16 LCD relié aux broches standards utilisés dans 
                 Exemple Arduino esquisse de IDE. 
                
   Logiciel: Développé en utilisant le logiciel Arduino 1.6.1 
                

   Date: 08/11/2015
--------------------------------------------------------------*/
#include <LiquidCrystal.h>

#define NUM_SAMPLES 10 // nombre d'échantillons analogiques à prendre par la lecture, par canal
#define V_REF    4.95 // valeurs d'étalonnage de diviseur de tension
/*Valeur de tension de référence ADC / calibration*/
#define DIV_A1 11.133
#define DIV_A2 11.133
#define DIV_A3 11.133
#define DIV_A6 11.133

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //Inclut la librairie LiquidCrystal pour le LCD
int sum[4] = {0};                // sommes d'échantillons prélevés
unsigned char sample_count = 0;  // taille de l'échantillon
float voltage[4] = {0.0};        // tensions calculées
char l_cnt = 0;                  // utilisé dans »pour« boucles
 
void setup()    // Initialisation
{
    lcd.begin(16, 4);    // Démarrer la librairie
 
 /*Message de bienvenue*/
 lcd.setCursor(0,00); //En haut à gauche (numéroté depuis 0)
 lcd.print("VOLTMETRE"); // Afficher un petit message
 lcd.setCursor(0,01);   //Ligne du bas
 lcd.print("V out MATERIEL");   // Afficher un petit message
 lcd.setCursor(0,02);   //Ligne du bas
 lcd.print("08/11/2015");   // Afficher un petit message
 
 delay(5000);  //intro de 5 secondes-
 
 lcd.setCursor(0,0);   //Ligne du bas
 lcd.print("               ");   //Effacer cette ligne
 lcd.setCursor(0,1);            
 lcd.print("               ");   //Effacer cette ligne
 lcd.setCursor(0,02);                      
 lcd.print("               ");   //Effacer cette ligne 
}

void loop()   // Fonction principale
{
  // prendre un certain nombre d'échantillons analogiques et de les additionner
    while (sample_count < NUM_SAMPLES) {
        // sample each channel A1, A2, A3, A6.
        for (l_cnt = 0; l_cnt < 4; l_cnt++) {
            sum[l_cnt] += analogRead(A1 + l_cnt);
        }
        sample_count++;
        delay(10);
    }
    // calculer la tension de chaque canal
    for (l_cnt = 0; l_cnt < 4; l_cnt++) {
        voltage[l_cnt] = ((float)sum[l_cnt] / (float)NUM_SAMPLES * V_REF) / 1024.0;
    }
    // tensions d'affichage sur l'écran LCD
    // chaque tension est multipliée par le réseau de résistances
    // facteur de division pour calculer la tension réelle
   /*tension 1 - CDD 1 (pin A1)*/
    lcd.setCursor(0, 0);
    lcd.print("CCD 1   | ");
    lcd.print(voltage[0] * DIV_A1, 1);
    lcd.print("V ");
    
    /*tension 2 - CCD 2 (pin A2)*/
    lcd.setCursor(0,1);
    lcd.print("CCD 2   | ");
    lcd.print(voltage[1] * DIV_A2, 1);
    lcd.print("V ");
    
    /*tension 3 - FOCUSER (pin A3)*/
    lcd.setCursor(0, 2);
    lcd.print("FOCUSER | ");
    lcd.print(voltage[2] * DIV_A3, 1);
    lcd.print("V ");
    
    /*tension 4 - HUB USB (pin A6)*/
    lcd.setCursor(0, 3);
    lcd.print("HUB USB | ");
    lcd.print(voltage[3] * DIV_A6, 1);
    lcd.print("V ");
      
    //réinitialiser le nombre et les montants
    sample_count = 0;
    for (l_cnt = 0; l_cnt < 4; l_cnt++) {
        sum[l_cnt] = 0;
    }
}

Bonjour,

Dans ta boucle de lecture tu lis A1,A2,A3,A4

Si tu veux lire A1,A2,A3,A6, le plus simple est de déclarer un tableau des entrées à lire

const int pinAna[]={A1,A2,A3,A6};

Puis d’accéder aux entrées via ce tableau

        for (l_cnt = 0; l_cnt < 4; l_cnt++) {
            sum[l_cnt] += analogRead(pinAna[l_cnt]);
        }

Super merci ça fonctionne :slight_smile: