作者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/cn.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