ADKに対応していないAndroid端末にマイコンを繋いでADBインターフェースで通信できるMicroBridgeのmbed移植版。 mbedに繋いだサーボをAndroid端末から動かすサンプルプログラムです。 とりあえず暫定バージョンを公開します。 Dev Phone 1でのみ動作確認をしています。 USBのインターフェース番号を固定しているので他で繋がるかわかりません。

Dependencies:   TextLCD mbed

Committer:
jksoft
Date:
Sun Aug 21 14:36:35 2011 +0000
Revision:
0:dde3f92088d5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jksoft 0:dde3f92088d5 1 #include "mbed.h"
jksoft 0:dde3f92088d5 2 #include "Adb.h"
jksoft 0:dde3f92088d5 3 #include <TextLCD.h>
jksoft 0:dde3f92088d5 4 TextLCD lcd(p11, p12, p27, p28, p29, p30);
jksoft 0:dde3f92088d5 5 Connection * connection;
jksoft 0:dde3f92088d5 6
jksoft 0:dde3f92088d5 7 Serial pc(USBTX, USBRX);
jksoft 0:dde3f92088d5 8 PwmOut servo1(p26);
jksoft 0:dde3f92088d5 9 PwmOut servo2(p25);
jksoft 0:dde3f92088d5 10 DigitalIn sw1(p13);
jksoft 0:dde3f92088d5 11 DigitalOut led(LED1);
jksoft 0:dde3f92088d5 12
jksoft 0:dde3f92088d5 13 void adbEventHandler(Connection * connection, adb_eventType event, uint16_t length, uint8_t * data)
jksoft 0:dde3f92088d5 14 {
jksoft 0:dde3f92088d5 15 if (event == ADB_CONNECTION_RECEIVE)
jksoft 0:dde3f92088d5 16 {
jksoft 0:dde3f92088d5 17 printf("[ADB RECV]:%d %d\r\n",data[0],data[1]);
jksoft 0:dde3f92088d5 18 float val = ((float)data[0] * 5.5) + 1000.0;
jksoft 0:dde3f92088d5 19 servo1.pulsewidth_us(val);
jksoft 0:dde3f92088d5 20 val = ((float)data[1] * 5.5) + 1000.0;
jksoft 0:dde3f92088d5 21 servo2.pulsewidth_us(val);
jksoft 0:dde3f92088d5 22 }
jksoft 0:dde3f92088d5 23 }
jksoft 0:dde3f92088d5 24
jksoft 0:dde3f92088d5 25 int main()
jksoft 0:dde3f92088d5 26 {
jksoft 0:dde3f92088d5 27 int now=0,old;
jksoft 0:dde3f92088d5 28 unsigned short data = 0;
jksoft 0:dde3f92088d5 29
jksoft 0:dde3f92088d5 30 pc.baud(115200);
jksoft 0:dde3f92088d5 31 servo1.period_us(20000);
jksoft 0:dde3f92088d5 32 servo2.period_us(20000);
jksoft 0:dde3f92088d5 33 sw1.mode(PullUp);
jksoft 0:dde3f92088d5 34
jksoft 0:dde3f92088d5 35
jksoft 0:dde3f92088d5 36 // Initialise the ADB subsystem.
jksoft 0:dde3f92088d5 37 ADB::init();
jksoft 0:dde3f92088d5 38 // Open an ADB stream to the phone's shell. Auto-reconnect
jksoft 0:dde3f92088d5 39 connection = ADB::addConnection("tcp:4567", true, adbEventHandler);
jksoft 0:dde3f92088d5 40
jksoft 0:dde3f92088d5 41 while(1)
jksoft 0:dde3f92088d5 42 {
jksoft 0:dde3f92088d5 43
jksoft 0:dde3f92088d5 44 ADB::poll();
jksoft 0:dde3f92088d5 45
jksoft 0:dde3f92088d5 46 lcd.locate(0, 0);
jksoft 0:dde3f92088d5 47 lcd.printf("MicroBridge Test");
jksoft 0:dde3f92088d5 48
jksoft 0:dde3f92088d5 49 old = now;
jksoft 0:dde3f92088d5 50 now = sw1;
jksoft 0:dde3f92088d5 51 if((now == 1)&&(old==0))
jksoft 0:dde3f92088d5 52 {
jksoft 0:dde3f92088d5 53 printf("down key\r\n");
jksoft 0:dde3f92088d5 54 connection->write(2, (unsigned char*)&data);
jksoft 0:dde3f92088d5 55 lcd.locate(0, 1);
jksoft 0:dde3f92088d5 56 lcd.printf("COUNT = %d",data);
jksoft 0:dde3f92088d5 57
jksoft 0:dde3f92088d5 58 data++;
jksoft 0:dde3f92088d5 59 }
jksoft 0:dde3f92088d5 60 led = sw1;
jksoft 0:dde3f92088d5 61 }
jksoft 0:dde3f92088d5 62 }