Dozingfiretruck 3 лет назад
Родитель
Сommit
d83df4aec0
1 измененных файлов с 69 добавлено и 0 удалено
  1. 69 0
      script/libs/ec11.lua

+ 69 - 0
script/libs/ec11.lua

@@ -0,0 +1,69 @@
+--[[
+@module ec11
+@summary ec11 编码器驱动(一定一脉冲)
+@version 1.0
+@date    2023.03.27
+@author  Dozingfiretruck
+@usage
+-- 用法实例
+local ec11 = require("ec11")
+
+local GPIO_A = pin.PB02
+local GPIO_B = pin.PB05
+ec11.init(GPIO_A,GPIO_B)
+local count = 0
+local function EC11CallBack(direction)
+    if direction == "left" then
+        count = count - 1
+    else
+        count = count + 1
+    end
+    print(direction,count)
+end
+
+sys.subscribe("EC11",EC11CallBack)
+]]
+
+
+local ec11 = {}
+local sys = require "sys"
+
+local A = false
+local B = false
+
+--[[
+ec11
+@api ec11.init(GPIO_A,GPIO_B)
+@number GPIO_A A引脚
+@number GPIO_B B引脚
+@usage
+ec11.init(0)
+]]
+function ec11.init(GPIO_A,GPIO_B)
+    gpio.debounce(GPIO_A, 10)
+    gpio.debounce(GPIO_B, 10)
+
+    gpio.setup(GPIO_A, function()
+        if B then
+            sys.publish("EC11","left")
+            A = false
+            B = false
+        else
+            A = true
+        end
+    end,gpio.PULLUP,gpio.FALLING)
+
+    gpio.setup(GPIO_B, function()
+        if A then
+            sys.publish("EC11","right")
+            A = false
+            B = false
+        else
+            B = true
+        end
+    end,gpio.PULLUP,gpio.FALLING)
+end
+
+return ec11
+
+