合宙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+蓝牙模块,实现手机控制舵机转动的主要内容,如果未能解决你的问题,请参考以下文章

合宙Air101+蓝牙模块,实现手机控制舵机转动

合宙Air101产生PWM驱动舵机

合宙Air101产生PWM驱动舵机

合宙Air101产生PWM驱动舵机

使用合宙air101系统板DIY一个小船

使用合宙air101系统板DIY一个小船