【发布时间】:2019-08-30 17:35:40
【问题描述】:
我正在尝试使用 arduino uno 中的模拟引脚 A0 读取电压值,并将读取的电压传输到 Nodemcu,但在 NodeMcu 上没有获得与 Ex 的 Arduino 端相同的电压。对于 Arduino 的 5 伏,我在 Nodemcu 上只有 4 伏。
我已经使两个草图的延迟相等,甚至尝试过没有任何延迟 还尝试连接两个设备的接地引脚
ARDUINO CODE
#include <SoftwareSerial.h>
SoftwareSerial s(5,6);
void setup() {
s.begin(9600);
Serial.begin(9600);
}
void loop() {
// read the input on analog pin 0:
int ADCdata = analogRead(A0);
float voltage = (ADCdata * 0.0048828125);
Serial.println(ADCdata);
Serial.println(voltage);
if(s.available()>0)
{
s.write(voltage);
}
delay(1000);
}
NODEMCU CODE
#include <SoftwareSerial.h>
SoftwareSerial s(D6,D5);
void setup() {
s.begin(9600);
Serial.begin(9600);
}
void loop() {
s.write("s");
if (s.available()>0)
{
data=s.read();
Serial.println(data);
}
delay(1000);
}
【问题讨论】:
-
s.write(voltage);将写入sizeof(float)字节。在接收端,您需要读取那么多字节并重新组合为float。 -
在这种情况下,你可以提出一些替代方案
-
您可以使用
Serial.println(value)作为字符串发送并使用data = Serial.parseFloat()读取。 -
但 Serial.println() 用于在串行监视器上打印,如果我错了,请纠正我。
-
抱歉,忘记您使用的是
SoftwareSerial。是的,应该是s.println(value)和s.parseFloat()。
标签: arduino nodemcu serial-communication