#include #include #define MCP3428_ADDRESS 0x68 // Adresse I2C du MCP3428 #define VREFMCP 0.0000625// Tension de référence en volt // Définir les broches const int CS_PIN = 53; const float VREF = 1.36; // Référence de tension //0.253 //ref1 = 0.507 //Vref=0.589 // Initialisation void setup() { Serial.begin(9600); SPI.begin(); pinMode(CS_PIN, OUTPUT); digitalWrite(CS_PIN, HIGH); // Désactive le CS au démarrage Serial.println(" initialisé et prêt à tester."); } byte getChannelConfigByte(int channel) { byte configByte = 0x88; // Configuration par défaut pour le canal 1 if (channel == 1) { configByte = 0xA8; } else if (channel == 2) { configByte = 0xC8; } else if (channel == 3) { configByte = 0xE8; } return configByte; } float MCP3428_Read(uint8_t channel) { Wire.beginTransmission(MCP3428_ADDRESS); Wire.write(getChannelConfigByte(channel)); Wire.endTransmission(); delay(200); byte config,byte1,byte2; while(1){ Wire.requestFrom(MCP3428_ADDRESS, 3); byte2 = Wire.read(); byte1 = Wire.read(); config = Wire.read(); if(config>>8==0) //tant qu'il a pas fini break; } int value = ((byte2) << 8) | byte1; Serial.print(value); return ((float)value * 62.5)/1000000; } float lireADS8345(uint8_t channel) { // Préparer les données pour la commande de lecture uint8_t commandHigh = 0xC0 | ((channel & 0x07) << 3); digitalWrite(CS_PIN, LOW); // Activer le CS switch(channel){ case 0: SPI.transfer(0b10000111); // Envoyer la première partie de la commande break; case 1: SPI.transfer(0b11000111); // Envoyer la première partie de la commande break; case 2: SPI.transfer(0b10010111); // Envoyer la première partie de la commande break; case 3: SPI.transfer(0b11010111); // Envoyer la première partie de la commande break; case 4: SPI.transfer(0b10100111); // Envoyer la première partie de la commande break; case 5: SPI.transfer(0b11100111); // Envoyer la première partie de la commande break; case 6: SPI.transfer(0b10110111); // Envoyer la première partie de la commande break; case 7: SPI.transfer(0b11110111); // Envoyer la première partie de la commande break; } delay(10); // Attendre un peu pour la stabilisation du signal uint8_t resultHigh = SPI.transfer(0x00); // Lire la première partie du résultat uint8_t resultLow = SPI.transfer(0x00); // Lire la seconde partie du résultat digitalWrite(CS_PIN, HIGH); // Désactiver le CS // Combiner les parties haute et basse du résultat uint16_t valeur = (resultHigh << 8) | resultLow; float tension = ((valeur&0x3FFF)/16384.0)*VREF; return tension; } void loop() { int i = 0; //for (i =0; i<4;i++){ /*float tension = lireADS8345(i); //Serial.print(i); Serial.print(" Tension: "); Serial.print(tension, 3); // Affiche la tension avec 3 décimales Serial.print(" V "); */ float tension = lecture(i); Serial.print(" "); Serial.print(i); Serial.print(" Tension: "); Serial.print(tension, 10); // Affiche la tension avec 3 décimales Serial.println(" V"); delay(1000); // Attendre 1 seconde avant la prochaine lecture //} } /* salé 9760 */ /* OUT1 REF1 FIX OUT2 FIX V+ V- OUT3 V+_OUT V-_OUT 0 Tension: 0.438 V 1 Tension: 0.506 V 2 Tension: 0.291 V 3 Tension: 0.329 V 4 Tension: 0.343 V 5 Tension: 0.348 V 6 Tension: 0.296 V 7 Tension: 0.164 V */