我正在使用Arduino制作蓝牙四轴飞行器。我没有问题发信,但我似乎无法写或读数字。
我不太擅长编程所以请耐心等待。
C#代码:
private void button1_Click(object sender, EventArgs e)
{
int testInt = 35;
byte[] testByte = BitConverter.GetBytes(testInt);
serialPort1.Write(testByte, 0, 0);
int i = BitConverter.ToInt32(testByte,0);
label5.Text = i.ToString();
}
这里我试图转换为发送一个字节,起初我只是直接将其作为字符串发送。我从两个方面得到了相同的结果。
Arduino代码:
<code>void loop()
{
// put your main code here, to run repeatedly:
if(Serial.available())
{
int data = Serial.read();
if(data=='35')
{
digitalWrite(13, HIGH);
}
}
}
为什么LED不亮?如何从串口读取数字?
答案 0 :(得分:0)
这会发送一个字节(0到255):
private void button1_Click(object sender, EventArgs e) {
// set up to send only one byte
byte[] testByte = {35};
// send one byte
serialPort1.Write(testByte, 0, 1);
}
这会在Arduino上接收并解释它:
void loop() {
if (Serial.available()) {
byte data = Serial.read();
if (data == 35) {
digitalWrite(13, HIGH);
}
}
}
如果您认为可能发送大于255的数字,则发送字符串可能同样容易。在字符串末尾添加一个新行字符:
String testString = "35\n";
并使用新行让Arduino知道你已完成发送代码,如下所示:
#define MAX_SIZE 5;
char button[MAX_SIZE+1];
if (Serial.available()) {
int bytesRead = Serial.readBytesUntil ('\n', button, MAX_SIZE);
if (bytesRead > 0) {
button[bytesRead] = '\0';
int result = atoi(button);
if (result == 35) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}
}