gpt4 book ai didi

arduino - 按钮开关Arduino到处理: serial output giving null

转载 作者:行者123 更新时间:2023-12-05 00:14:12 25 4
gpt4 key购买 nike

我正在尝试使用 Arduino 中的按钮开关来触发 Processing 中的视觉显示。我使用“HIGH”和“LOW”来识别按钮是否被按下。

但是,我的代码根据按钮状态不断给出 null 而不是给出“HIGH”或“LOW”。我认为这是非常基本的,但我很迷茫。任何帮助或评论将不胜感激!

下面分别是我的 Arduino 和 Processing 代码。

const int buttonPin = 2; 
const int LEDPin = 13;

int buttonState = 0;

void setup() {
pinMode(buttonPin, INPUT);
pinMode(LEDPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
int analogValue = analogRead(A0)/4;
Serial.write(analogValue);
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
Serial.write(HIGH);
digitalWrite(LEDPin, HIGH);
} else {
Serial.write(LOW);
digitalWrite(LEDPin, LOW);
}
delay(100);
}

处理代码:

import processing.serial.*;
Serial myPort;
String val;

void setup() {
size(400,400);
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 9600);
}

void draw() {
if (myPort.available() > 0) {
val = myPort.readStringUntil('\n');
println(val);
if (val == "HIGH") {
background(127,0,0);
}
if (val == "LOW") {
background(144, 26, 251);
}
}
}

最佳答案

write()

将二进制数据写入串行端口。该数据作为一个字节或一系列字节发送。

Serial.write(str) 

str:作为一系列字节发送的字符串

所以当你使用 write HIGHLOWSerial.write ,它将作为一系列字节发送。编辑您的处理部分以处理传入的字节。如下:

import processing.serial.*;
Serial myPort;
String val;
int len; //length of byte array

void setup() {
size(400,400);
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 9600);
}

void draw() {
if ((len=myPort.available()) > 0) {
for(i=0;i<len;i++)
myByteArray=myPort.read();
String val = String(myByteArray);
println(val);
if (val == "HIGH") {
background(127,0,0);
}
if (val == "LOW") {
background(144, 26, 251);
}
}
}

关于arduino - 按钮开关Arduino到处理: serial output giving null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47541683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com