Sketch Arduino pour lire la température du chip Melexis MLX90616 via le bus i2c (TWI).
Site du fabricant: MX90614
2014-01-27: Ce sketch ne fonctionne pas avec le nouvel Arduino DUE en raison d’un défaut d’implémentation de la librairie Wire.h !!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
/* Librairie Wire pour les communications I2C */ #include /* Adresse par défaut du capteur IR */ #define I2C_ADDR 0x5A /** Fonction setup() */ void setup() { /* Initialisation du port série (pour debug) */ Serial.begin(9600); Serial.println(F("setup")); /* Initialisation du bus I2C */ Wire.begin(); } /** Fonction loop() */ void loop() { /* Données brute de température */ uint16_t data; /* Commande de lecture de la RAM à l'adresse 0x07 */ Wire.beginTransmission(I2C_ADDR); Wire.write(0x07); Wire.endTransmission(false); /* Lecture des données : 1 mot sur 16 bits + octet de contrôle (PEC) */ Wire.requestFrom(I2C_ADDR, 3, true); while(Wire.available() < 3); data = Wire.read(); data |= Wire.read() << 8; // Le MSB signale une erreur (ignoré) Wire.read(); // PEC (ignoré) /* Calcul de la température */ float celsius = data * 0.02 - 273.15; // Température de l'objet en degré Celsius /* Affichage de la température */ Serial.print(F("Celsius: ")); Serial.println(celsius); /* Temps d'attente */ delay(1000); } |
Inspiré de Skyduino