那位大神给段c语言控制舵机从0~180持续来回转动的程序,不胜感激

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了那位大神给段c语言控制舵机从0~180持续来回转动的程序,不胜感激相关的知识,希望对你有一定的参考价值。

希望程序不需要用按键,直接用软件控制。

参考技术A 180度舵机是一特殊的机器人专用舵机。你所说的0-180度,在专业玩家里不这样说的,而是说成±90度。即顺时针90度,逆时针90度。
你可以自己写一个的。这种舵机比较特殊,但是只要满足一下PWM就可以实现了:
1. 周期T=20ms(即50HZ),占空比500us-2500us。
2. 500us舵机逆时针转90度,2500us舵机顺时针转90读。 (其中0度是1500us)
3. 即: TL+TH=20ms 改变TH的值,舵机角度随之改变。参数参照以上1.2点。
TL TH
_____ ____
_________| |_________| | _________|
4. 电路原理很简单,接好电源,地,信号线。
信号线接到单片机或者其他能输出PWM的控制脚。本回答被提问者和网友采纳
参考技术B 回答

亲~这道题由我来回答,打字需要一点时间,还请您耐心等待一下~

180度舵机是一特殊的机器人专用舵机。你所说的0-180度,在专业玩家里不这样说的,而是说成±90度。即顺时针90度,逆时针90度。你可以自己写一个的。这种舵机比较特殊,但是只要满足一下PWM就可以实现了:1. 周期T=20ms(即50HZ),占空比500us-2500us。2. 500us舵机逆时针转90度,2500us舵机顺时针转90读。 (其中0度是1500us)3. 即: TL+TH=20ms 改变TH的值,舵机角度随之改变。参数参照以上1.2点。TL TH_____ _____________| |_________| | _________|4. 电路原理很简单,接好电源,地,信号线。信号线接到单片机或者其他能输出PWM的控制脚。

合宙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

以上是关于那位大神给段c语言控制舵机从0~180持续来回转动的程序,不胜感激的主要内容,如果未能解决你的问题,请参考以下文章

Arduino控制舵机

急求51单片机控制舵机C语言程序,舵机可以根据设定旋转任意角度!急求啊,大神帮帮忙!非常感谢!

Arduino控制舵机详解(含代码)

Raspberry Pi 4B 同步控制两个舵机 实现颜色跟踪

STM32CubeMX笔记--定时器生成PWM特定波形,控制舵机转动

单片机C语言控制舵机