Bonjour,
Je réalise un projet sur arduino M0 (équivalent à arduino Uno). Le but est de mesurer des tensions en utilisant le convertisseur analogique numérique ADS1115. Puis que j'ai plusieurs tensions à mesurer j'utilise donc plusieurs ADC en parallèle. Ici je vous donne l'exemple de code pour 3 ADC. Mon problème est que quand je lance le code, ça affiche rien sur le moniteur et je ne sais pas pourquoi.
Si quelqu'un peut m'aider ça serait génial
D'avance merci !
#include "ADS1X15.h" // Déclaration de la bibliothéque de l'ADC
// ************************************************ PIN DEFINITION
//----------- Définition des adresses de l'arduino -------------
#define PIN_ADC_ADRESS1 7 // Relier la sortie digitale 7 de l'arduino à l'adresse ADDR du premier ADC
#define PIN_ADC_ADRESS2 8
#define PIN_ADC_ADRESS3 9
// ************************************************ USER VAR DEFINITION
//----------- Définition des paramètres de l'ADC et variables de calcul -------------
#define ADC_GAIN 1 // Gain de l'ADC
#define ADC_MODE 1 // Mode de lecture de l'ADC
#define ADC_DATARATE 7 // Vitesse de lecture de l'ADC
ADS1115 ADS(0x49); // ADS1115 physiquement défini à l'adresse 0x49 i2c (VDD)
float U1, U2, U3, U4; // Valeur des tension en V
int16_t valeurA3, valeurA2, valeurA1, valeurA0;
//----------- fonction d'initialisation -------------
void ADC_INIT() {
ADS.begin();
ADS.setGain(ADC_GAIN);
ADS.setMode(ADC_MODE);
ADS.setDataRate(ADC_DATARATE);
ADS.readADC(0);
}
//----------- fontion de calcul-------------
void ADC_GETDATA(int ADC_PIN) {
digitalWrite(PIN_ADC_ADRESS1, LOW);
digitalWrite(PIN_ADC_ADRESS2, LOW);
digitalWrite(PIN_ADC_ADRESS3, LOW);
digitalWrite(ADC_PIN, HIGH); // Mettre à l'état haut (5V) l'ADC souhaité.
delay(10);
ADC_INIT();
valeurA3 = ADS.readADC(3);
valeurA2 = ADS.readADC(2);
valeurA1 = ADS.readADC(1);
valeurA0 = ADS.readADC(0);
// Conversion en volt
U1 = ADS.toVoltage(valeurA3);
U2 = ADS.toVoltage(valeurA2);
U3 = ADS.toVoltage(valeurA1);
U4 = ADS.toVoltage(valeurA0);
digitalWrite(ADC_PIN, LOW);
delay(10);
}
//----------- Fonction d'affichage -------------
void ADC_PRINTVALUE() { // fonction d'affichage
SerialUSB.println("Lecture de la tension U1 sur A3");
SerialUSB.println(U1, 4);
SerialUSB.println("Lecture de la tension U2 sur A2");
SerialUSB.println(U2, 4);
SerialUSB.println("Lecture de la tension U3 sur A1");
SerialUSB.println(U3, 4);
SerialUSB.println("Lecture de la tension U4 sur A0");
SerialUSB.println(U4, 4);
}
//----------- Fonction principale setup -------------
void setup() {
// définition des pins comme sortie
pinMode(PIN_ADC_ADRESS1, OUTPUT);
pinMode(PIN_ADC_ADRESS2, OUTPUT);
pinMode(PIN_ADC_ADRESS3, OUTPUT);
SerialUSB.begin(9600);
while (!SerialUSB);
}
//----------- Fonction loop-------------
void loop() {
// Appel des deux fonctions (calcul et affichage)
ADC_GETDATA(PIN_ADC_ADRESS1);
ADC_PRINTVALUE();
ADC_GETDATA(PIN_ADC_ADRESS2);
ADC_PRINTVALUE();
ADC_GETDATA(PIN_ADC_ADRESS3);
ADC_PRINTVALUE();
while (1); // Forcer le programme à s'arrêter
}