Upload
others
View
15
Download
0
Embed Size (px)
Citation preview
8路雷射循線模組
• 第一章 介紹
• 第二章 架設車體
• 第三章 範例程式
材料表
CGGs_Arduino杜邦線公對母 10P 20cm
*1
M3x6十字塑膠螺絲 *4
六角塑膠柱25mm 雙凹*2
8路循線模組
簡介
8路雷射感測模組是由8個雷射所組成,當照射在顏色較淺或白色的地面上時,感應器輸出低電壓;當照射在顏色較深或者黑色的店面上時,感應器輸出高電壓。此感測模組可以觀察板子上的LED燈號就知道感測模組所讀取到的數位訊號。在板子的右邊有一個調整鈕,可以調整雷射的亮度。
特色
• 八個作為眼睛的雷射感測器
• 有可以控制雷射開關的調整鈕
• 不受環境影響
硬體介紹
1.循跡靈敏度和距離調整紐-可調整8路雷射感測模組的輸出功率調整靈敏度和感應距離。 2.8路LED指示燈-用來顯示8路雷射模組檢測路面訊息狀態。 3.8路雷射循線模組輸出輸入-基本I/O輸出。 4.安裝孔-可使用這五個安裝孔將此板子安裝到你所要使用的機器人上。 5.電源-5V與GND的接線位置。 6. 雷射感測器-可以發射跟接收雷射的射線。
1
2
3 4
6
5
接線對照
感測器 主要控制板 備註
G GND
5V 5V 輸入範圍4.5V~5.5V
D1 D11
D2 D10
D3 D9
D4 D8
D5 D7
D6 D6
D7 D5
D8 D4
組裝 Step1 將一個M3x6塑膠螺絲穿過安裝孔。
Step2 將M3x6塑膠螺絲鎖上一個六角塑膠柱25mm(雙凹) 。
M3x6塑膠螺絲
M3x6塑膠螺絲
六角塑膠柱25mm(雙凹)
Step3 重複上述兩個步驟將另一邊也使用M3x6塑膠螺絲將雷射循線感測器固定在M3x6塑膠螺絲與六角塑膠柱25mm(雙凹)(如左圖) 。
Step6 將一個塑膠螺絲放在車子前方可以安裝的地方(如左圖)。
Step7 將剛剛組裝完的雷射循線感測器用塑膠螺絲先把一邊給鎖在車上(注意,不要鎖死)。
Step8 另一方也鎖上塑膠螺絲(注意,也不要鎖死)。
Step9 決定好要鎖上的位置後再將兩邊的塑膠螺絲鎖緊(如左圖)。
可移動到你所需要的位置
已經固定
Step10 將CGGs_Arduino杜邦線公對母取出十條來做使用(這邊以黑、白代表GND、5V,其他顏色的線為I/O輸出腳位,也可依個人喜好來決定各腳位的色線),接線如下圖或參考接線對照表來接線。
GND 5V
D8 D7
D6 D5
D4 D3
D2 D1
GND
5V
Step11 將訊號線接上板子的輸出腳位(D1~D8)。
Step12 將電源跟接地線接到板子上5V跟GND上,訊號線接到數位接腳(4~11)。
完成
雷射調整
在8路雷射感測模組上有個旋轉鈕可以調整雷射的亮度,這說明它可以組裝在不同高度的上來使用(請依照適當高度來調整)。
記住:高度會依不同機器人有所不同,在使用前請先做好調整
• Step1 調整左方旋轉鈕直到LED指示燈都亮起
旋轉鈕
• Step2 再調整左方旋轉鈕直到LED指示燈都滅或者已轉到底為止
旋轉鈕
• Step3 把亮度設定在剛剛測量的兩個位置之間適合的位置。
旋轉鈕
範例程式(讀取) byte ir=0,a=0; void setup() { DDRB=B000000; DDRD=B00000000; Serial.begin(9600); } void loop() { ir=detection(); Serial.println(ir,BIN); } byte detection() { byte a=PIND,b=PINB; a/=16; b%=16; return b*16+a; }
當雷射遇到白色部分即反射,並接收器接收訊號,此時訊號值為 0 ;當遇到黑色部分時被吸收,接收器未接收到訊號,則訊號值為 1 。
#include<Servo.h> Servo servo1; Servo servo2; byte ir=0,temp=0; void setup() { DDRB=B000000; DDRD=B00000000; servo1.attach(12); servo2.attach(13); } void loop() { ir=detection(); switch(ir & B01111110) { case B00110000: case B00100000: case B01000000: servo1.writeMicroseconds(1540); servo2.writeMicroseconds(1340); break;
case B00001100: case B00000100: case B00000010: servo1.writeMicroseconds(1660); servo2.writeMicroseconds(1460); break; case B00000110: case B00001110: case B00011110: temp=0; break; case B01100000: case B01110000: case B01111000: temp=1; break; case B00000000: if(temp==0) { do { servo1.writeMicroseconds(1700); servo2.writeMicroseconds(1500); ir = detection();
}while(ir=B00000000); break; } else if(temp==1) { do { servo1.writeMicroseconds(1500); servo2.writeMicroseconds(1300); ir = detection(); }while(ir==B00000000); break; default: servo1.writeMicroseconds(1600); servo2.writeMicroseconds(1400); } }} byte detection() { byte a=PIND,b=PINB; a/=16; b%=16; return b*16+a; }
範例程式(循線)
偵測
直走
中間 Ture
右修正 左修正
temp=1
偏右 偏左
temp=0
轉彎
無 Ture
右轉 左轉 temp=1 temp=0
Ture Ture