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