2013年4月28日 星期日

Arduino : CNY70

幾年前在玩樂高機器人,看到一篇自製紅外線感應器的文章,買材料時順手買了兩顆 CNY70,當時很天真認為它也有紅外線的發射和接收,以為可以直接應用在樂高,結果一直沒用上。現在將它接在 Arduino 上,可以利用讀數來偵測黑白顏色。

材料:

  • CNY70 x 1
  • 電阻 220 歐姆 x 1
  • 電阻 10k 歐姆 x 1


下面是將 CNY70 和 Arduino 連接的配置圖:

由俯視圖來看,如果 CNY70 的 Mark 在右側,右側是紅外線收接端 (D),而左側是紅外線發射端 (E)。如果 CNY70前是黑色的,A0 會呈現低電位狀態,相反的,如果 CNY70 前是白色時,A0 會是呈現高電位狀態。

我們可以利用下面的程式碼來觀察數值的變化:

const int irPin = 0;
void setup() {
  Serial.begin(115200);
  pinMode(irPin , INPUT);
}
void loop() {
  int irVal = analogRead(irPin);
  Serial.println(irVal);
  delay(100);
}

利用觀察到的數值,如果再加兩顆馬達,就可以玩追著黑線跑的自走車了:

  • 如果數值是黑色的範圍,就驅動前進的馬達。
  • 如果數值是白色的範圍,就驅動左右轉的馬達,先順(逆)時轉一下,找不到黑線就再反方向轉,找到了就繼續驅動前進的馬達。
如果用更多顆 CNY70 ,就可以更精準的判斷方向。




沒有留言:

張貼留言

 
© 2009. Design by Pocket