|
用MEGA2560板
程式如下
//單純定義pin輸出,以及輸出的速度
int LmotorPin_A = 2;
int LmotorPin_AP = 3;
int LmotorPin_B = 4;
int LmotorPin_BP = 5;
int RmotorPin_A = 10;
int RmotorPin_AP = 11;
int RmotorPin_B = 12;
int RmotorPin_BP = 13;
int delayTime = 20;
int D0=22; // RF接收腳位 D0
int D1=23; // RF接收腳位 D1
int D3=21; // RF接收腳位 D3,中段接腳
int D4=20; // RF接收腳位 D4,中段接腳
byte i=0;
void forward() {
digitalWrite(LmotorPin_A, LOW);
digitalWrite(LmotorPin_AP,HIGH);
digitalWrite(LmotorPin_B, HIGH);
digitalWrite(LmotorPin_BP,LOW);
digitalWrite(RmotorPin_A, HIGH);
digitalWrite(RmotorPin_AP,LOW);
digitalWrite(RmotorPin_B, HIGH);
digitalWrite(RmotorPin_BP,LOW);
delay(delayTime);
digitalWrite(LmotorPin_A, LOW);
digitalWrite(LmotorPin_AP,HIGH);
digitalWrite(LmotorPin_B, LOW);
digitalWrite(LmotorPin_BP,HIGH);
digitalWrite(RmotorPin_A, HIGH);
digitalWrite(RmotorPin_AP,LOW);
digitalWrite(RmotorPin_B, LOW);
digitalWrite(RmotorPin_BP,HIGH);
delay(delayTime);
digitalWrite(LmotorPin_A, HIGH);
digitalWrite(LmotorPin_AP,LOW);
digitalWrite(LmotorPin_B, LOW);
digitalWrite(LmotorPin_BP,HIGH);
digitalWrite(RmotorPin_A, LOW);
digitalWrite(RmotorPin_AP,HIGH);
digitalWrite(RmotorPin_B, LOW);
digitalWrite(RmotorPin_BP,HIGH);
delay(delayTime);
digitalWrite(LmotorPin_A, HIGH);
digitalWrite(LmotorPin_AP,LOW);
digitalWrite(LmotorPin_B, HIGH);
digitalWrite(LmotorPin_BP,LOW);
digitalWrite(RmotorPin_A, LOW);
digitalWrite(RmotorPin_AP,HIGH);
digitalWrite(RmotorPin_B, HIGH);
digitalWrite(RmotorPin_BP,LOW);
delay(delayTime);
}
void backward() {
digitalWrite(LmotorPin_A, HIGH);
digitalWrite(LmotorPin_AP,LOW);
digitalWrite(LmotorPin_B, HIGH);
digitalWrite(LmotorPin_BP,LOW);
digitalWrite(RmotorPin_A, LOW);
digitalWrite(RmotorPin_AP,HIGH);
digitalWrite(RmotorPin_B, HIGH);
digitalWrite(RmotorPin_BP,LOW);
delay(delayTime);
digitalWrite(LmotorPin_A, HIGH);
digitalWrite(LmotorPin_AP,LOW);
digitalWrite(LmotorPin_B, LOW);
digitalWrite(LmotorPin_BP,HIGH);
digitalWrite(RmotorPin_A, LOW);
digitalWrite(RmotorPin_AP,HIGH);
digitalWrite(RmotorPin_B, LOW);
digitalWrite(RmotorPin_BP,HIGH);
delay(delayTime);
digitalWrite(LmotorPin_A, LOW);
digitalWrite(LmotorPin_AP,HIGH);
digitalWrite(LmotorPin_B, LOW);
digitalWrite(LmotorPin_BP,HIGH);
digitalWrite(RmotorPin_A, HIGH);
digitalWrite(RmotorPin_AP,LOW);
digitalWrite(RmotorPin_B, LOW);
digitalWrite(RmotorPin_BP,HIGH);
delay(delayTime);
digitalWrite(LmotorPin_A, LOW);
digitalWrite(LmotorPin_AP,HIGH);
digitalWrite(LmotorPin_B, HIGH);
digitalWrite(LmotorPin_BP,LOW);
digitalWrite(RmotorPin_A, HIGH);
digitalWrite(RmotorPin_AP,LOW);
digitalWrite(RmotorPin_B, HIGH);
digitalWrite(RmotorPin_BP,LOW);
delay(delayTime);
}
void turnLeft() { // 馬達轉向:左轉
digitalWrite(LmotorPin_A, LOW);
digitalWrite(LmotorPin_AP,HIGH);
digitalWrite(LmotorPin_B, HIGH);
digitalWrite(LmotorPin_BP,LOW);
digitalWrite(RmotorPin_A, LOW);
digitalWrite(RmotorPin_AP,HIGH);
digitalWrite(RmotorPin_B, HIGH);
digitalWrite(RmotorPin_BP,LOW);
delay(delayTime);
digitalWrite(LmotorPin_A, LOW);
digitalWrite(LmotorPin_AP,HIGH);
digitalWrite(LmotorPin_B, LOW);
digitalWrite(LmotorPin_BP,HIGH);
digitalWrite(RmotorPin_A, LOW);
digitalWrite(RmotorPin_AP,HIGH);
digitalWrite(RmotorPin_B, LOW);
digitalWrite(RmotorPin_BP,HIGH);
delay(delayTime);
digitalWrite(LmotorPin_A, HIGH);
digitalWrite(LmotorPin_AP,LOW);
digitalWrite(LmotorPin_B, LOW);
digitalWrite(LmotorPin_BP,HIGH);
digitalWrite(RmotorPin_A, HIGH);
digitalWrite(RmotorPin_AP,LOW);
digitalWrite(RmotorPin_B, LOW);
digitalWrite(RmotorPin_BP,HIGH);
delay(delayTime);
digitalWrite(LmotorPin_A, HIGH);
digitalWrite(LmotorPin_AP,LOW);
digitalWrite(LmotorPin_B, HIGH);
digitalWrite(LmotorPin_BP,LOW);
digitalWrite(RmotorPin_A, HIGH);
digitalWrite(RmotorPin_AP,LOW);
digitalWrite(RmotorPin_B, HIGH);
digitalWrite(RmotorPin_BP,LOW);
delay(delayTime);
}
void turnRight() { // 馬達轉向:右轉
digitalWrite(LmotorPin_A, HIGH);
digitalWrite(LmotorPin_AP,LOW);
digitalWrite(LmotorPin_B, HIGH);
digitalWrite(LmotorPin_BP,LOW);
digitalWrite(RmotorPin_A, HIGH);
digitalWrite(RmotorPin_AP,LOW);
digitalWrite(RmotorPin_B, HIGH);
digitalWrite(RmotorPin_BP,LOW);
delay(delayTime);
digitalWrite(LmotorPin_A, HIGH);
digitalWrite(LmotorPin_AP,LOW);
digitalWrite(LmotorPin_B, LOW);
digitalWrite(LmotorPin_BP,HIGH);
digitalWrite(RmotorPin_A, HIGH);
digitalWrite(RmotorPin_AP,LOW);
digitalWrite(RmotorPin_B, LOW);
digitalWrite(RmotorPin_BP,HIGH);
delay(delayTime);
digitalWrite(LmotorPin_A, LOW);
digitalWrite(LmotorPin_AP,HIGH);
digitalWrite(LmotorPin_B, LOW);
digitalWrite(LmotorPin_BP,HIGH);
digitalWrite(RmotorPin_A, LOW);
digitalWrite(RmotorPin_AP,HIGH);
digitalWrite(RmotorPin_B, LOW);
digitalWrite(RmotorPin_BP,HIGH);
delay(delayTime);
digitalWrite(LmotorPin_A, LOW);
digitalWrite(LmotorPin_AP,HIGH);
digitalWrite(LmotorPin_B, HIGH);
digitalWrite(LmotorPin_BP,LOW);
digitalWrite(RmotorPin_A, LOW);
digitalWrite(RmotorPin_AP,HIGH);
digitalWrite(RmotorPin_B, HIGH);
digitalWrite(RmotorPin_BP,LOW);
delay(delayTime);
}
void setup() {
pinMode(LmotorPin_A, OUTPUT);
pinMode(LmotorPin_AP, OUTPUT);
pinMode(LmotorPin_B, OUTPUT);
pinMode(LmotorPin_BP, OUTPUT);
pinMode(RmotorPin_A, OUTPUT);
pinMode(RmotorPin_AP, OUTPUT);
pinMode(RmotorPin_B, OUTPUT);
pinMode(RmotorPin_BP, OUTPUT);
pinMode(D0,INPUT);
pinMode(D1,INPUT);
pinMode(D3,INPUT);
pinMode(D4,INPUT);
}
void loop() {
boolean val1=digitalRead(D0);
boolean val2=digitalRead(D1);
attachInterrupt(2,turnRight, LOW);
attachInterrupt(3,turnLeft, LOW);
if (val1==0) {
for (i=0;i<100;i++)
{
forward();
}
}
if (val2==0) {
for (i=0;i<100;i++)
{
backward();
}
}
}
請問為什麼按下中斷按鈕20.21接腳
馬達會停止轉動 然後震動..........
不會執行指令內容 |
|