亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
藍(lán)牙控制進(jìn)入超聲波功能就出不來了是為什么 如果我要讓超聲波功停止case'3'要怎么定
[打印本頁(yè)]
作者:
121522121
時(shí)間:
2018-7-2 17:12
標(biāo)題:
藍(lán)牙控制進(jìn)入超聲波功能就出不來了是為什么 如果我要讓超聲波功停止case'3'要怎么定
#include<reg52.h>
#include <intrins.h>
sbit ina=P1^0;
sbit IN1=P1^1;
sbit IN2=P1^2;
sbit inb=P1^5;
sbit IN3=P1^3;
sbit IN4=P1^4;
sbit inc=P0^0;
sbit IN5=P0^1;
sbit IN6=P0^2;
sbit ind=P0^5;
sbit IN7=P0^3;
sbit IN8=P0^4;
sbit Sevro_moto_pwm = P2^7; //接舵機(jī)信號(hào)端輸入PWM信號(hào)調(diào)節(jié)速度
sbit ECHO=P0^7; //超聲波接口定義
sbit TRIG=P0^6; //超聲波接口定義
unsigned char pwm_val_left = 0;//變量定義
unsigned char push_val_left =14;//舵機(jī)歸中,產(chǎn)生約,1.5MS 信號(hào)
unsigned long S=0;
unsigned long S1=0;
unsigned long S2=0;
unsigned long S3=0;
unsigned long S4=0;
unsigned int time=0; //時(shí)間變量
unsigned int timer=0; //延時(shí)基準(zhǔn)變量
unsigned char timer1=0; //掃描時(shí)間變量
#define left_go {inc=1,IN5=1,IN6=0,inb=1,IN3=1,IN4=0;}//P1:0-3控制左邊 前
#define left_back {inc=1,IN5=0,IN6=1,inb=1,IN3=0,IN4=1;} //后
#define left_stop {inc=0,IN5=0,IN6=0,inb=0,IN3=0,IN4=0;} //停止
#define right_go {ina=1,IN1=1,IN2=0,ind=1,IN7=1,IN8=0;}//P1:4-7控制右邊
#define right_back {ina=1,IN1=0,IN2=1,ind=1,IN7=0,IN8=1;} //
#define right_stop {ina=0,IN1=0,IN2=0,ind=0,IN7=0,IN8=0;}
#define uchar unsigned char
#define uint unsigned int
void run();
void backrun();
void leftrun();
void rightrun();
void stoprun();
void delay(uchar time);
void init();
uchar flag,com;
void StartModule(void) //啟動(dòng)測(cè)距信號(hào)
{
TRIG=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TRIG=0;
}
void t0()
{
TMOD=0X01;
TH0=0;
TL0=0;
EA= 1;
}
void Conut(void) //計(jì)算距離
{
while(!ECHO); //當(dāng)RX為零時(shí)等待
TR0=1; //開啟計(jì)數(shù)
while(ECHO); //當(dāng)RX為1計(jì)數(shù)并等待
TR0=0; //關(guān)閉計(jì)數(shù)
time=TH0*256+TL0; //讀取脈寬長(zhǎng)度
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出來是CM
}
void COMM( void )
{
push_val_left=5; //舵機(jī)向左轉(zhuǎn)90度
timer=0;
while(timer<=4000); //延時(shí)400MS讓舵機(jī)轉(zhuǎn)到其位置
StartModule(); //啟動(dòng)超聲波測(cè)距
Conut(); //計(jì)算距離
S2=S;
push_val_left=23; //舵機(jī)向右轉(zhuǎn)90度
timer=0;
while(timer<=4000); //延時(shí)400MS讓舵機(jī)轉(zhuǎn)到其位置
StartModule(); //啟動(dòng)超聲波測(cè)距
Conut(); //計(jì)算距離
S4=S;
push_val_left=14; //舵機(jī)歸中
timer=0;
while(timer<=4000); //延時(shí)400MS讓舵機(jī)轉(zhuǎn)到其位置
StartModule(); //啟動(dòng)超聲波測(cè)距
Conut(); //計(jì)算距離
S1=S;
if((S2<20)||(S4<20)) //只要左右各有距離小于,20CM小車后退
{
backrun(); //后退
timer=0;
while(timer<=4000);
}
if(S2>S4)
{
rightrun(); //車的左邊比車的右邊距離小 右轉(zhuǎn)
timer=0;
while(timer<=4000);
}
else
{
leftrun(); //車的左邊比車的右邊距離大 左轉(zhuǎn)
timer=0;
while(timer<=4000);
}
}
void csb()
{
t0();
while(1) /*無(wú)限循環(huán)*/
{
if(timer>=1000) //100MS檢測(cè)啟動(dòng)檢測(cè)一次
{
timer=0;
StartModule(); //啟動(dòng)檢測(cè)
Conut(); //計(jì)算距離
if(S<20) //距離小于20CM
{
stoprun(); //小車停止
COMM(); //方向函數(shù)
}
else
if(S>30) //距離大于,30CM往前走
run();
}
}
}
void t2()
{
RCAP2H = (65536-100)/256;//晶振12M 60ms 16bit 自動(dòng)重載
RCAP2L = (65536-100)%256;
ET2=1; //打開定時(shí)器中斷
EA=1; //打開總中斷
TR2=1; //打開定時(shí)器開關(guān)
}
/*調(diào)節(jié)push_val_left的值改變電機(jī)轉(zhuǎn)速,占空比 */
void pwm_Servomoto(void)
{
if(pwm_val_left<=push_val_left)
Sevro_moto_pwm=1;
else
Sevro_moto_pwm=0;
if(pwm_val_left>=200)
pwm_val_left=0;
}
void TIM2(void) interrupt 5 using 1//定時(shí)器2中斷
{
RCAP2H = (65536-100)/256;//晶振12M 60ms 16bit 自動(dòng)重載
RCAP2L = (65536-100)%256;
timer++; //定時(shí)器100US為準(zhǔn)。在這個(gè)基礎(chǔ)上延時(shí)
pwm_val_left++;
pwm_Servomoto();
}
void lykz()
{
if(flag==1)
{
switch(com)
{
case 'A':
run();
break;
case 'B':
backrun();
break;
case 'C':
leftrun();
break;
case 'D':
rightrun();
break;
case 'E':
stoprun();
break;
default:
break;
}
}
}
void main()
{
init();
t2();
push_val_left=14; //舵機(jī)歸中
while(1)
{
lykz();
if(flag==1)
{
switch(com)
{
case '1':
csb();
break;
case '2':
lykz();
break ;
case '3':
break;
default:
break;
}
}
RI=1;
}
}
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
flag=0;
}
void run()
{
left_go;
right_go;
}
void backrun()
{
left_back;
right_back;
}
void leftrun()
{
left_back;
right_go;
}
void rightrun()
{
left_go;
right_back;
}
void stoprun()
{
left_stop;
right_stop;
}
void ser() interrupt 4
{
RI=0;
com=SBUF;
flag=1;
}
作者:
海盜船長(zhǎng)lyc
時(shí)間:
2018-7-2 18:35
棒,很有用
作者:
121522121
時(shí)間:
2018-7-2 21:50
海盜船長(zhǎng)lyc 發(fā)表于 2018-7-2 18:35
棒,很有用
這是錯(cuò)誤的
作者:
摟貓睡覺的魚
時(shí)間:
2018-7-2 22:49
1、不知道你的藍(lán)牙程序是什么,所以不好判斷錯(cuò)誤原因。建議:可以使用串口打印看你的藍(lán)牙發(fā)過來的是不是程序中所需要的值。2、看你的程序應(yīng)該使用的是HC-SR04,不太清楚這個(gè)超聲波模塊如何停止,如果你希望讓小車停止的話,可以判斷S的值,在大于0的情況下使小車不行動(dòng)。
作者:
1098981631
時(shí)間:
2018-7-3 20:00
這樣操作看起來太復(fù)雜了,感覺肯定有簡(jiǎn)便的方法,可惜我不知道。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1