From d8e7fc777eceb044e1c2ad36fb3f561baf4100a9 Mon Sep 17 00:00:00 2001 From: HuangRui Date: Mon, 8 Dec 2014 23:39:55 +0800 Subject: [PATCH] * Renamed 18b20.lua to ds18b20.lua + Add ds18b20.CN.md --- modules/ds18b20.CN.md | 139 +++++++++++++++++++++++++++++ modules/{18b20.lua => ds18b20.lua} | 2 + 2 files changed, 141 insertions(+) create mode 100644 modules/ds18b20.CN.md rename modules/{18b20.lua => ds18b20.lua} (99%) diff --git a/modules/ds18b20.CN.md b/modules/ds18b20.CN.md new file mode 100644 index 00000000..0ad302a3 --- /dev/null +++ b/modules/ds18b20.CN.md @@ -0,0 +1,139 @@ +#DS18B20 模块 +##引用 + +ds18b20 = require("ds18b20") + +##常量 +C, F, K + + +##setup() +####描述 +设置DS18B20所在的Pin。
+ +####语法 +setup(pin) + +####参数 +pin: 1~10, IO 编号。如果参数为nil,会自动设定为9(GPIO2).
+ +####返回值 +nil + +####示例 +```lua +ds18b20 = require("ds18b20") +ds18b20.setup(9) +``` + +####参见 +**-** []() + + + +## addrs() +####描述 +返回单总线上所有DS18B20器件的地址列表(table)。如果没有执行过setup(pin),则会自动对引脚9(GPIO2)进行单总线模式初始化。
+ +####语法 +addrs() + +####参数 +nil +####返回值 +addrs: 返回包含单总线上所有DS18B20器件的地址列表(table)。其中地址是字符串类型(String)。如果失败则返回nil.
+ +####示例 +```lua +ds18b20 = require("ds18b20") +ds18b20.setup(9) +addrs = ds18b20.addrs() +if (addrs ~= nil) then + print("Total DS18B20 sensors: "..table.getn(addrs)) +end +``` + +####参见 +**-** []() + + + +## readNumber() +####描述 +读取温度数值。如果没有执行过setup(pin),则会自动对引脚9(GPIO2)进行单总线模式初始化。
+ +####语法 +readNumber(addr, unit) + +####参数 +addr: 字符串, DS18B20地址。 如果该参数为nil,会自动选择第一个发现的地址。
+unit: 单位转换,只接受常量C(摄氏度),F(华氏度), K(开氏度)。如果该参数为nil,会自动选择常量C(摄氏度) 。
+ +####返回值 +t1: 数值,温度的整数部分。如果读取失败返回nil.
+t2: 数值,温度的小数部分。如果读取失败返回nil.
+ +####示例 +```lua +t=require("ds18b20") +t.setup(9) +addrs=t.addrs() +-- Total DS18B20 numbers, assume it is 2 +print(table.getn(addrs)) +-- The first DS18B20 +print(t.readNumber(addrs[1],t.C)) +print(t.readNumber(addrs[1],t.F)) +print(t.readNumber(addrs[1],t.K)) +-- The second DS18B20 +print(t.readNumber(addrs[2],t.C)) +print(t.readNumber(addrs[2],t.F)) +print(t.readNumber(addrs[2],t.K)) +-- Just read +print(t.readNumber()) +-- Just read as fahrenheit +print(t.readNumber(nil,t.F)) +-- Read as values +t1, t2 = t.readNumber() +``` +####参见 +**-** []() + + +## read() +####描述 +读取温度字符串。如果没有执行过setup(pin),则会自动对引脚9(GPIO2)进行单总线模式初始化。
+ +####语法 +read(addr, unit) + +####参数 +addr: 字符串, DS18B20地址。 如果该参数为nil,会自动选择第一个发现的地址。
+unit: 单位转换,只接受常量C(摄氏度),F(华氏度), K(开氏度)。如果该参数为nil,会自动选择常量C(摄氏度) 。
+ +####返回值 +t: 字符串,表示成字符串形式的温度。如果读取失败返回nil.
+ +####示例 +```lua +t=require("ds18b20") +t.setup(9) +addrs=t.addrs() +-- Total DS18B20 numbers, assume it is 2 +print(table.getn(addrs)) +-- The first DS18B20 +print(t.read(addrs[1],t.C)) +print(t.read(addrs[1],t.F)) +print(t.read(addrs[1],t.K)) +-- The second DS18B20 +print(t.read(addrs[2],t.C)) +print(t.read(addrs[2],t.F)) +print(t.read(addrs[2],t.K)) +-- Just read +print(t.read()) +-- Just read as centigrade +print(t.read(nil,t.C)) + +``` +####参见 +**-** []() + diff --git a/modules/18b20.lua b/modules/ds18b20.lua similarity index 99% rename from modules/18b20.lua rename to modules/ds18b20.lua index a9503238..3857c941 100644 --- a/modules/18b20.lua +++ b/modules/ds18b20.lua @@ -102,6 +102,8 @@ function readNumber(addr, unit) t = (data:byte(1) + data:byte(2) * 256) * 1125 + 320000 elseif(unit == K) then t = (data:byte(1) + data:byte(2) * 256) * 625 + 2731500 + else + return nil end t1 = t / 10000 t2 = t % 10000