Browse Source

update: w1_read_bit应直接切换到输入模式,不需要先拉高

采纳https://gitee.com/openLuat/LuatOS/issues/I8U1AG的意见, esp32c3和ec618验证ok
Wendal Chen 2 years ago
parent
commit
8bbffc403f

+ 1 - 1
components/onewire/src/luat_onewire.c

@@ -112,7 +112,7 @@ static uint8_t w1_read_bit(int pin){
   luat_gpio_mode(pin, Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, 0);
   luat_gpio_set(pin, Luat_GPIO_LOW);
   luat_timer_us_delay(2);
-  luat_gpio_set(pin, Luat_GPIO_HIGH);
+//   luat_gpio_set(pin, Luat_GPIO_HIGH);
   luat_gpio_mode(pin, Luat_GPIO_INPUT, Luat_GPIO_PULLUP, 0);
   data = (uint8_t)luat_gpio_get(pin);
   luat_timer_us_delay(60);

+ 21 - 0
demo/dht11/main.lua

@@ -0,0 +1,21 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "dht12"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+
+sys.taskInit(function()
+    local dht11_pin = 7
+    while 1 do
+        sys.wait(1000)
+        local h,t,r = sensor.dht1x(dht11_pin, true)
+        log.info("dht11", "湿度", h/100, "温度", t/100,r)
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 21 - 0
demo/ds18b20/main.lua

@@ -0,0 +1,21 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "dht12"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+
+sys.taskInit(function()
+    local ds18b20_pin = 8
+    while 1 do
+        sys.wait(1000)
+        local val,result = sensor.ds18b20(ds18b20_pin, true)
+        log.info("ds18b20", val,result)
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 5 - 2
luat/modules/luat_lib_sensor.c

@@ -5,6 +5,9 @@
 @version 1.0
 @date    2020.03.30
 @tag LUAT_USE_SENSOR
+@demo dht11
+@usage
+-- 请查阅demo/dht11 demo/ds18b20
 */
 #include "luat_base.h"
 #include "luat_timer.h"
@@ -59,7 +62,7 @@ static uint8_t w1_read_bit(int pin){
   luat_gpio_mode(pin, Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, 0);
   luat_gpio_set(pin, Luat_GPIO_LOW);
   luat_timer_us_delay(2);
-  luat_gpio_set(pin, Luat_GPIO_HIGH);
+  // luat_gpio_set(pin, Luat_GPIO_HIGH);
   luat_gpio_mode(pin, Luat_GPIO_INPUT, Luat_GPIO_PULLUP, 0);
   data = (uint8_t)luat_gpio_get(pin);
   luat_timer_us_delay(60);
@@ -206,7 +209,7 @@ static int32_t ds18b20_get_temperature(int pin, int32_t *val, int check_crc)
 
 /*
 获取DS18B20的温度数据
-@api    sensor.ds18b20(pin)
+@api    sensor.ds18b20(pin, check_crc)
 @int    gpio端口号
 @boolean 是否校验crc值,默认为true. 不校验crc值能提高读取成功的概率,但可能会读取到错误的值
 @return int 温度数据,单位0.1摄氏度,读取失败时返回错误码