【问题标题】:Issues controlling LEDs on Arduino Due from bluetooth connected Android App由于蓝牙连接的 Android 应用程序在 Arduino 上控制 LED 的问题
【发布时间】:2019-09-24 17:16:06
【问题描述】:

这是一个项目的开始,我遇到了一个问题。现在,我的应用程序只做两件事。检测并连接到由 Arduino Due 控制的特定 SparkFun 蓝牙模块/外壳。这很好用。

它应该做的另一件事(但不是)是打开/关闭也由 Arduino 控制的 LED 灯。我将布局下面的代码和一些日志。

Arduino 草图

char Incoming_value = 0;           //Variable for storing Incoming_value
const int pwmPin = 13;

void setup() 
{
  Serial.begin(9600);             //Sets the data rate in bits per second (baud) for serial data 
transmission
  pinMode(pwmPin, OUTPUT);        //Sets digital pin 13 as output pin
}

void loop()
{
  if(Serial.available() > 0)  
  {
    Incoming_value = Serial.read();      //Read incoming data, store it into variable Incoming_value
    Serial.print(Incoming_value);        //Print Value of Incoming_value in Serial monitor
    Serial.print("\n");                  //New line 
    if(Incoming_value == '1')            //Checks whether value of Incoming_value is equal to 1 
      digitalWrite(pwmPin, HIGH);        //If value is 1 then LED turns ON
    else if(Incoming_value == '0')       //Checks whether value of Incoming_value is equal to 0
      digitalWrite(pwmPin, LOW);         //If value is 0 then LED turns OFF
  }                            

}

我没有使用模拟器。这正在手机上进行测试。下面是相关的代码。 提醒一下,这是用 Kotlin 编写的。

MainActivity

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
...........
<snip>
...........

button_led_on.setOnClickListener { sendCommand("1")}
button_led_off.setOnClickListener { sendCommand("0")}
}

private fun sendCommand(input: String) {
    if (bluetoothSocket != null) {
        try {
            bluetoothSocket!!.outputStream.write(input.toByteArray())
            Log.i(LOGTAG, "Button clicked, info sent: $input")
        } catch (e: IOException) {
            e.printStackTrace()
        }
    }
}

如前所述,一切都能正常编译和运行。蓝牙部分正常工作,按钮全部正常工作,并且似乎正常工作。

单击应用程序中的“开启”或“关闭”按钮会在日志中显示以下内容

Logcat

2019-09-24 09:47:15.891 9403-9403/com.example.pigcatcher D/MainActivity:单击按钮,发送信息:1

2019-09-24 09:47:24.975 9403-9403/com.example.pigcatcher D/MainActivity:单击按钮,发送信息:0

在 Arduino 方面没有发生任何事情。查看 Arduino 上的串行监视器,当我单击应用程序中的“led off”按钮时,我只会看到以下内容。单击“led on”按钮时没有任何显示。

09:47:24.994 -> 255

我觉得我在 Arduino 上没有正确配置某些东西……但我不知道那可能是什么。我已经尝试了其他一些帖子中建议的不同引脚,但这也不起作用。

【问题讨论】:

    标签: android kotlin arduino


    【解决方案1】:

    草图看起来不错,Android 逻辑看起来不错。假设您的蓝牙模块和 Arduino 之间的连接牢固,并且您已配对,我将排除您通过蓝牙套接字发送的确切内容。 我找到了一些与您的项目完全一样的源代码,尽管是在 Java 中:https://github.com/Mayoogh/Arduino-Bluetooth-Basic/blob/master/LED-master/app/src/main/java/com/led_on_off/led/ledControl.java

    我会验证您的蓝牙连接是否正确,以及您发送的数据是否正确。我注意到您记录的内容与您实际发送的内容不同(在 Android 上)。我还注意到有关设置 SPP UUID 的一些事情,不确定那是什么,但听起来很重要。

    【讨论】:

    • 我看过你链接到的那个repro。我的代码非常接近正在做的事情。手机和 Arduino 之间的蓝牙已正确配对和连接(UUID 正确)。我会研究更好的日志记录。
    【解决方案2】:

    在拉了很多头发之后。我终于发现问题不在于我的 Kotling 代码或 Arduino 代码。问题出在我使用的蓝牙防护罩上。

    我不知道为什么,但是用另一个替换它并且没有进行任何代码更改,一切都开始按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多