由于蓝牙连接的Android应用程序,控制Arduino上的LED的问题



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

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

Arduino Sketch

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 写的。

主活动

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 打开"或"LED 关闭"按钮会在日志中显示以下内容

日志猫

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

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

Arduino方面什么也没发生。查看Arduino上的串行显示器,当我单击应用程序中的"led关闭"按钮时,我只能看到以下内容。单击"LED 亮起"按钮时,没有任何显示。

09:47:24.994 -> 255

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

草图看起来不错,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 的事情,不确定那是什么,但听起来很重要。

经过多次拔头发。我终于发现问题不在于我的Kotling代码或Arduino代码。问题是我使用的蓝牙屏蔽。

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

最新更新