楼主有接线图么 |
为啥我的舵机到位置后要抖动一下 |
17875610146 发表于 2020-3-12 18:23 这是完整的源程序吗? 单片机源程序如下: #include<reg52.h> #include<stdio.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit Trig=P3^4; //控制端 sbit Echo=P3^5; //接收端 sbit led=P1^3; sbit servorControl =P1^3; //舵机的控制引脚 uchar flag=0; uchar control=5; uchar servorTime=0; unsigned char T0RH=0; unsigned char T0RL=0; void time_init() { EA=1; TMOD=0x11; TH0 = 0; TL0 = 0; } /////////////////////////////////////// void delay(uchar time){ //延迟函数 uchar i; for(;time>0;time--){ for(i=0;i<255;i++); } } //初始化定时器 void Delay_us(unsigned char t) { while(--t); } //大约延时t*2+5us 超声波模块用 ////////////////////////////////////// void timer0()interrupt 1 { TH0 = 0; TL0 = 0; } //中断程序 初始化赋值 重新计数 超声波模块用 计算时间 void main() { unsigned int time,distance; EA=1; ET0=1; ET1=1; TMOD=0x11; TH1=0xff; TL1=0x9c; servorTime=0; Trig=0; Echo=0; time_init(); while(1) { Trig=1; Delay_us(5); Trig=0; while(Echo==0); TR0=1; while(Echo); TR0=0; time=TH0*256+TL0; distance=(int)(time*0.017); //计算路程 单位为cm TH0=0; TL0=0; if(distance<30) //如果距离小于30cm 蜂鸣器响 { control=15; //使舵机向正摆动 servorTime=0; TR1=1; delay(200); delay(200); TR1=0; } else { control=5; //使舵机向右摆动 servorTime=0; TR1=1; delay(200); delay(200); TR1=0; delay(200); delay(200); } } } void T1_int(void) interrupt 3{ //产生舵机所需要的脉冲 TH1=0xff; TL1= 0x9c; servorTime++; if(servorTime<=control) servorControl=1; else servorControl=0; if(servorTime>=200) servorTime=0; } |
这是完整的源程序吗 |
17875610146 发表于 2020-3-12 18:23 单片机源程序如下: #include<reg52.h> #include<stdio.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit Trig=P3^4; //控制端 sbit Echo=P3^5; //接收端 sbit led=P1^3; sbit servorControl =P1^3; //舵机的控制引脚 uchar flag=0; uchar control=5; uchar servorTime=0; unsigned char T0RH=0; unsigned char T0RL=0; void time_init() { EA=1; TMOD=0x11; TH0 = 0; TL0 = 0; } /////////////////////////////////////// void delay(uchar time){ //延迟函数 uchar i; for(;time>0;time--){ for(i=0;i<255;i++); } } //初始化定时器 void Delay_us(unsigned char t) { while(--t); } //大约延时t*2+5us 超声波模块用 ////////////////////////////////////// void timer0()interrupt 1 { TH0 = 0; TL0 = 0; } //中断程序 初始化赋值 重新计数 超声波模块用 计算时间 void main() { unsigned int time,distance; EA=1; ET0=1; ET1=1; TMOD=0x11; TH1=0xff; TL1=0x9c; servorTime=0; Trig=0; Echo=0; time_init(); while(1) { Trig=1; Delay_us(5); Trig=0; while(Echo==0); TR0=1; while(Echo); TR0=0; time=TH0*256+TL0; distance=(int)(time*0.017); //计算路程 单位为cm TH0=0; TL0=0; if(distance<30) //如果距离小于30cm 蜂鸣器响 { control=15; //使舵机向正摆动 servorTime=0; TR1=1; delay(200); delay(200); TR1=0; } else { control=5; //使舵机向右摆动 servorTime=0; TR1=1; delay(200); delay(200); TR1=0; delay(200); delay(200); } } } void T1_int(void) interrupt 3{ //产生舵机所需要的脉冲 TH1=0xff; TL1= 0x9c; servorTime++; if(servorTime<=control) servorControl=1; else servorControl=0; if(servorTime>=200) servorTime=0; } |
17875610146 发表于 2020-3-12 18:23 想咨询 |
没有原理图吗,亲爱的楼主 |
楼主有红外控制舵机转向的吗 |
能不能让舵机返回原点前停顿3S呀??? |
请教下这个舵机是什么型号的? |
thanks for sharing |
高啊,感谢分享啊 |
感谢楼主的分享 |
arduino程序我也有大家需要我也可以放出来 |