查看SKU:RB-02S103 復眼傳感器的源代碼
←
SKU:RB-02S103 復眼傳感器
跳轉至:
導航
、
搜索
因為以下原因,你沒有權限編輯本頁:
您剛才請求的操作只有這個用戶組中的用戶才能使用:
用戶
您可以查看并復制此頁面的源代碼:
[[文件:02S10300.png|500px|縮略圖|右]] ==產品概述== 復眼傳感是奧松機器人推出的復眼傳感器由許多對紅外線敏感的晶體管和發(fā)光二極管組成。它可以追蹤20厘米范圍內物體的移動。盡管傳感器是一個整體,但是你依然可以讀取到每一個紅外線(IR)光敏晶體管的信息。復眼傳感器采用IIC通訊方式,數(shù)據(jù)傳輸更加簡便。<br/> 校正周圍光線是通過關閉IR LED和比較數(shù)值完成的。如果要改善從復眼中讀取的數(shù)值,你必須要進行校準。最好等到晚上當IR光線不存在時進行。注意紅外線可以穿過關閉的百合窗,所以如果你不想等到晚上,可以去地下室,或者是沒有窗戶的房間,這樣就可以測量數(shù)值了。將一張紙置于傳感器的前方(約20厘米遠),觀察每支引腳的數(shù)值差異。使用紙張時數(shù)值差異不大(+/- 100)。如果某個數(shù)值過高,可以使用不透明的膠帶或熱收縮膜阻擋部分紅外線。如果數(shù)值過低,則阻擋一部分分散到其他傳感器上的紅外線。<br/> ==產品參數(shù)== ===基本參數(shù)=== #品名 紅外線復眼傳感器<br/> #貨號 RB-02S103<br/> #品牌 AlsRobot<br/> #產地 哈爾濱<br/> #尺寸 50mm×48mm<br/> #重量 9g<br/> #包裝 防靜電包裝<br/> #固定孔 M3*4個<br/> ===電氣參數(shù)=== #產品類型:數(shù)字傳感器<br/> #接口類型:4P防插反接口<br/> #信號類型:IIC數(shù)字信號<br/> #工作電壓:3.0V~5.0V<br/> #工作電流:100mA<br/> #引腳定義:+ 電源正;- 電源負;SDA IIC數(shù)據(jù)引腳;SCL IIC時鐘引腳<br/> #連接線: 4P 傳感器連接線 <br/> #檢測范圍:0~20cm<br/> #工作溫度:-20℃~70℃<br/> #測試范圍:上、下、左、右輸出四路模擬值范圍(0-255) #固定孔:M3*4個 #產品尺寸(mm):50mm*48mm ==使用方法== ===example1_Arduino=== * 主要硬件 :Arduino UNO 控制器 :復眼傳感器 :杜邦線 :USB 數(shù)據(jù)線 * 硬件連接 <br/> [[文件:02S10301.png|700px|縮略圖|居中]] * 示例程序 <pre style='color:blue'> #include <Wire.h> #define PCF8591 (0x90 >> 1) // I2C bus address byte value0, value1, value2, value3; void readvalues(){ Wire.beginTransmission(PCF8591); // wake up PCF8591 Wire.write(0x04); Wire.endTransmission(); Wire.requestFrom(PCF8591, 5); value0=Wire.read(); value0=Wire.read(); //上 value1=Wire.read(); //右 value2=Wire.read(); //下 value3=Wire.read(); //左 Serial.print("value0= "); Serial.print(value0);Serial.print("\t"); Serial.print("value1= "); Serial.print(value1);Serial.print("\t"); Serial.print("value2= "); Serial.print(value2);Serial.print("\t"); Serial.print("value3= "); Serial.print(value3);Serial.print("\t"); Serial.println(); } void setup() { Wire.begin(); Serial.begin(9600); } void loop() { readvalues(); } </pre> * 程序效果 通過串口監(jiān)視器,即可讀取傳感器返回的數(shù)據(jù)。<br/> ===example2_Arduino=== * 主要硬件 :Arduino UNO 控制器 :Motor Driver Shield 電機驅動板 :復眼傳感器 :杜邦線 :USB 數(shù)據(jù)線 :二自由度云臺 * 硬件連接 D5 - Servo1 D10 - Servo2 復眼 - IIC接口 * 示例程序 <pre style='color:blue'> #include <Servo.h> #include <Wire.h> #define PCF8591 (0x90 >> 1) #define panPin 10 #define tiltPin 5 byte LRscalefactor=10; byte UDscalefactor=10; int distancemax=80; int PanZero=90; int TiltZero=90; int LRmax=170; int LRmin=10; int UDmax=150; int UDmin=30; int pan=PanZero; int tilt=TiltZero; int panscale; int tiltscale; int panOld; int tiltOld; int distance; int temp; int updown; int leftright; Servo panLR; Servo tiltUD; byte up_value0, right_value1, down_value2, left_value3; void readvalues(){ Wire.beginTransmission(PCF8591); Wire.write(0x04); Wire.endTransmission(); Wire.requestFrom(PCF8591, 5); up_value0=Wire.read(); up_value0=Wire.read(); //上 right_value1=Wire.read(); //右 down_value2=Wire.read(); //下 left_value3=Wire.read(); //左 distance=(up_value0+right_value1+down_value2+left_value3)/4; Serial.print("up_value0= "); Serial.print(up_value0);Serial.print("\t"); Serial.print("right_value1= "); Serial.print(right_value1);Serial.print("\t"); Serial.print("down_value2= "); Serial.print(down_value2);Serial.print("\t"); Serial.print("left_value3= "); Serial.print(left_value3);Serial.print("\t"); Serial.print("distance= "); Serial.print(distance);Serial.print("\t"); Serial.println(); } void IRfollow() { if (distance<distancemax) { ; // if (pan>PanZero)pan=pan-1; // if (pan<PanZero)pan=pan+1; // if (tilt>TiltZero)tilt=tilt-1; // if (tilt<TiltZero)tilt=tilt+1; } else { panscale=(right_value1+left_value3)*LRscalefactor/10; tiltscale=(up_value0+down_value2)*UDscalefactor/10; if (left_value3>right_value1) { leftright=(left_value3-right_value1)*15/panscale; pan=pan-leftright; } if (left_value3<right_value1) { leftright=(right_value1-left_value3)*15/panscale; pan=pan+leftright; } if (up_value0>down_value2) { updown=(up_value0-down_value2)*15/tiltscale; tilt=tilt-updown; } if (down_value2>up_value0) { updown=(down_value2-up_value0)*15/tiltscale; tilt=tilt+updown; } panOld=pan; tiltOld=tilt; if (pan<LRmin) pan=LRmin; if (pan>LRmax) pan=LRmax; if (tilt<UDmin)tilt=UDmin; if (tilt>UDmax)tilt=UDmax; } } void setup() { Wire.begin(); Serial.begin(9600); panLR.attach(panPin); panLR.write(PanZero); tiltUD.attach(tiltPin); tiltUD.write(TiltZero); } void loop() { panLR.write(pan); tiltUD.write(tilt); readvalues(); IRfollow(); } </pre> * 程序效果 ===example3_Arduino & Processing=== * 主要硬件 :Arduino UNO 控制器 :復眼傳感器 :杜邦線 :USB 數(shù)據(jù)線 * 硬件連接 <br/> [[文件:02S10301.png|700px|縮略圖|居中]] * 示例程序 -- Processing <pre style='color:blue'> import processing.serial.*; Serial myPort; int sWidth=640, sHeight=640; float xHairLength = 200; float xpos, ypos; void setup() { size(640, 640); println(Serial.list()); myPort = new Serial(this, Serial.list()[0], 9600); smooth(); } void draw() { background(255); ellipse((640/2)+xpos, (640/2)+ypos, 20, 20); stroke(0); line((sWidth/2)-250, sHeight/2, (sWidth/2)+250, sHeight/2); stroke(0); line(sWidth/2, (sHeight/2)-250, sWidth/2, (sHeight/2)+250); } void serialEvent(Serial myPort) { String myString = myPort.readStringUntil('\n'); if(myString != null) { myString = trim(myString); int sensors[] = int(split(myString, ',')); for (int sensorNum = 0; sensorNum < sensors.length; sensorNum++) { print("Sensor " + sensorNum + ": " + sensors[sensorNum] + "\t"); } println(); if (sensors.length > 1) { float left,right,up,down; left = map(sensors[3], 0,1000,0,width); right = map(sensors[1], 0,1000,0,height); up = map(sensors[0], 0,1000,0,width); down = map(sensors[2], 0,1000,0,height); xpos=right-left; ypos=up-down; } } } </pre> * 示例程序 -- arduino <pre style='color:blue'> #include <Wire.h> #define PCF8591 (0x90 >> 1) // I2C bus address byte value0, value1, value2, value3; void readvalues(){ Wire.beginTransmission(PCF8591); // wake up PCF8591 Wire.write(0x04); Wire.endTransmission(); 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("\n"); } void setup() { Wire.begin(); Serial.begin(9600); } void loop() { readvalues(); } </pre> * 程序效果 [[文件:02S103100.png|600px|縮略圖|居中]] ==產品相關推薦== [[文件:erweima.png|230px|無框|右]] ===購買地址=== [http://gharee.com/goods-816.html 復眼傳感器] ===相關學習資料=== [http://www.makerspace.cn/portal.php 奧松機器人技術論壇]
返回
SKU:RB-02S103 復眼傳感器
。
來自“
http://gharee.com/wiki/index.php/SKU:RB-02S103_復眼傳感器
”
導航菜單
個人工具
登錄
名字空間
頁面
討論
變換
查看
閱讀
查看源代碼
查看歷史
操作
搜索
導航
首頁
社區(qū)專頁
新聞動態(tài)
最近更改
隨機頁面
工具箱
鏈入頁面
相關更改
特殊頁面
頁面信息
隱私政策
關于ALSROBOT WiKi
免責聲明