作者s4A111039 (定板小瓜)
看板Electronics
標題[問題] arduino平均值的程式寫法
時間Sat Aug 30 01:51:52 2014
大家好,小弟的程式動作紅外線發射器與接受器遮蔽時為1 (指示燈亮起),
此時做電流值的抓取,不過只能抓取單點的數值,
因為找不到平均值的函數,請問如何修改才能達到遮蔽觸發"擷取0.2秒的平均電流值"動作,
謝謝大家協助!
const int IR_rec = 4; // 紅外線接收器
const int IR_send = 7; // 紅外線發射器
const int LED = 13; // 紅外線指示燈
const unsigned int frequency = 38000; // 發射頻率(單位: Hz)
void setup() {
Serial.begin(9600); // 開啟 Serial port, 通訊速率為 9600 bps
pinMode(IR_rec, INPUT); // 把 irReceiver 接腳設置為 INPUT
pinMode(IR_send, OUTPUT); // 把 irLed 接腳設置為 INPUT
pinMode(LED, OUTPUT); // 把 ledPin 設置為 OUTPUT
tone(IR_send, frequency); // 產生指定頻率的脈波 (Pulses)
delay(1000);
}
void loop() {
int IR_status = digitalRead(IR_rec); // 讀取 irReceiver 的狀態
// 檢查 irReceiver 是否有收到紅外線訊號
// 有的話,ir_status 會是 0
if (IR_status == 0) {
digitalWrite (LED, HIGH);
}
else {
digitalWrite (LED, LOW);
int sensorValue = analogRead(A0); //A0類比輸入,電流值
Serial.println((sensorValue) * 31.25/ 1023);
//5(V)/0.1(V/A)=50=resolution 電流值轉換公式
delay(1000);
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.108.10.197
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Electronics/M.1409334714.A.E1C.html
1F:推 peng978: 我不清楚arduino的函式 但你可以在觸發後不斷讀取 然後讀 08/30 01:59
2F:→ peng978: 取後I=Io+I;Io=I;跑到0.2秒後停止除以筆數就是了 善用中 08/30 02:01
3F:→ peng978: 善用timer或中斷 然後delay記得算完在跑 08/30 02:03
4F:→ lovepy: 之前找過人家寫好的算術平均濾波器 你可以google來參考 08/30 10:45
5F:→ lovepy: 關鍵字 arduino 濾波器 看你是要用哪種平均 08/30 10:46