360°舵机控制

Fronde ·
更新时间:2024-11-11
· 936 次阅读

在这里插入图片描述
360°舵机要如何控制它旋转:

1、控制信号是一种脉宽调制(PWM)信号,凡是微控制器能轻松的产生这种信号。在此文中,常用的Arduino开发环境下的微控制器。
2、 脉冲的高电平持续1到2毫秒(ms),也就是1000到2000微秒(µs)。在1000µs时,舵机左满舵。在2000µs时,右满舵。不过可以通过调整脉宽来实现更大或者更小范围内的运动。
3、控制脉冲的低电平持续20毫秒。每经过20毫秒(50次每秒),就要再次跳变为高电平,否则舵机就可能罢工,难以保持稳定。不过要是想让它一瘸一拐的跳舞,倒可以采取这种方法。

在这里插入图片描述

在这里插入图片描述

代码:
在这里插入图片描述

棕色----------------------GND
红-------------------------VCC
橙色----------------------信号线

在这里插入图片描述

#include #define uchar unsigned char #define uint unsigned int sbit pwm=P1^0; //信号输出 sbit k1=P3^1; //按键k1接P3^1,控制顺时针旋转 sbit k2=P3^2; //按键k2接P3^2,控制逆时针旋转 uchar count=0; uchar n=5; //初始位置-在0°附近 改变n值可以改变舵机的初始位置           //这个n值在不同的舵机可能存在一点误差,可以改变他的值来试试具体位置 void delay5ms() //延时5ms { unsigned char a,b; for(b=19;b>0;b--) for(a=130;a>0;a--); } void key()  //按键处理 { if(k1==0) { delay5ms(); if(k1==0) { while(k1==0); //判断当键盘松开时 if(n=6) n--; //判断是否旋转到0° else n=3; } } } void InitTimer()  // 定时器设置 0.1ms 11.0592Mhz { TMOD = 0x01; TH0 = 0xFF; TL0 = 0XA3; EA = 1; ET0 = 1; TR0 = 1; } void main() { InitTimer(); while(1) { key(); } } void Timer() interrupt 1 //特别注意此处,0--外部中断0,1--定时器中断0,2--外部中断1 {              //3--定时器中断1,4--串口中断1 TH0 = 0xFF; TL0 = 0xA3; count++; if(count<=200) { if(count<=n) { pwm=1; } else { pwm=0; } } else { count=0; pwm=0; } }

在这里插入图片描述


作者:James Bin



舵机

需要 登录 后方可回复, 如果你还没有账号请 注册新账号