【发布时间】: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 上没有正确配置某些东西……但我不知道那可能是什么。我已经尝试了其他一些帖子中建议的不同引脚,但这也不起作用。
【问题讨论】: