2021年12月18日 星期六

CNY70

 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 上,可以利用讀數來偵測黑白顏色。

材料:

  • 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 ,就可以更精準的判斷方向。

沒有留言:

張貼留言

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...