各位看官 请看看下边的视频吧 看看如何中立感应控制小车移动的
技术参数及器材
技术参数
1. 14个数字输入/输出端口TX,RX,D2~D13,
2. 8个模拟输入端口A0~A7
3. 1对TTL电平串口收发端口RX/TX
4.6个PWM端口,D3, D5, D6, D9, D10, D11
5.采用Atmel Atmega328P和ATMEGA8U2单片机
6.工作频率为16MHz
7.支持USB下载及供电
8.支持外接7-12V直流电源供电
9.支持9V电池供电
10.支持ISP下载
11.三种供电方式:USB,VIN,外部5V输入
元器件清单:
Arduino履带车体一台
ARDUINO UNO控制板一个
ARDUINO 298 扩展板 一个
蓝牙模块 一个(蓝牙芯片是采用CSR的06蓝牙芯片,蓝控制距离:10米毫无难度)
18650锂电池两节(1500MA)
18650电池盒一个
18650充电器一个
7彩LED灯两个
杜邦线20条
3MM有机玻璃板一片
铜柱4根 螺丝10个,螺母10个
USB线一条
附上蓝牙小车代码
- /***********************************************************/
- /* 程式名稱:Android BTcar.APK 操控遙控車 */
- /* 腳位: pin10、pin11接前進的左右輪 */
- /* pin8、pin9接後退的左右輪 */
- /* pin7 接Buzzer */
- /* pin6、pin5個接一顆LED */
- /* pin4接七彩LED */
- /* Arduino的TX接上藍牙的RX,RX接上藍牙的TX */
- /***************如需更改腳位,請勿更改到pin13***************/
-
- /* 功能簡介:按下APK的控制鈕能讓車子前進後退左轉右轉,還能配合
- 倒車時有倒車聲音,左轉右轉則會有各個LED閃爍。 */
- /* 作者: HIF團隊 ( JimmyFang ) 2012/04/11 */
- /***********************************************************/
-
-
- //******Program code setting*************************************//
-
- char val; //Variable to receive data from the serial port
- char temp[4];
- int LED_Status = 0;
- int ledr=1,ledl=1;
- int i;
- volatile unsigned int count = 0;
-
- void setup() //腳位設定
- {
- for(int i=10;i<=13;i++)
- {
- pinMode(i,OUTPUT);
- //digitalWrite(i,HIGH);
- }
- digitalWrite(11,LOW);
- digitalWrite(10,LOW);
-
- for(int i=3;i<=6;i++)
- {
- pinMode(i,OUTPUT);
- }
- pinMode(8,OUTPUT);
- // Car_Init(); //將車子做初始化的動作
-
- //***設定內部中斷時間*********************************************//
- TCCR1A = 0x00;
- // 沒有任何設定,只是一個計時器
- TCCR1B &= ~_BV(CS12); //
- TCCR1B &= ~_BV(CS11);
- TCCR1B |= _BV(CS10);
- TCNT1 = 0;
- TIMSK1 |= _BV(TOIE1); // 開啟內部計時器
- Serial.begin(9600); // 設定袍率為 9600bps
- //****************************************************************//
- }
-
- //******************************************************************//
-
-
- //*****Main code do nothing*****************************************//
-
- void loop()
- {
- performCommand();
- Serial.print(temp[3]);
- Serial.print(temp[2]);
- Serial.print(temp[1]);
- Serial.print(temp[0]);
- Serial.println("cm");
- }
-
- //******************************************************************//
-
- void Car_Init()
- {
- go_forward();
- delay(1000);
- stop_go_forward();
- go_reverse();
- delay(1000);
- stop_go_reverse();
- }
-
- //***判斷送來的訊號************************************************//
-
- void performCommand()
- {
- if(Serial.available()) // 接收串列口資料
- {
- for(i=0;i<4;i++)
- temp[i]=Serial.read();
- }
-
- if (temp[0] == 'r')
- {
- if(temp[2] == 'b')
- {
- //LED_Status = 1;
- //go_right_F(); // 前進時右轉
- go_reverse(); // 倒退
- }
- else if(temp[2] == 'f')
- {
- //LED_Status = 2;
- //go_left_F(); // 前進時左轉
- go_forward(); // 前進
- }
- else
- {
- LED_Status = 0;
- //go_forward(); // 前進
- stop_go_forward(); // 停止前進
- }
- }
- else if (temp[0] == 's')
- {
- LED_Status = 0;
- stop_go_forward(); // 停止前進
- //go_reverse(); // 倒退
- stop_go_reverse(); // 停止倒退
- }
- else if (temp[0] == 'f')
- {
- if(temp[2] == 'l')
- {
- LED_Status = 3;
- //go_right_B(); // 倒退時右轉
- go_left_F(); // 前進時左轉
- }
- else if(temp[2] == 'r')
- {
- LED_Status = 4;
- //go_left_B(); // 倒退時左轉
- go_right_F(); // 前進時右轉
- }
- else
- {
- LED_Status = 5;
- //go_reverse(); // 倒退
- }
- }
- else if (temp[0] == 'y')
- {
- //TIMSK1 &= ~_BV(TOIE1); // 關閉內部定時器
- LED_Status = 0;
- //digitalWrite(7,LOW);
- stop_go_reverse(); // 停止倒退
- }
- else if (temp[0] == 'a')
- {
- lights_on(); // 開啟近燈
- }
- else if (temp[0] == 'c')
- {
- lights_off(); // 關閉近燈
- }
- else if (temp[0] == 'd')
- {
- long_lights_on(); // 開啟遠燈
- }
- else if (temp[0] == 'e')
- {
- long_lights_off(); // 關閉遠燈
- }
- else if (temp[0] == 't')
- {
- go_turbo(); // 開啟渦輪表示燈
- }
- else if (temp[0] == 'x')
- {
- stop_go_turbo(); // 關閉渦輪表示燈
- }
-
- }
- //***************************************************************//
-
-
-
- //*****Action code***********************************************//
- void go_forward() // 前進動作
- {
- digitalWrite(12,HIGH);
- digitalWrite(8,HIGH);
- digitalWrite(10,HIGH);
- digitalWrite(11,HIGH);
- }
-
-
- void stop_go_forward() // 停止前進動作
- {
- //digitalWrite(12,HIGH);
- //digitalWrite(8,HIGH);
- digitalWrite(10,LOW);
- digitalWrite(11,LOW);
- }
-
-
- void go_reverse() // 倒退動作
- {
- digitalWrite(10,HIGH);
- digitalWrite(11,HIGH);
- digitalWrite(12,LOW);
- digitalWrite(8,LOW);
- }
-
-
- void stop_go_reverse() // 停止倒退動作
- {
- digitalWrite(10,LOW);
- digitalWrite(11,LOW);
- //digitalWrite(12,HIGH);
- //digitalWrite(8,HIGH);
- }
-
-
- void go_right_F() // 前進時右轉彎動作
- {
- digitalWrite(12,HIGH);
- digitalWrite(8,LOW);
- digitalWrite(11,HIGH);
- digitalWrite(10,HIGH);
- }
-
-
- void go_left_F() // 前進時左轉彎動作
- {
- digitalWrite(12,LOW);
- digitalWrite(8,HIGH);
- digitalWrite(11,HIGH);
- digitalWrite(10,HIGH);
- }
-
-
- void go_right_B() // 後退時右轉彎動作
- {
- digitalWrite(10,HIGH);
- digitalWrite(11,HIGH);
- digitalWrite(12,LOW);
- digitalWrite(8,HIGH);
- }
-
-
- void go_left_B() // 後退時左轉彎動作
- {
- digitalWrite(10,HIGH);
- digitalWrite(11,HIGH);
- digitalWrite(12,HIGH);
- digitalWrite(8,LOW);
- }
-
- void lights_on()
- {
- digitalWrite(5, HIGH);
- ledr=1;
- }
-
-
- void lights_off() // Short Lights OFF
- {
- digitalWrite(5, LOW);
- ledr=0;
- }
-
-
- void long_lights_on() // Long Lights ON
- {
- digitalWrite(6, HIGH);
- ledl=1;
- }
-
-
- void long_lights_off() // Long Lights OFF
- {
- digitalWrite(6, LOW);
- ledl=0;
- }
-
-
- void go_turbo() // Turbo action
- {
- digitalWrite(3, HIGH);
- }
-
-
- void stop_go_turbo() // Stop Turbo action
- {
- digitalWrite(3, LOW);
- }
-
- //******************************************************************//
-
- //***Interrupt******************************************************//
-
- ISR (TIMER1_OVF_vect) //內部中斷向量位址
- {
- count++;
- if (count == 122) //判斷動作時間是不是到了
- {
- if(LED_Status == 0) //沒做任何動作
- {
- digitalWrite(5,ledr);
- digitalWrite(6,ledl);
- digitalWrite(3,LOW);
- }
- else if(LED_Status == 1) //前進時右轉讓LED1做閃爍動作
- {
- digitalWrite(5,!(digitalRead(5)));
- }
- else if(LED_Status == 2) //前進時左轉讓LED2做閃爍動作
- {
- digitalWrite(6,!(digitalRead(6)));
- }
- else if(LED_Status == 3) //倒車時右轉讓LED1做閃爍動作
- { //並且發出逼逼逼的聲音
- digitalWrite(5,!(digitalRead(5)));
- digitalWrite(3,!(digitalRead(3)));
- }
- else if(LED_Status == 3) //倒車時左轉讓LED2做閃爍動作
- { //並且發出逼逼逼的聲音
- digitalWrite(6,!(digitalRead(6)));
- digitalWrite(3,!(digitalRead(3)));
- }
- else if(LED_Status == 5) //倒車時讓喇叭發出聲音
- {
- digitalWrite(3,!(digitalRead(3)));
- }
-
- count = 0;
- }
- }
复制代码
源码以及app上传到附件
|