我正试图用连接到Fio V3的湿度传感器完成一个小项目。 我还将Xbee S1模块连接到Fio的插座。Arduino Serial.read()from xbee if语句
我上传下面的代码吸入氧浓度:
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探险家我的电脑我收到的X-CTU正确的数据每5秒。 当传感器位于一杯水之外时为零(0),而传感器位于一杯水中时为零(1)。
我想阅读这些字节到一个Arduino Uno与液晶屏幕和Xbee盾。为此,我已经上传到欧诺下面的代码:
#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!");
}
}
}
它无法正常工作: - ( 我有正确的功能为0,而传感器是水的液晶显示器之外显示“干燥的环境中。 ”
但只要我把在水中的传感器,LCD是不工作的要求。 即使我离开了水的LCD仍显示传感器‘干燥的环境’。
我试着传感器直接连接到Uno并附带液晶显示器,并且可以工作! 我认为UNO上的serial.read()和/或我的If/loop语句有问题。
任何建议或意见?
什么是您的串行读数?您有几行可以在那里打印调试类型信息。当你把它放在水里时,有没有变化? – djUniversal 2014-11-03 08:20:14
或者(如果上面的输出总是相同的),您直接连接时使用了哪些代码? – djUniversal 2014-11-03 08:21:32