這是之前課程設計做的遙控小車,簡單的控制電機轉速使小車前進和后退,左轉右轉也是參考了網上別人的,有需要的可以看看,哪里有不足也請指出
ATMEGA168單片機+L298仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (32.32 KB, 下載次數: 47)
下載附件
2018-11-21 16:42 上傳
0.png (16.04 KB, 下載次數: 68)
下載附件
2018-11-21 16:42 上傳
單片機源碼:
int Foreward_key=2;//正轉按鈕
int Reverse_key=3;//反轉按鈕
int Stop_key=4;//停止按鈕
int Trunleft_key=0;//左轉按鈕
int Trunright_key=1;//右轉按鈕
int Foreward_led=5;//正轉指示燈
int Reverse_led=6;//反轉指示燈
int Stop_led=7;//停止指示燈
int pinI1=8;//定義電機1正轉接口
int pinI2=9;//定義電機1反轉接口
int pinI3=13;//定義電機2正轉接口
int pinI4=12;//定義電機2反轉接口
int speedpin=14;//定義EA(PWM調速)接口
int speedpin1=14;//定義EB(PWM調速)接口
void setup()
{
pinMode(Foreward_key,INPUT);
pinMode(Reverse_key,INPUT);
pinMode(Trunleft_key,INPUT);
pinMode(Trunright_key,INPUT);
pinMode(Stop_key,INPUT);
pinMode(Foreward_led,OUTPUT);
pinMode(Reverse_led,OUTPUT);
pinMode(Stop_led,OUTPUT);
pinMode(pinI1,OUTPUT);//定義該接口為輸出接口
pinMode(pinI2,OUTPUT);
pinMode(pinI3,OUTPUT);//定義該接口為輸出接口
pinMode(pinI4,OUTPUT);
pinMode(speedpin,OUTPUT);
pinMode(speedpin1,OUTPUT);
digitalWrite(Foreward_led,HIGH);
digitalWrite(Reverse_led,HIGH);
digitalWrite(Stop_led,HIGH);
}
void loop()
{
if(digitalRead(Foreward_key)==HIGH)//正轉
{
while(digitalRead(Foreward_key)==HIGH);
digitalWrite(Foreward_led,LOW);
digitalWrite(Reverse_led,HIGH);
digitalWrite(Stop_led,HIGH);
digitalWrite(pinI1,LOW);//使直流電機順時針轉
digitalWrite(pinI2,HIGH);
analogWrite(speedpin,100);
digitalWrite(pinI3,LOW);//使直流電機順時針轉
digitalWrite(pinI4,HIGH);
analogWrite(speedpin1,100);
}
if(digitalRead(Reverse_key)==HIGH)//反轉
{
while(digitalRead(Reverse_key)==HIGH);
digitalWrite(Foreward_led,HIGH);
digitalWrite(Reverse_led,LOW);
digitalWrite(Stop_led,HIGH);
digitalWrite(pinI1,HIGH);//使直流電機逆時針轉
digitalWrite(pinI2,LOW);
analogWrite(speedpin,100);
digitalWrite(pinI3,HIGH);//使直流電機逆時針轉
digitalWrite(pinI4,LOW);
analogWrite(speedpin1,100);
}
if(digitalRead(Stop_key)==HIGH)//停止
{
while(digitalRead(Stop_key)==HIGH);
digitalWrite(Foreward_led,HIGH);
digitalWrite(Reverse_led,HIGH);
digitalWrite(Stop_led,LOW);
digitalWrite(pinI1,LOW);//使直流電機逆時針轉
digitalWrite(pinI2,LOW);
analogWrite(speedpin,100);
digitalWrite(pinI3,LOW);//使直流電機逆時針轉
digitalWrite(pinI4,LOW);
analogWrite(speedpin1,100);
}
if(digitalRead(Trunleft_key)==HIGH)//左轉
{
while(digitalRead(Trunleft_key)==HIGH);
digitalWrite(Foreward_led,LOW);
digitalWrite(Reverse_led,HIGH);
digitalWrite(Stop_led,HIGH);
digitalWrite(pinI1,LOW);//使直流電機順時針轉
digitalWrite(pinI2,HIGH);
analogWrite(speedpin,100);
delay(120);
digitalWrite(pinI3,LOW);//使直流電機順時針轉
digitalWrite(pinI4,HIGH);
analogWrite(speedpin1,100);
}
if(digitalRead(Trunright_key)==HIGH)//右轉
{
while(digitalRead(Trunright_key)==HIGH);
digitalWrite(Foreward_led,LOW);
digitalWrite(Reverse_led,HIGH);
digitalWrite(Stop_led,HIGH);
digitalWrite(pinI3,LOW);//使直流電機順時針轉
digitalWrite(pinI4,HIGH);
analogWrite(speedpin1,100);
delay(120);
digitalWrite(pinI1,LOW);//使直流電機順時針轉
digitalWrite(pinI2,HIGH);
analogWrite(speedpin,100);
}
}
0.png (48.43 KB, 下載次數: 60)
下載附件
2018-11-21 16:42 上傳
全部資料51hei下載地址:
小車模擬.rar
(80.2 KB, 下載次數: 24)
2018-11-21 15:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|