xbee if语句中的Arduino Serial.read()
我试图完成一个小项目与水分传感器连接到Fio V3。 我还将Xbee S1模块连接到Fio的插座上 我已将以下代码上载到Fio:xbee if语句中的Arduino Serial.read(),arduino,xbee,Arduino,Xbee,我试图完成一个小项目与水分传感器连接到Fio V3。 我还将Xbee S1模块连接到Fio的插座上 我已将以下代码上载到Fio: int igrasia = 7; void setup() { Serial1.begin(9600); pinMode(igrasia, INPUT_PULLUP); } void loop(){ int sensorVal = digitalRead(igrasia); if (sensorVal == HIGH) { Serial1.println("
int igrasia = 7;
void setup()
{
Serial1.begin(9600);
pinMode(igrasia, INPUT_PULLUP);
}
void loop(){
int sensorVal = digitalRead(igrasia);
if (sensorVal == HIGH) {
Serial1.println("0"); // Send OK to xbee
}
else {
Serial1.println("1"); // Send NOT OK to xbee
}
delay(5000);
}
在我使用Xbee USB浏览器的电脑上,我每5秒接收一次X-CTU上的正确数据。
当传感器在一杯水外时为零(0),当传感器在一杯水内时为一(1)
我想把这些字节读到一个带有LCD屏幕和Xbee屏蔽的Arduino Uno上。因此,我已将以下代码上载到Uno:
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x38,16,2); // set the LCD address to 0x20 for a 16 chars
void setup(){
Serial.begin(9600);
//configure pin2 as an input and enable the internal pull-up resistor
// pinMode(8, INPUT_PULLUP);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
lcd.init(); // initialize the lcd
}
void loop(){
if(Serial.available())
{
char getData = Serial.read();
if (getData == '1')
{
Serial.print(getData);
digitalWrite(13, HIGH);
lcd.clear();
lcd.setCursor (0,0); // go to start of 1st line
lcd.print("ATTENTION !!!!");
lcd.setCursor (0,1); // go to start of 1st line
lcd.print("WET environment");
}
else {
Serial.print(getData);
digitalWrite(13, LOW);
lcd.clear();
lcd.setCursor (0,0); // go to start of 1st line
lcd.print("dry environment");
lcd.setCursor (0,1); // go to start of 1st line
lcd.print("all looks good!");
}
}
}
#包括
#包括
#包括
液晶I2C液晶显示器(0x38,16,2);//将16个字符的LCD地址设置为0x20
无效设置(){
Serial.begin(9600);
//将pin2配置为输入,并启用内部上拉电阻器
//pinMode(8,输入\上拉);
pinMode(13,输出);
数字写入(13,低);
lcd.init();//初始化lcd
}
void循环(){
if(Serial.available())
{
char getData=Serial.read();
如果(getData='1')
{
串行打印(getData);
数字写入(13,高);
lcd.clear();
lcd.setCursor(0,0);//转到第1行的开头
lcd.print(“注意!!”);
lcd.setCursor(0,1);//转到第1行的开头
lcd打印(“潮湿环境”);
}
否则{
串行打印(getData);
数字写入(13,低);
lcd.clear();
lcd.setCursor(0,0);//转到第1行的开头
lcd.打印(“干燥环境”);
lcd.setCursor(0,1);//转到第1行的开头
lcd.print(“一切看起来都很好!”);
}
}
}
它不能正常工作:-(
当传感器在水外时,我有正确的0功能。LCD显示器显示“干燥环境”
但当我把传感器放在水中时,LCD就不能按要求工作了。
即使我将传感器留在水中,LCD仍显示“干燥环境”
我尝试了传感器直接连接到Uno与液晶显示器连接,它的工作!
我想serial.read()和/或UNO上的If/loop语句有问题
有任何建议或建议吗?当您传输数据时,您将以
字符串的形式发送数据
在接收器上,您正在测试字符'1'
,'0'
字符串
以空字符(/u0000
)结尾,而字符不是。因此该条件始终失败。您可以尝试仅传输和测试字符。串行读数究竟是什么?您有几行打印调试类型信息。当您将其放入水中时,是否有任何更改?或者(如果上述输出始终相同),您在直接连接时使用了什么代码?将0/1替换为a/b,它可以工作。但是,它不能使用IF-else语句。我尝试了2个IF,效果非常好!您的专业水平令人印象深刻!