生活随笔
收集整理的這篇文章主要介紹了
四轮循迹小车基础程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?本程序硬件使用:
MCU:STC12系列單片機驅動:LM298模塊傳感器:四組光電對管傳感器,使用數字輸出端電機:直流減速電機。采用兩側驅動方式
#include "STC12C5A60S2.H"// 該小車使用LM298模塊驅動兩側直流電機
// LM298控制端 端口映射
sbit ENA=P0^0; //使能端A
sbit ENB=P0^1; //使能端B
sbit IN1=P1^0; //四個控制端
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;// 尋跡光電對管數字輸出端 端口映射
// 車頭部 共計4個光電對管
sbit LeftOutside=P2^0; //左外側
sbit LeftInside=P2^1; //左內測
sbit RightINside=P2^2; //右內測
sbit RightOutside=P2^3; //右外側// 兩側電機工作狀態宏定義
#define LeftWork {ENA=1;IN1=1;IN2=0;} //左側前進
#define RightWork {ENB=1;IN3=3;IN4=0;} //右側前進
#define LeftStop {ENA=0;IN1=0;IN2=0;} //左側停止
#define RightStop {ENB=0;IN3=0;IN4=0;} //右側停止
#define LeftBack {ENA=1;IN1=0;IN2=1;} //左側后腿
#define RightBack {ENB=1;IN1=0;IN2=1;} //右側停止//整車工作狀態函數void Forward(){ //前進LeftWork;RightWork;
}void Stop(){ //停止LeftStop;RightStop;
}void LeftTurnHigh(){ //左轉彎 大彎,LeftStop;RightWork;
}void RightTurnHigh(){ //右轉彎 大彎LeftWork;RightStop;
}void LeftTurnLow(){ //左轉彎 小彎LeftBack;RightWork;
}void RightTurnLow(){ //右轉彎 小彎LeftWork;RightBack;
}// 主函數
void main(){unsigned char StateFlag=0; //工作狀態標志位unsigned char SensorFlag=0; //傳感器狀態標志位// StateFlag 0 沒有飛出風險// 1 右飛出風險// 2 左飛出風險while(1){SensorFlag=P2 & 0x0f; //讀取傳感器狀態switch (SensorFlag){// 全白case 0x00: { if (StateFlag==1) LeftTurnLow();else if(StateFlag==2) RightTurnLow();else if(StateFlag==0) Forward();break;}// 左外壓黑線case 0x01: {LeftTurnLow();StateFlag=1;break;}// 左內壓黑線case 0x02: {LeftTurnHigh();StateFlag=0;break;}// 左內外都壓黑線case 0x03: {LeftTurnHigh();StateFlag=0;break;}// 右內壓黑線case 0x04: {RightTurnHigh();StateFlag=0;break;}// 右內外都壓黑線case 0x0c: {RightTurnHigh();StateFlag=0;break;}// 右外壓黑線case 0x08: {RightTurnLow();StateFlag=2;break;}// 其余狀態停車case 0x0f: {Stop();break;}} }
}
總結
以上是生活随笔為你收集整理的四轮循迹小车基础程序的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。