SKU:RB-02S103 復(fù)眼傳感器
來(lái)自ALSROBOT WiKi
目錄 |
產(chǎn)品概述
復(fù)眼傳感是奧松機(jī)器人推出的復(fù)眼傳感器由許多對(duì)紅外線敏感的晶體管和發(fā)光二極管組成。它可以追蹤20厘米范圍內(nèi)物體的移動(dòng)。盡管傳感器是一個(gè)整體,但是你依然可以讀取到每一個(gè)紅外線(IR)光敏晶體管的信息。復(fù)眼傳感器采用IIC通訊方式,數(shù)據(jù)傳輸更加簡(jiǎn)便。
校正周圍光線是通過(guò)關(guān)閉IR LED和比較數(shù)值完成的。如果要改善從復(fù)眼中讀取的數(shù)值,你必須要進(jìn)行校準(zhǔn)。最好等到晚上當(dāng)IR光線不存在時(shí)進(jìn)行。注意紅外線可以穿過(guò)關(guān)閉的百合窗,所以如果你不想等到晚上,可以去地下室,或者是沒(méi)有窗戶的房間,這樣就可以測(cè)量數(shù)值了。將一張紙置于傳感器的前方(約20厘米遠(yuǎn)),觀察每支引腳的數(shù)值差異。使用紙張時(shí)數(shù)值差異不大(+/- 100)。如果某個(gè)數(shù)值過(guò)高,可以使用不透明的膠帶或熱收縮膜阻擋部分紅外線。如果數(shù)值過(guò)低,則阻擋一部分分散到其他傳感器上的紅外線。
產(chǎn)品參數(shù)
基本參數(shù)
- 品名 紅外線復(fù)眼傳感器
- 貨號(hào) RB-02S103
- 品牌 AlsRobot
- 產(chǎn)地 哈爾濱
- 尺寸 50mm×48mm
- 重量 9g
- 包裝 防靜電包裝
- 固定孔 M3*4個(gè)
電氣參數(shù)
- 產(chǎn)品類型:數(shù)字傳感器
- 接口類型:4P防插反接口
- 信號(hào)類型:IIC數(shù)字信號(hào)
- 工作電壓:3.0V~5.0V
- 工作電流:100mA
- 引腳定義:+ 電源正;- 電源負(fù);SDA IIC數(shù)據(jù)引腳;SCL IIC時(shí)鐘引腳
- 連接線: 4P 傳感器連接線
- 檢測(cè)范圍:0~20cm
- 工作溫度:-20℃~70℃
- 測(cè)試范圍:上、下、左、右輸出四路模擬值范圍(0-255)
- 固定孔:M3*4個(gè)
- 產(chǎn)品尺寸(mm):50mm*48mm
使用方法
1、連接圖
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ī)控制對(duì)象 //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) //檢測(cè)到前方有獵物,進(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)動(dòng) { // 每次步進(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)動(dòng) { 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)動(dòng) { jjdyz_xia.write(pos1); // 指定舵機(jī)轉(zhuǎn)向的角度 delay(15); // 等待15ms讓舵機(jī)到達(dá)指定位置 } for(pos1 = 10; pos1 < 88; pos1 += 1) // 從0度到180度運(yùn)動(dòng) { // 每次步進(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(); }
說(shuō)明:通過(guò)串口監(jiān)視器,即可讀取傳感器返回的數(shù)據(jù)。