Stap 3: Driver uitvoering
Algemene overwegingen:
Dit is voor Tambient > 0° C alleen. Neem een kijkje in het Gegevensblad van de MCP9008 .
Als je het nodig hebt ook op de schaal van de negatieve temperatuur vervolgens u nood voor verrichten sommige extra transformaties, zoals de temperatuur gegevens worden opgeslagen in de alleen-lezen omgevingstemperatuur voor de 16-bits inschrijven Ta als 13-bits gegevens in two's complement indeling.
Als MCP9808 een I2C compatibel compatibele interface heeft, is bouwen van een stuurprogramma voor het in de NodeMCU het een vrij simpel voorwaartse proces:
1. Init I2C bus/interface
dev_addr = 0x1F, init = function (self, sda, scl) self.id = 0 i2c.setup(self.id, sda, scl, i2c.SLOW) end
2. lezen / schrijven van/naar de locatie van de gewenste register
Lezen Functie registreren
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
Lezen Temperatuur functie
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