【问题标题】:How to tell if an Android device has Open Accessory Mode如何判断 Android 设备是否具有开放附件模式
【发布时间】:2012-05-08 21:28:46
【问题描述】:

有人知道如何检查吗?我刚刚购买了三星 Galaxy Tab 2(运行 Android 4.0.3 的 7" 版本),打算用它连接到我的 Arduino Mega ADK 板。但我不确定 Galaxy 选项卡是否具有此处列出的必要打开附件模式: http://developer.android.com/guide/topics/usb/adk.html

似乎仅仅因为软件是正确的并不意味着设备是兼容的,并且这因制造商而异。由于这是一款新平板电脑,因此我没有找到任何东西。有什么帮助吗?

【问题讨论】:

  • 您尝试过连接但没有成功吗?
  • 是的,我还没有任何工作要做。不过,这和自己造车一样复杂。但我想知道我的平板电脑至少兼容,然后再对其他所有问题进行故障排除。
  • 您是否已经在 ADK 板上安装了草图并尝试将其插入但 ADK 演示应用程序无法识别它?
  • 是的,我已经把固件上传到ADK板子上,并在平板上安装了demo app。然后我将平板电脑插入 ADK 板,并将 ADK 板插入我的计算机。但是平板电脑永远不会通过“请连接 DemoKit 板”屏幕。此外,当我将平板电脑插入 ADK 板时,平板电脑正在通电……仅此而已

标签: android arduino adk


【解决方案1】:

将 Galaxy Nexus 添加到列表中。

Nexus S ICS 4.0.4 工作正常,4.0.3 坏了。

确保电源充足 - 如果板 + 电话串联由 USB 集线器供电,至少 Nexus S 会脱落并间歇性地停止看到 ADK 板。

【讨论】:

    【解决方案2】:

    我不知道你如何才能知道你的设备是否有这种 ADK 模式(我在尝试设置我的东西时未能尝试遵循该模式。)但这里有一些我发现的问题:

    确保您使用的是 Arduino IDE v1.0,我尝试了 23 一段时间。但是你必须使用newset。

    我还必须编辑草图才能使其正常工作。这是我的新设置方法。我刚刚添加了一些打印语句,这样我就可以知道它在哪个部分失败了。对我来说,init_joystick ( 5 ); 电话是它正在死去的地方。我对此发表了评论,一切顺利。

    void setup()
    {
        Serial.begin(115200);
        Serial.print("\r\nStart");
    
        init_leds();
            Serial.print("\r\nDone LED");
        init_relays();
            Serial.print("\r\nDone Relay");
        init_buttons();
            Serial.print("\r\nDone button");
        //init_joystick( 5 );
    
    
        // autocalibrate OFF
        touch_robot.set_CS_AutocaL_Millis(0xFFFFFFFF);
    
        servos[0].attach(SERVO1);
        servos[0].write(90);
        servos[1].attach(SERVO2);
        servos[1].write(90);
        servos[2].attach(SERVO3);
        servos[2].write(90);
    
    
        b1 = digitalRead(BUTTON1);
        b2 = digitalRead(BUTTON2);
        b3 = digitalRead(BUTTON3);
        //b4 = digitalRead(JOY_SWITCH);
        c = 0;
    
        acc.powerOn();
            Serial.print("\r\nDone Setup");
    }
    

    对 ADK 演示套件草图中的 Setup 方法的这种更改允许注册连接并让应用程序执行其他漂亮的事情。

    但是,我只在我知道支持 ADK 的设备上进行了测试:

    • 银河系
    • Nexus S
    • 摩托罗拉 Xoom

    您必须为 ADK 设备提供足够的电源 - 当 ADK 设备通过 USB 集线器供电时,至少 Nexus S 可能会不稳定。迹象表明 ADK 模式无缘无故地消失了。

    【讨论】:

    • 如果您添加这些打印语句,当您将平板电脑插入 ADK 时,是否会在串行控制台中看到它们中的任何一个?
    • 有什么方法可以调试 ADK 板上的 USB 端口? (只是为了确保这不是问题)
    • 您的串行控制台中的波特率是否设置为 115200?您应该只在其中看到人类可读的字符串。如果您看到乱码,我猜这是由于不同的波特率造成的。
    【解决方案3】:

    我有一个三星 Galaxy Tab 2(运行 Android 4.0.3 的 7 英寸版本)和一个 Android 附件,它可以与至少 3 台其他设备一起使用,但不在 Tab 上。可能是因为它在 4.0.3 中损坏了(与 Nexus S 一样,其中 4.0.3 已损坏但 4.0.4 未损坏)。此外,在其他三星设备上运行的 2.3.4+ 已剥离 USB 附件库。

    【讨论】:

    • 我有 android galaxy tab 2,操作系统版本为 4.0.4,但 Android 附件仍无法正常工作。同一应用程序在操作系统版本 2.3.5 的 HTC explorer 上运行。
    【解决方案4】:

    我刚买了一个 7 英寸屏幕的三星 Galaxy Tab 2。它运行的是 Android 4.0.3,我可以让它与 Arduino Mega ADK 一起工作!我正在运行 Arduino 0023 接口来编译代码。 Arduino 1.0 接口破坏了太多库,所以我切换到旧接口。注释掉“init_joystick(5);”行如果你没有盾牌。我可以使用示波器验证 3 个舵机的波形是否正确。

    如果您仍然无法使其工作,请尝试注释掉与操纵杆相关的任何代码,因为它可能挂在 I2C 通信上。否则,请访问 dfrobot 网站并以 60 美元左右的价格订购一个 ADK 防护罩,以便正确读取操纵杆。这是我的下一步。

    更新:注意到平板电脑的更新速度非常慢。如果你没有盾牌,修复是注释掉这一行:

    //touchcount = touch_robot.capSense(5);

    触摸设备连接到串行线路,所以我假设没有一个会由于超时而导致长时间延迟。

    【讨论】:

      【解决方案5】:

      capsense 的问题是因为 capsense 不存在! 您需要将 CapacitiveSensor.h 添加到项目中,然后将所有对 capsense 的引用更改为 CapacitiveSensor 以解决这些错误(arduino ide 1.5.2)。 仍然可以连接。(4.1.3) 我想知道是否喜欢 SExperia mini pro 并需要一个扩展坞。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-24
        • 2011-10-31
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        • 1970-01-01
        相关资源
        最近更新 更多