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

该博客介绍了使用Lua脚本来配置和控制蓝牙模块JDY33以及合宙Air101与舵机的交互。通过设置串口、接收手机数据、转化字符串并使用PWM控制舵机转动,实现远程控制。主要涉及lua编程、串口通信和PWM控制。
摘要由CSDN通过智能技术生成

器材:蓝牙模块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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值