android - 从蓝牙连接的 Android 应用程序控制 Arduino 上的 LED 的问题

标签 android kotlin arduino

这是一个项目的开始,我遇到了一个问题。现在,我的应用程序只做两件事。检测并连接到由 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 编写的。

主 Activity

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()
        }
    }
}

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

单击应用程序中的“led on”或“led off”按钮会在日志中显示以下内容

逻辑猫

2019-09-24 09:47:15.891 9403-9403/com.example.pigcatcher D/MainActivity: Button clicked, info sent: 1

2019-09-24 09:47:24.975 9403-9403/com.example.pigcatcher D/MainActivity: Button clicked, info sent: 0

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

09:47:24.994 -> 255

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

最佳答案

草图看起来不错,Android 逻辑看起来也不错。假设您的蓝牙模块和 Arduino 之间的连接牢固,并且您已配对,我将对您通过蓝牙 socket 发送的内容进行故障排除。 我找到了一些与您的项目完全相同的项目的源代码,尽管是用 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 的一些事情,不确定那是什么,但听起来很重要。

关于android - 从蓝牙连接的 Android 应用程序控制 Arduino 上的 LED 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58085285/

相关文章:

kotlin - 我可以从 Kotlin 通用模块(多平台项目)加载资源吗

无法在 Arduino 环境中定义 A8

javascript - Android webkit 浏览器中的 XPCOM 支持?

java - 如何在android中使用带有 'onCheckedChanged'方法的switch语句?

android - 如何触发 ActivityAware 覆盖方法 onAttachedToActivity()?

android - StaggeredGridLayoutManager 中 itemTouchHelperCallback 中的困惑图 block

java - 将 utf-8 字符添加到字符串数组中

android - 我想将 chrome 自定义选项卡添加到我的应用程序中,如果用户没有安装 chrome 该怎么办

audio - 从 PyAudio 获取音量以在 Arduino 中使用

c++ - Arduino Uno 步进电机问题