我刚刚开始在我的项目中使用ArduinoJson库。我的目标是使用json格式从我的arduino nano使用BT向RasPi发送三个传感器值。此外,通过从BT接收“0”或“1”来控制继电器。
我已成功发送数据。但是,当我包含以下代码时:(读取串行数据) if(Serial.available> 0) { z = Serial.read(); ............... }
我发送'1';我的数据传输受到干扰,json字符串受到影响。当我发送'0'时,它会恢复正常。
我需要帮助来解决这个问题,因为我无法找出我的错误!请做好帮助!!
我的代码:
#include <ArduinoJson.h>
#include <SoftwareSerial.h>
#include <DHT.h>
#define DHTPIN 12 // what pin we're connected to
#define DHTTYPE DHT11 // DHT 11 sensor
DHT dht(DHTPIN, DHTTYPE); //initilize the DHT sensor
int ldr = A0; // LDR connected to A0
int relay = 13;
float h,t;
int rx = 11; // softwareserial rx of arduino is pin 11
int tx = 10; // softwareserial tx of arduino is pin 12
SoftwareSerial mySerial(rx,tx);
int l; // variable to store the value coming from the sensor
int bt = 0; // variable to store incoming BT data
void setup()
{
pinMode(relay, OUTPUT);
pinMode(ldr, INPUT);
Serial.begin(9600);
mySerial.begin(9600);
mySerial.println(" Project FLIP");
mySerial.println("sensor testing");
mySerial.println(" DHT11 test!");
dht.begin();
delay(2000);
}
void loop()
{
humidity_read();//read humidity value
temperature_read();//read temperature
light_read(); //read LDR value
jason_print();
relay_control();//control relay by reading serial data 0=off, 1=on
jason_print();
}
void jason_print()
{
StaticJsonBuffer<200> temp;
JsonObject& root = temp.createObject();
root["humidity"] = h;
root["temp"] = t;
root["light"] = l;
root.printTo(Serial);
Serial.println();
delay(1000);
}
void humidity_read()
{
h = dht.readHumidity(); //
}
void temperature_read()
{
t = dht.readTemperature(); // Read temperature as Celsius (the default)
}
void relay_control()
{
if (Serial.available() > 0)
{
bt = Serial.read();
if (bt == '1')
{
digitalWrite(relay, HIGH);
}
else if (bt == '0')
{
digitalWrite(relay, LOW);
}
}
}
void light_read()
{
l = analogRead(ldr); //Read LDR value
}
答案 0 :(得分:0)
我尝试使用软件串行概念,相同的代码似乎工作得很好!我将HC-05 BT模块连接到D10&amp; 11个arduino引脚,我成功地使用我的手机控制继电器。另外,也不会干扰正在传输的json数据。
但是,如果我使用arduino IDE的串行监视器来执行相同的操作,我仍然不知道为什么会出现问题..