Paso 3: Implementación del controlador
Consideraciones generales:
Esto es para Tambient > 0° C sólo. Echa un vistazo en la Hoja de datos de MCP9008 .
Si lo necesita también en la escala de temperatura negativo entonces tienes que hacer algunas transformaciones adicionales como se almacenan los datos de temperatura en la temperatura ambiente de 16-bit, sólo registrarse Ta como datos de 13 bits en formato de complemento de dos.
Como MCP9808 tiene una interfaz compatible compatible I2C, construcción de un controlador para en NodeMCU es un proceso adelante straigh bonita:
1. Inicio de I2C bus o interfaz
dev_addr = 0x1F, init = function (self, sda, scl) self.id = 0 i2c.setup(self.id, sda, scl, i2c.SLOW) end
2. lectura / escritura de la ubicación del registro deseado
Leer Función de registro
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
Leer Función de la temperatura
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