1// The driver for DS18B20 chip, it is a temperature sensor. 2 3// Require libjs/lib/onewire.js module. 4import * as onewire from 'onewire' 5 6var DS18B20Dev; 7var start_flag = 0; 8 9/* 10 * prebuild: 11 * ./qjsc -c -m ../jsmodules/ds18b20.js -N jslib_ds18b20 -M onewire -o bytecode/jslib_ds18b20.c 12 * config DS18B20 13 * GPIO's options are configured in app.json. Specify the ID, e.g. GPIO below to init DS18B20. 14 { 15 "version": "1.0.0", 16 "io": { 17 "DS18B20": { 18 "type": "GPIO", 19 "port": 4, 20 "dir": "output", 21 "pull": "pullup" 22 } 23 }, 24 "debugLevel": "DEBUG" 25 } 26 27 */ 28export function init(gpioid) { 29 DS18B20Dev = onewire.open({id: gpioid}); 30} 31 32// Get temperature 33export function getTemperature() 34{ 35 var TL, TH; 36 var tem; 37 38 /* 39 { 40 DS18B20Dev.setspeed(1); 41 start_flag = 1; 42 } 43 44 DS18B20Dev.reset(); 45 46 DS18B20Dev.writeByte(0x55);*/ 47 48 if(1) 49 { 50 if(!start_flag) 51 { 52 DS18B20Dev.setspeed(1); 53 DS18B20Dev.reset(); 54 55 DS18B20Dev.writeByte(0xcc); 56 DS18B20Dev.writeByte(0x44); 57 58 start_flag = 1; 59 } 60 61 62 DS18B20Dev.reset(); 63 64 DS18B20Dev.writeByte(0xcc); 65 DS18B20Dev.writeByte(0xbe); 66 67 TL = DS18B20Dev.readByte(); /* LSB first */ 68 TH = DS18B20Dev.readByte(); 69 70 if (TH > 7) 71 { 72 TH =~ TH; 73 TL =~ TL; 74 tem = TH; 75 tem <<= 8; 76 tem += TL; 77 tem = (tem * 0.0625 * 10 + 0.5); 78 return -tem; 79 } 80 else 81 { 82 tem = TH; 83 tem <<= 8; 84 tem += TL; 85 tem = (tem * 0.0625 * 10 + 0.5); 86 return tem; 87 } 88 } 89 90} 91 92// De-init Si7006 93export function deinit() { 94 DS18B20Dev.close(); 95} 96