Étape 3: Mise en œuvre pilote
Considérations générales:
Il s’agit de Tambiante > 0° C seulement. Jetez un oeil dans la Feuille de données MCP9008 .
Si vous en avez besoin également sur l’échelle de température négative alors que vous devez faire quelques transformations supplémentaires comme les données de température sont stockées à la température ambiante de 16 bits, inaltérable s’inscrire Ta sous 13 bits de données au format du complément à deux.
MCP9808 ayant une interface compatible compatible I2C, génération d’un pilote pour qu’il en NodeMCU c’est un processus assez straigh :
1. Init I2C interface/bus
dev_addr = 0x1F, init = function (self, sda, scl) self.id = 0 i2c.setup(self.id, sda, scl, i2c.SLOW) end
2. lecture / écriture à l’emplacement de Registre désiré
Lire Fonction de Registre
read_reg = function(self, dev_addr, reg_addr) i2c.start(self.id) i2c.address(self.id, dev_addr ,i2c.TRANSMITTER) i2c.write(self.id,reg_addr) i2c.stop(self.id) i2c.start(self.id) i2c.address(self.id, dev_addr,i2c.RECEIVER) c=i2c.read(self.id,2) i2c.stop(self.id) return c end
Lire Fonction de la température
readTemp = function(self) h, l = string.byte(self:read_reg(0x1F, 0x05), 1, 2) h1=bit.band(h,0x1F) --check if Ta > 0C or Ta<0C Sgn = bit.band(h,0x10) -- transform - CLEAR Sing BIT if Ta < 0C h2 = bit.band(h1,0x0F) tp = h2*16+l/16 --END calculate temperature for Ta > 0 return tp end