久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機驅(qū)動sg90舵機程序問題
[打印本頁]
作者:
363249
時間:
2020-3-2 09:31
標題:
單片機驅(qū)動sg90舵機程序問題
t = 0.5ms——————-舵機會轉(zhuǎn)動 0 °
t = 1.0ms——————-舵機會轉(zhuǎn)動 45°
t = 1.5ms——————-舵機會轉(zhuǎn)動 90°
t = 2.0ms——————-舵機會轉(zhuǎn)動 135°
t = 2.5ms——————-舵機會轉(zhuǎn)動180
// 為什么只能轉(zhuǎn)一次后面有程序為什么不執(zhí)行?
// delayus2x(245); 這個245值是怎么算出來的?
#include<reg52.h>
sbit a=P1^0;
#define uchar unsigned char
#define uint unsigned int
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delayus2x(unsigned char t)
{
while(--t);
}
void delay500us()
{
delayus2x(245); // 245
}
void delay2500us()
{
delayus2x(245);
delayus2x(245);
delayus2x(245);
delayus2x(245);
delayus2x(245);
delayus2x(245);
}
void main()
{
while(1)
{
uint i=50;
while(--i)
{
a=1;
delay500us(); // 轉(zhuǎn)0度 為什么換成 delay2500us(); 也是轉(zhuǎn)一下 不執(zhí)行下面的程序
a=0;
delay(1000);
a=1;
delay2500us(); // 轉(zhuǎn)180度 這里明明還有動作
a=0;
delay(1000);
a=1;
delay500us(); // 轉(zhuǎn)0度
a=0;
delay(1000);
a=1;
delay2500us(); // 轉(zhuǎn)180度
a=0;
delay(1000);
}
}
}
作者:
f556
時間:
2020-3-2 11:31
舵機驅(qū)動原理是:20ms中高電平占多少,對應多少角度,不是發(fā)一個脈沖就能到位的,原則上是發(fā)多個相同的脈沖,到了相應角度,舵機停在此角度,如果有外力破壞了此角度,它能重新修正到此角度。
“多個相同的脈沖”是關鍵。或者說反復、重復一直發(fā)脈沖。
你 while(--i)
{
中是只有一個脈沖的做法,思路需重理
作者:
sea_blue
時間:
2020-3-2 11:40
這個是模擬舵機,需要總寬度為20ms的占空比連續(xù)信號。
作者:
之一知足
時間:
2020-3-2 11:45
這是我當時寫的一個簡單的51定時器輸出PWM方式控制三個舵機按順序依次旋轉(zhuǎn)。你可以借鑒下,不推薦用延遲函數(shù)的方式去控制舵機
#include "reg51.h"//此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16;//對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;
sbit KEY=P3^1;//控制按鍵
sbit Servo_1=P2^0;//舵機輸出
sbit Servo_2=P2^1;//舵機輸出
sbit Servo_3=P2^2;//舵機輸出
u16 Servo_PWM1,Servo_PWM2,Servo_PWM3;//三個舵機的PWM值
//PWM:5-22
//對應0-180°
#define LOW 5
#define HIGH 22
u8 Flag_step;//舵機動作步驟
bit start;//隨著按鍵按下開始動作
void delay_ms(u16 j) //j=1,1ms
{
u8 i=250;
for(;j>0;j--)
{
while(--i);
i=249;
while(--i);
i=250;
}
}
void step(void)//舵機動作
{
if(start==1)//按鍵按下,標志位置1,滿足條件進入if()
{
if(Flag_step==1)//第一步
{
Servo_PWM1=HIGH;//一舵機轉(zhuǎn)到180
delay_ms(500);//延時一段時間,根據(jù)需求更改時間,靈活可調(diào)
Flag_step=2; //下一步
}
if(Flag_step==2)//第二步
{
Servo_PWM1=LOW;//一舵機轉(zhuǎn)到0
delay_ms(500);//延時一段時間
Flag_step=3;//下同,分別是二三舵機動作
}
if(Flag_step==3)
{
Servo_PWM2=HIGH;
delay_ms(500);
Flag_step=4;
}
if(Flag_step==4)
{
Servo_PWM2=LOW;
delay_ms(500);
Flag_step=5;
}
if(Flag_step==5)
{
Servo_PWM3=HIGH;
delay_ms(500);
Flag_step=6;
}
if(Flag_step==6)
{
Servo_PWM3=LOW;
delay_ms(500);
Flag_step=1;//形成一個循環(huán),回到第一步
start=0;//將標志位置0,等待下一次按鍵按下,將標志位置1,重新開始一周期
}
}
}
/*******************************************************************************
* 函 數(shù) 名 : Timer1Init
* 函數(shù)功能 : 定時器1初始化
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Timer1Init()
{
TMOD|=0X10;//選擇為定時器1模式,工作方式1,僅用TR1打開啟動。
TH1=0XFF; //給定時器賦初值,定時0.1ms
TL1=0X9C;
ET1=1;//打開定時器1中斷允許
EA=1;//打開總中斷
TR1=1;//打開定時器
}
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
Timer1Init();//定時器1初始化
start=0;//初始狀態(tài)舵機不動作
Flag_step=1;//初始第一步
Servo_PWM1=5;//將三個舵機初始化成0°位置
Servo_PWM2=5;
Servo_PWM3=5;
while(1)
{
if(KEY==0)//按鍵按下
{
start=~start;//重新開始一個周期
while(!KEY);//等待按鍵松開
}
step();//舵機動作
}
}
/*******************************************************************************
* 函 數(shù) 名 : void Timer1() interrupt 3
* 函數(shù)功能 : 定時器0中斷函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Timer1() interrupt 3
{
static u16 t;
TH1=0XFF; //給定時器賦初值,定時0.1ms
TL1=0X9C;
t++;
//根據(jù)改變Servo_PWM1內(nèi)容,改變占空比,從而達到控制舵機達到不同的角度
//———— ————
// —————— ————————.......
if(t<Servo_PWM1)Servo_1=1;//高電平輸出
if(t>=Servo_PWM1)Servo_1=0;//低電平輸出
if(t<Servo_PWM2)Servo_2=1;
if(t>=Servo_PWM2)Servo_2=0;
if(t<Servo_PWM3)Servo_3=1;
if(t>=Servo_PWM3)Servo_3=0;
if(t>200)t=0;//舵機控制頻率50HZ,200*0.1=20ms
}
作者:
黎明初至
時間:
2020-3-2 15:49
舵機不是直流電機,給電即走,他是通過脈沖占空比來驅(qū)動的。
作者:
lovexulu
時間:
2020-3-2 22:33
先仔細了解一下舵機驅(qū)動原理吧,你這個代碼驅(qū)動不了的。另外延遲函數(shù)1個就夠了,搞那么多延遲干嘛呢。
作者:
haierzaifei11
時間:
2020-3-4 15:33
先仔細了解一下舵機驅(qū)動原理吧,你這個代碼驅(qū)動不了的。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美日韩视频网站
|
一区二区三
|
青春草国产
|
中文字幕国产日韩
|
国产精品精品
|
91资源在线观看
|
中文字幕高清av
|
天堂va在线
|
国产免费看
|
久久精品av
|
国产成人在线视频免费观看
|
欧美女优在线观看
|
亚洲成年影院
|
日本精品一区二区三区在线观看视频
|
婷婷久久五月天
|
欧美一区二区三区在线观看
|
国产在线观看一区二区
|
亚洲欧美国产毛片在线
|
久久久蜜桃
|
久久久久久国产精品免费免费男同
|
你懂的在线视频播放
|
亚洲一区视频在线
|
久久99这里只有精品
|
黄色一级网
|
国产精品夜夜春夜夜爽久久电影
|
中文字幕av免费
|
成年人网站国产
|
伊人网站在线观看
|
一区二区三区视频播放
|
国产美女自拍视频
|
毛片a级毛片免费播放100
|
在线播放国产一区二区三区
|
欧美日韩精品影院
|
av中文在线观看
|
中文字幕一区二区三区四区
|
日韩五月天
|
成人av播放
|
午夜网
|
日韩一区二区免费视频
|
av国产精品
|
成人欧美一区二区
|