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

Dependencies:   TextLCD mbed

Revision:
0:dde3f92088d5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Aug 21 14:36:35 2011 +0000
@@ -0,0 +1,62 @@
+#include "mbed.h"
+#include "Adb.h"
+#include <TextLCD.h>
+TextLCD lcd(p11, p12, p27, p28, p29, p30);
+Connection * connection;
+
+Serial pc(USBTX, USBRX);
+PwmOut servo1(p26);
+PwmOut servo2(p25);
+DigitalIn sw1(p13);
+DigitalOut led(LED1);
+
+void adbEventHandler(Connection * connection, adb_eventType event, uint16_t length, uint8_t * data)
+{
+    if (event == ADB_CONNECTION_RECEIVE)
+    {
+        printf("[ADB RECV]:%d   %d\r\n",data[0],data[1]);
+        float val = ((float)data[0] * 5.5) + 1000.0;
+        servo1.pulsewidth_us(val);
+        val = ((float)data[1] * 5.5) + 1000.0;
+        servo2.pulsewidth_us(val);
+    }
+}
+
+int main()
+{
+    int now=0,old;
+    unsigned short data = 0;
+    
+    pc.baud(115200);
+    servo1.period_us(20000);
+    servo2.period_us(20000);
+    sw1.mode(PullUp);
+    
+    
+    // Initialise the ADB subsystem.  
+    ADB::init();
+    // Open an ADB stream to the phone's shell. Auto-reconnect
+    connection = ADB::addConnection("tcp:4567", true, adbEventHandler);
+    
+    while(1)
+    {
+    
+        ADB::poll();
+        
+        lcd.locate(0, 0);
+        lcd.printf("MicroBridge Test");
+        
+        old = now;
+        now = sw1;
+        if((now == 1)&&(old==0))
+        {
+            printf("down key\r\n");
+            connection->write(2, (unsigned char*)&data);
+            lcd.locate(0, 1);
+            lcd.printf("COUNT = %d",data);
+
+            data++;
+        }
+        led = sw1;
+    }
+}