紅外線循線/循跡 自走車套件組

NT$1,060

紅外線循線/循跡 自走車套件組

Motoduino紅外線循跡/循線自走車,讓玩家可以DIY做出一台沿著黑色線(或膠帶)的自走車,本套自走車是利用Motoduino自己開發完全相容於Arduino Duemilanove的Motoduino主板的主板,台灣製造且無鉛製程,來控制紅外線感測器及自走車馬達,偵測黑色線位置,並沿著線軌跡自行前進。玩家也可以使用此本體延伸設計其它應用。

Motoduino主機板是一片台灣人自己開發的主板,台灣製且無鉛製程,完全相容於Arduino Duemilanove 主板.

Motoduino是結合arduino duemilanove 和 L293D馬達驅動晶片的一塊整合板,可以驅動兩顆直流馬達(電流最大到1.2A)及利用PWM特性控制馬達轉速。

Motoduino 完全相容於arduino duemilanove ,大部分可以堆疊上去arduino的擴充板都可以使用。可以應用於自走車,尋跡車等有馬達需求應用上. Motoduino也可以很容易加上藍芽模組做成遙控車,例如手機遙控車.

分類: 標籤:

描述

技術規格

1.減速馬達規格: 5V,減速比1:48

2.車子 長x寬(包括輪子): 20cm x 18.5cm。

3. 3路紅外線循線感測模組:利用紅外光探測,抗幹擾能力強,採用CTRT5000傳感器,工作電壓 5V,白線輸出低電壓。

商品內容

1. Motoduino 電路板一片(相容於Arduino Duemilanove)

2. 9V電池扣含DC JACK電源線一條

3. 十字及一字螺絲起子各一支

4. 車體 (兩個輪胎及減速馬達,一個舵輪等)

5. 9V電池一顆

6. 6 pin排線一條 (含3-pin長排針 x 2)

7. 紅外線循線感測器一個

8. 一條 USB 傳輸線

9. 塑膠六角柱(2x長, 2x短, 2x螺帽)

程式範例

// Sensor sequence: SLeftLeft SMiddle SRightRight

const int SLeftLeft = 9; //左感測器輸入腳

const int SMiddle = 10; //中間感測器輸入腳

const int SRightRight = 11; //右感測器輸入腳

// variables will change:

int SLL; //左感測器狀態

int SM; //中感測器狀態

int SRR; //右感測器狀態

const int Motor_M1 = 7;

const int Motor_M2 = 8;

const int Motor_E1 = 5;

const int Motor_E2 = 6;

byte byteSensorStatus=0;

#define SENSOR_L 4;

#define SENSOR_M 2;

#define SENSOR_R 1;

void setup() {

//set up serial communications

Serial.begin(9600);

// 輸出入接腳初始設定

pinMode(SLeftLeft, INPUT);

pinMode(SMiddle, INPUT);

pinMode(SRightRight, INPUT);

pinMode(Motor_M1, OUTPUT);

pinMode(Motor_M2, OUTPUT);

}

void loop(){

byteSensorStatus = 0;

// 讀取感測器狀態值

SLL = digitalRead(SLeftLeft);

if(SLL == 1)

byteSensorStatus = (byteSensorStatus | (0x01 << 2));

SM = digitalRead(SMiddle);

if(SM == 1)

byteSensorStatus = (byteSensorStatus | (0x01 << 1));

SRR = digitalRead(SRightRight);

if(SRR == 1)

byteSensorStatus = (byteSensorStatus | 0x01);

// Serial.println(byteSensorStatus, HEX);

switch(byteSensorStatus)

{ //   感測器黑色:0  白色:1

case 0: // SL:0 SM:0 SR:0

motorstop(0, 255);

break;

case 1: // SL:0 SM:0 SR:1 //no used

left(0, 255);

break;

case 2: // SL:0 SM:1 SR:0 //no used

motorstop(0, 255);

break;

case 3: // SL:0 SM:1 SR:1

left(0, 255);

break;

case 4: // SL:1 SM:0 SR:0 // no used

right(0, 255);

break;

case 5: // SL:1 SM:0 SR:1

forward(0, 255);

break;

case 6: // SL:1 SM:1 SR:0

right(0, 255);

break;

case 7: // SL:1 SM:1 SR:1

forward(0, 255);

}

}

void looptest(){

forward(0,255);

delay(1000);

back(0,255);

delay(1000);

right(0,255);

delay(1000);

left(0,255);

delay(1000);

motorstop(0,0);

delay(3000);

}

void motorstop(byte flag, byte numOfValues)

{

digitalWrite( Motor_E1, 0);

digitalWrite( Motor_E2, 0);

// Serial.println(“stop : “);

}

void forward(byte flag, byte numOfValues)

{

digitalWrite( Motor_M1, LOW);

digitalWrite( Motor_M2, LOW);

analogWrite( Motor_E1, numOfValues);

analogWrite( Motor_E2, numOfValues);

}

void back(byte flag, byte numOfValues)

{

digitalWrite( Motor_M1, HIGH);

digitalWrite( Motor_M2, HIGH);

analogWrite( Motor_E1, numOfValues);

analogWrite( Motor_E2, numOfValues);

}

void right(byte flag, byte numOfValues)

{

digitalWrite( Motor_M1, LOW);

digitalWrite( Motor_M2, LOW);

analogWrite( Motor_E1, numOfValues);

analogWrite( Motor_E2, 0);

}

void left(byte flag, byte numOfValues)

{

digitalWrite( Motor_M1, LOW);

digitalWrite( Motor_M2, LOW);

analogWrite( Motor_E1, 0);

analogWrite( Motor_E2, numOfValues);

}

接線範例

組裝完成圖。