SKU:RB-02S103 復(fù)眼傳感器

來自ALSROBOT WiKi
2018年4月17日 (二) 11:53Arduino77討論 | 貢獻(xiàn)的版本

跳轉(zhuǎn)至: 導(dǎo)航、 搜索
02S10300.png


目錄

產(chǎn)品概述

復(fù)眼傳感是奧松機(jī)器人推出的復(fù)眼傳感器由許多對紅外線敏感的晶體管和發(fā)光二極管組成。它可以追蹤20厘米范圍內(nèi)物體的移動。盡管傳感器是一個(gè)整體,但是你依然可以讀取到每一個(gè)紅外線(IR)光敏晶體管的信息。復(fù)眼傳感器采用IIC通訊方式,數(shù)據(jù)傳輸更加簡便。
校正周圍光線是通過關(guān)閉IR LED和比較數(shù)值完成的。如果要改善從復(fù)眼中讀取的數(shù)值,你必須要進(jìn)行校準(zhǔn)。最好等到晚上當(dāng)IR光線不存在時(shí)進(jìn)行。注意紅外線可以穿過關(guān)閉的百合窗,所以如果你不想等到晚上,可以去地下室,或者是沒有窗戶的房間,這樣就可以測量數(shù)值了。將一張紙置于傳感器的前方(約20厘米遠(yuǎn)),觀察每支引腳的數(shù)值差異。使用紙張時(shí)數(shù)值差異不大(+/- 100)。如果某個(gè)數(shù)值過高,可以使用不透明的膠帶或熱收縮膜阻擋部分紅外線。如果數(shù)值過低,則阻擋一部分分散到其他傳感器上的紅外線。

產(chǎn)品參數(shù)

基本參數(shù)

  1. 品名 紅外線復(fù)眼傳感器
  2. 貨號 RB-02S103
  3. 品牌 AlsRobot
  4. 產(chǎn)地 哈爾濱
  5. 尺寸 50mm×48mm
  6. 重量 9g
  7. 包裝 防靜電包裝
  8. 固定孔 M3*4個(gè)

電氣參數(shù)

  1. 產(chǎn)品類型:數(shù)字傳感器
  2. 接口類型:4P防插反接口
  3. 信號類型:IIC數(shù)字信號
  4. 工作電壓:3.0V~5.0V
  5. 工作電流:100mA
  6. 引腳定義:+ 電源正;- 電源負(fù);SDA IIC數(shù)據(jù)引腳;SCL IIC時(shí)鐘引腳
  7. 連接線: 4P 傳感器連接線
  8. 檢測范圍:0~20cm
  9. 工作溫度:-20℃~70℃
  10. 測試范圍:上、下、左、右輸出四路模擬值范圍(0-255)
  11. 固定孔:M3*4個(gè)
  12. 產(chǎn)品尺寸(mm):50mm*48mm


使用方法

1、連接圖

02S10301.png

2、例子程序

#include "Wire.h" 
#include <Servo.h> 

#define PCF8591 (0x90 >> 1) // I2C bus address 
byte value0, value1, value2, value3; 

Servo jjdyz_shang;     
Servo jjdyz_xia;     
Servo jjdyz_zhong;   
Servo myservo;  //創(chuàng)建一個(gè)舵機(jī)控制對象 

//const int buttonPin = A0;     // 定義紅外傳感器的接收引腳為模擬A0引腳 
//int buttonState = 0;          // 定義紅外傳感器的狀態(tài)緩存 

//定義每個(gè)舵機(jī)的旋轉(zhuǎn)角度的緩存值 
int pos=0;                     
int pos1=0; 
int pos2=0; 

int gongji = 0;                //定義一個(gè)是否處于攻擊狀態(tài)的標(biāo)志緩存 

void jjdyz() 
{ 
   if(value0<2&&value1>value0&&value2>value0&&value3>value0) 
   {     
       if(gongji == 1)             //處于攻擊狀態(tài)時(shí),但敵人走了,慢慢恢復(fù)到初始位置 
       { 
           for(pos = 40; pos <= 88; pos += 1)   //上面的舵機(jī)恢復(fù)初始位置 
           { 
               jjdyz_shang.write(pos);   
               delay(300); 
           } 
           gongji = 0;                           //解除攻擊狀態(tài) 
       } 
   } 
   if (value2<2&&value1>value2&&value0>value2&&value3>value2)       //檢測到前方有獵物,進(jìn)行攻擊,(紅外傳感器返回低電平) 
   { 
       jjdyz_shang.write(70); 
       delay(200); 
       jjdyz_xia.write(88); 
       delay(200); 
       jjdyz_zhong.write(40); 
       delay(200); 
       gongji = 1;                //設(shè)置攻擊狀態(tài)緩存為正在攻擊 
   } 
   if (value1<2&&value0>value1&&value2>value1&&value3>value1) 
   { 
      for(pos1 = 88; pos1 < 160; pos1 += 1)  // 從0度到180度運(yùn)動 
       {                                                     // 每次步進(jìn)一度 
         jjdyz_xia.write(pos1);        // 指定舵機(jī)轉(zhuǎn)向的角度 
         delay(15);                       // 等待15ms讓舵機(jī)到達(dá)指定位置 
       }   
      for(pos1 = 160; pos1>=88; pos1-=1)   //從180度到0度運(yùn)動   
       {                                 
         jjdyz_xia.write(pos1);         // 指定舵機(jī)轉(zhuǎn)向的角度 
         delay(15);                        // 等待15ms讓舵機(jī)到達(dá)指定位置 
       }   
   } 
   if (value3<2&&value0>value3&&value0>value3&&value2>value3) 
   { 
        for(pos1 = 88; pos1>=10; pos1-=1)   //從180度到0度運(yùn)動   
       {                                 
         jjdyz_xia.write(pos1);         // 指定舵機(jī)轉(zhuǎn)向的角度 
         delay(15);                        // 等待15ms讓舵機(jī)到達(dá)指定位置 
       }   
       for(pos1 = 10; pos1 < 88; pos1 += 1)  // 從0度到180度運(yùn)動 
       {                                                     // 每次步進(jìn)一度 
         jjdyz_xia.write(pos1);        // 指定舵機(jī)轉(zhuǎn)向的角度 
         delay(15);                       // 等待15ms讓舵機(jī)到達(dá)指定位置 
       }     
   } 
   else 
   { 
       jjdyz_shang.write(88); 
       delay(15); 
       jjdyz_xia.write(88); 
       delay(15); 
       jjdyz_zhong.write(88); 
       delay(15); 
   } 
} 

void readvalues(){ 
  Wire.beginTransmission(PCF8591); // wake up PCF8591 
  Wire.write(0x04); // control byte - read ADC0 then auto-increment 
  Wire.endTransmission(); // end tranmission 
  Wire.requestFrom(PCF8591, 5); 
  value0=Wire.read();   //上 
  value0=Wire.read();   //上 
  value1=Wire.read();   // 右 
  value2=Wire.read();   //下 
  value3=Wire.read();   //左 
  Serial.print(value0); Serial.print(" "); 
  Serial.print(value1); Serial.print(" "); 
  Serial.print(value2); Serial.print(" "); 
  Serial.print(value3); Serial.print(" "); 
  Serial.println();   
} 

void setup() 
{ 
 Wire.begin(); 
 gongji = 0;   
 jjdyz_shang.attach(10);          //上面的舵機(jī)引腳為2 
 jjdyz_xia.attach(6);         //下面的舵機(jī)引腳為4 
 jjdyz_zhong.attach(7);         // 中間的舵機(jī)引腳為3 
 //三路舵機(jī)初始化 
 jjdyz_shang.write(88); 
 delay(15); 
 jjdyz_xia.write(88); 
 delay(15); 
 jjdyz_zhong.write(88); 
 delay(15); 
Serial.begin(9600); 
} 
void loop() 
{ 
   readvalues(); 
   jjdyz(); 
}

說明:通過串口監(jiān)視器,即可讀取傳感器返回的數(shù)據(jù)。

產(chǎn)品相關(guān)推薦

Erweima.png

購買地址

復(fù)眼傳感器

相關(guān)學(xué)習(xí)資料

奧松機(jī)器人技術(shù)論壇