我寫了這個簡單的代碼,它從Sharp紅外傳感器讀取一段長度,end以cm(單位)爲單位串行顯示平均流量計。Arduino mega隊列
當爲Arduino兆電路板寫代碼時,Arduino啓動一個閃爍的LED(引腳13),程序什麼都不做。這段代碼中的錯誤在哪裏?
#include <QueueList.h>
const int ANALOG_SHARP = 0; //Set pin data from sharp.
QueueList <float> queuea;
float cm;
float qu1;
float qu2;
float qu3;
float qu4;
float qu5;
void setup() {
Serial.begin(9600);
}
void loop() {
cm = read_gp2d12_range(ANALOG_SHARP); //Convert to cm (unit).
queuea.push(cm); //Add item to queue, when I add only this line Arduino crash.
if (5 <= queuea.peek()) {
Serial.println(average());
}
}
float read_gp2d12_range(byte pin) { //Function converting to cm (unit).
int tmp;
tmp = analogRead(pin);
if (tmp < 3)
return -1; // Invalid value.
return (6787.0 /((float)tmp - 3.0)) - 4.0;
}
float average() { //Calculate average length
qu1 += queuea.pop();
qu2 += queuea.pop();
qu3 += queuea.pop();
qu4 += queuea.pop();
qu5 += queuea.pop();
float aver = ((qu1+qu2+qu3+qu4+qu5)/5);
return aver;
}
我試圖改寫你的問題,使其更容易理解,檢查出來,並重新編輯我錯了什麼。 –
@ user902691,什麼是「夏普紅外傳感器」?是夏普長距離測量傳感器* [GP2Y0A02](http://www.alldatasheet.com/datasheet-pdf/pdf/105513/SHARP/GP2Y0A02.html)*? –