void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
Serial.begin(9600);
}
void loop()
{
if(analogRead(A5)>100 && analogRead(A5)<200)
{
digitalWrite(2, HIGH);
}
if(analogRead(A5)<100)
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}
if(analogRead(A5)>300 && analogRead(A5)<1000)
{
digitalWrite(3, HIGH);
}
Serial.println(analogRead(A5));
delay(1000);
Arduino : CNY70
2013年4月28日 星期日
幾年前在玩樂高機器人,看到一篇自製紅外線感應器的文章,買材料時順手買了兩顆 CNY70,當時很天真認為它也有紅外線的發射和接收,以為可以直接應用在樂高,結果一直沒用上。現在將它接在 Arduino 上,可以利用讀數來偵測黑白顏色。
材料:
資料來源:https://gsyan888.blogspot.com/2013/04/arduino-cny70.html
下面是將 CNY70 和 Arduino 連接的配置圖:
由俯視圖來看,如果 CNY70 的 Mark 在右側,右側是紅外線收接端 (D),而左側是紅外線發射端 (E)。如果 CNY70前是黑色的,A0 會呈現低電位狀態,相反的,如果 CNY70 前是白色時,A0 會是呈現高電位狀態。
我們可以利用下面的程式碼來觀察數值的變化:
利用觀察到的數值,如果再加兩顆馬達,就可以玩追著黑線跑的自走車了:
材料:
- CNY70 x 1
- 電阻 220 歐姆 x 1
- 電阻 10k 歐姆 x 1
資料來源:https://gsyan888.blogspot.com/2013/04/arduino-cny70.html
下面是將 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 ,就可以更精準的判斷方向。
沒有留言:
張貼留言