|
主要以HALL感測器測量轉速並傳換為時速,設定當達成時速超過20KM/hr、距離在20CM內時,LED警示燈亮起,其餘條件LED警示燈皆為暗
但目前遇到 在測試時 序列富視窗 裡的超音波數值正常 不過 當hall開始測轉速時 視窗就會整個卡住 不會動
程式個別分開時 偵測都正常 但要合併一起使用卻會有問題 我第一次做這樣的合併程式 不知道會有甚麼衝突
第一次詢問問題 arduino新手 請多包涵
int trigPin = 12; //Trig Pin 定義超音波感測器角位
int echoPin = 11;//Echo Pin //定義超音波感測器角位
int ledPin = 13; //定義燈號角位
volatile int rpmcount = 0;
int rpm = 0;
unsigned long lastmillis = 0;
int val1=0; //超音波感測器數值
int val2=0; //HALL感測器數值
long duration, cm, inches;
void setup() {
Serial.begin (9600); // Serial Port begin
pinMode(trigPin, OUTPUT); //Define inputs and outputs
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
attachInterrupt(0,rpm, FALLING);//interrupt cero (0) is on pin two(2).
}
void loop()
{
if (millis() - lastmillis == 500){
rpm = rpmcount * 60;
val2 = rpm;
Serial.print("RPM =\t"); //print the word "RPM" and tab.
Serial.print(rpm);
Serial.print("\t Hz=\t"); //print the word "Hz".
Serial.println(rpmcount); /*print revolutions per second or Hz. And print new line or enter.*/
rpmcount = 0; // Restart the RPM counter
lastmillis = millis(); // Uptade lasmillis
attachInterrupt(0, rpm, FALLING); //enable interrupt
}
if(val2>360){ //若時速超過20公里
Distance();
if(val1<=20) //距離小於20CM
{
digitalWrite(13,HIGH); //LED警示燈亮起
}
else
{
digitalWrite(13,LOW); //LED警示燈為暗
}
}
}
void Distance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); // 給 Trig 高電位,持續 10微秒
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT); // 讀取 echo 的電位
duration = pulseIn(echoPin, HIGH); // 收到高電位時的時間
cm = (duration/2) / 29.1; // 將時間換算成距離 cm 或 inch
inches = (duration/2) / 74;
val1 = cm;
Serial.print("Distance : ");
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
}
|
|