| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- NE Fonctionne pas (a vérifier pour la lecture)
- 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;
- }
|