|
我第一次使用Arduino做專題原本已經完成循跡自走車(延黑色線走) 後來要加裝感測器(Gp2D120)感應障礙物
我上網找到了程式碼加上去變得無法造我要的動作去行駛
想請問各位前輩們我哪裡出問題程式碼如下
/*
控制 兩個馬達 控制馬達轉速 使用PWM 功能
*/
// constants won't change. They're used here to
// set pin numbers:
const int sensorPinL = 2; //
const int sensorPinR = 3; //
int pwmR = 0;
int pwmL = 0;
int IRpin = 0; // analog pin for reading the IR sensor
float sensorValue, distance;
const int motorLin1 = 10; // 左馬達 電機控制
const int motorLin2= 11; // 左馬達 電機控制
const int motorRin1 = 12; // 右馬達控制
const int motorRin2= 13; // 左馬達控制
// variables will change:
int sensorStateL = 0; // 左偵測器
int sensorStateR = 0; // 右偵測器
void setup() {
pinMode(motorRin1, OUTPUT);
pinMode(motorRin2, OUTPUT);
pinMode(sensorPinL, INPUT);
pinMode(sensorPinR, INPUT);
pinMode(5,OUTPUT); // 控制左電機馬達轉速 PWM
pinMode(6,OUTPUT);
pinMode(IRpin, INPUT);
}
void loop(){
// read the state of the pushbutton value:
analogWrite(5,200); //PWM 左馬達
analogWrite(6,200); //PWM 右馬達
sensorStateL = digitalRead(sensorPinL);
sensorStateR = digitalRead(sensorPinR);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (sensorStateL == HIGH) {
// turn LED on:
digitalWrite(motorLin1, HIGH);
digitalWrite(motorLin2, LOW);
}
else {
// turn LED off:
digitalWrite(motorLin2, HIGH);
digitalWrite(motorLin1, LOW);
}
if (sensorStateR == HIGH) {
// turn LED on:
digitalWrite(motorRin1, HIGH);
digitalWrite(motorRin2, LOW);
}
else {
// turn LED off:
digitalWrite(motorRin2, HIGH);
digitalWrite(motorRin1, LOW);
}
sensorValue = analogRead(IRpin);
sensorValue *= 0.0048828125;
distance = 60.495 * pow(sensorValue,-1.1904);
Serial.println(distance);
delay(1000);
}
紅色是我在網路上找到的感測障礙物停止的程式碼加上去的
若沒紅色的是可以正常黑顏色線走(無感測器)
聽同學說是我程式設定20公分太大要改小 又不會用excle
前輩們可以幫我修改到5公分或是幫我找出無法動作的問題
我感測器正極接板子的VIN 負極GND 輸出為PING0
因為5V 和3.5V都有接線了
懇請前輩們幫忙 感謝 |
|