這次利用CNY70及一個沒在用的小風扇,來測量其風扇轉速,方法很簡單, Arduino Sketch如下.
此次利用一顆9V電池當風扇電源.
使用材料如下:
1.電池9V 一顆
2.Motoduino (Arduino) x 1
3.CNY70 光感測器 x 1 (圖中五顆只用一顆)
4.黑色膠帶一小條
5. 少許線材.
Arduino Sketch:
程式說明: 此次是用attachInterrupt(0, rpm_fun, RISING), 第一參數0表示Pin2為外部中斷,
當0-->1時(Rising)就產生中斷執行rpm_fun. 利用 if(rpmcount >= 20) 來調整 RPM resolution.
#############################
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm_fun, RISING);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop()
{
if (rpmcount >= 20)
{
rpm = (30 * 1000 / (millis()- timeold)) * rpmcount;
timeold = millis();
rpmcount = 0;
Serial.println(rpm, DEC);
}
}
void rpm_fun()
{
rpmcount++;
}
#############################
有興趣或有問題網友可以發mail來, 謝謝!
My Youtube : http://www.youtube.com/watch?v=I3pIOMORmHQ
My Email : sinocgtchen@gmail.com
相關購買資訊: http://motoduino.com
此次利用一顆9V電池當風扇電源.
使用材料如下:
1.電池9V 一顆
2.Motoduino (Arduino) x 1
3.CNY70 光感測器 x 1 (圖中五顆只用一顆)
4.黑色膠帶一小條
5. 少許線材.
Arduino Sketch:
程式說明: 此次是用attachInterrupt(0, rpm_fun, RISING), 第一參數0表示Pin2為外部中斷,
當0-->1時(Rising)就產生中斷執行rpm_fun. 利用 if(rpmcount >= 20) 來調整 RPM resolution.
#############################
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm_fun, RISING);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop()
{
if (rpmcount >= 20)
{
rpm = (30 * 1000 / (millis()- timeold)) * rpmcount;
timeold = millis();
rpmcount = 0;
Serial.println(rpm, DEC);
}
}
void rpm_fun()
{
rpmcount++;
}
#############################
有興趣或有問題網友可以發mail來, 謝謝!
My Youtube : http://www.youtube.com/watch?v=I3pIOMORmHQ
My Email : sinocgtchen@gmail.com
相關購買資訊: http://motoduino.com
作者已經移除這則留言。
回覆刪除