|
Makeblock 的 USB Host 轉串列通信模組是一個讓 Arduino 可外接USB滑鼠或者其它HID設備的電子模組。有了它,我們可以為 mBot 增加新的控制方式——無線遊戲手柄遙控。
資料來源:bbs.makeblock.cc/thread-706-1-1.html
準備材料:
1、mBot套件x1
2、Me USB Host模組 參考說明
3、無線2.4G遊戲把手x1
USB Host的特點:
1、USB主控晶片是的CH375B
2、支援描述位元符小於64 Byte的HID設備
3、默認鮑率是9600
由於 mBot 的主控板 mCore 硬體序列埠沒有提供RJ25接口,所以範例程式使用軟體序列埠來實現與 USB Host 通訊。
控制過程 mCore <--> USB Host <--> USB 2.4G Dongle <--> Wireless Joystick
|
|
直流馬達
先簡單測試一下控制馬達正反轉
- #include "MeUsb.h"//引用USB Library
- MeUsb usb(10,9); //指定串口tx,rx引脚
-
- void setup()
- {
- Serial.begin(9600);
- usb.init(USB1_0);//初始化USB Host
- }
-
- void loop()
- {
- if(!usb.device_online)
- {
- usb.probeDevice(); //輪詢USB設備
- delay(100);
- }
- else
- {
- //接收USB設備的資料
- int len = usb.host_recv();
- if(len>4){
- parseJoystick(usb.RECV_BUFFER);
- }
- }
- }
- void parseJoystick(unsigned char * buf)
- {
- //解析手把的資料
- uint8_t buttonCode = buf[4]&0xff;
- uint8_t buttonCode_ext = buf[5]&0xff;
- uint8_t joystickCodeL_V = buf[3]&0xff; //top 0 bottom ff
- uint8_t joystickCodeL_H = buf[2]&0xff; //left 0 right ff
- uint8_t joystickCodeR_V = buf[1]&0xff; //top 0 bottom ff
- uint8_t joystickCodeR_H = buf[0]&0xff; //left 0 right ff
- uint8_t directionButtonCode = (buttonCode&0xf);
- uint8_t rightButtonCode = (buttonCode&0xf0)>>4;
- switch(directionButtonCode){
- ...
- case 2:{
- //right
- //控制馬達右轉
- runMotor(MOTOR_1,100);
- runMotor(MOTOR_2,100);
- break;
- }
- ...
- case 6:{
- //left
- //控制馬達左轉
- runMotor(MOTOR_1,-100);
- runMotor(MOTOR_2,-100);
- break;
- }
- ...
- default:{
- // release;
- runMotor(MOTOR_1,0);
- runMotor(MOTOR_2,0);
- }
- }
- }
-
- void runMotor(int motor,int speed){
- //馬達驅動
- int _dirPin;
- int _pwmPin;
- if(motor==MOTOR_1){
- _dirPin = 7;
- _pwmPin = 6;
- }else if(motor==MOTOR_2){
- _dirPin = 4;
- _pwmPin = 5;
- }
- pinMode(_dirPin,OUTPUT);
- pinMode(_pwmPin,OUTPUT);
- digitalWrite(_dirPin,speed>0);
- analogWrite(_pwmPin,abs(speed));
- }
複製代碼
下載小車運動控制完整程式
arduino_2.4G_PS2.zip
(13.19 KB, 下載次數: 29)
|
|