合宙Air101+蓝牙模块,实现手机控制舵机转动
Posted 一剃解千愁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合宙Air101+蓝牙模块,实现手机控制舵机转动相关的知识,希望对你有一定的参考价值。
器材:蓝牙模块JDY33,合宙Air101
接线:JDY33的串口接Air101的串口1,TX——U1_RX(PB_07),RX——U1_TX(PB_06)
舵机信号线接Air101PWM0(PB_00)
main.lua:
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = 'helloworld'
VERSION = '1.0.0'
-- 引入必要的库文件(lua编写), 内部库不需要require
local sys = require 'sys'
log.info('main', 'hello world')
print(_VERSION)
if wdt then
--添加硬狗防止程序卡死,在支持的设备上启用这个功能
wdt.init(15000)--初始化watchdog设置为15s
sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
end
uart.setup(1,9600)--设置串口1的波特率为9600
uart.on(1,"receive",function(id,len)--打开串口1的回调函数,当串口1收到数据会自动调function函数
local rec_data=uart.read(id,len)--将串口收到的数据读出
local Number=tonumber(rec_data)--将读到的字符串转化为数子,Number为转动角度0-180,
if Number~=nil then
print("开发板收到来自手机的数据:",Number)--通过串口0打印在屏幕
uart.write(id,"开发板已收到!")--发送数据给手机,告知手机已经收到数据
pwm.open(0,50,0.0555*Number+2.5,0,100)--1/18约0.0555
else
print("数据有误")--通过默认串口0打印在屏幕
end
end)
--sys.timerLoopStart(print,3000,"test")--函数变量名,函数执行周期,函数需要传入的形参
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
结论与分析:
比stm32简单,主要调用4个函数
1,开启设置串口
uart.setup(1,9600)--设置串口1的波特率为9600
2,设置串口回调函数,类似stm32的中断服务函数
uart.on(1,"receive",function(id,len)--打开串口1的回调函数,当串口1收到数据会自动调function函数
end)
3,将手机发送过来的字符串传化为字符
local rec_data=uart.read(id,len)--将串口收到的数据读出
local Number=tonumber(rec_data)--将读到的字符串转化为数子,Number为转动角度0-180,
4,在回调函数里设置PWM,通过控制占空比来控制舵机
pwm.open(0,50,0.0555*Number+2.5,0,100)--1/18约0.0555
以上是关于合宙Air101+蓝牙模块,实现手机控制舵机转动的主要内容,如果未能解决你的问题,请参考以下文章