我必须为Uni做一个项目,该项目使用2个arduino uno,2个HC 05蓝牙模块和每个arduino 2个传感器。我已将模块设置为从站,而主站仅连接到从站。
当我尝试从从机发送数据以供主机读取时,它会一直读取0。
我正在使用Arduino IDE,没有错误,一切正常。
这是我到目前为止的代码。
此外,我想将2个传感器的数据从从设备发送到主设备,但我不知道该怎么做。
从站代码
changePageArray()
主密码
#include <SoftwareSerial.h>
#define TILT 7 // tilt sensor pin
#define LDR 8 //light intensity sensor pin
#define rxPin 10
#define txPin 11
SoftwareSerial nodeCommunication = SoftwareSerial(rxPin, txPin);
int sentBytes; ////// SLAVE CODE
byte data[2];
void setup() {
Serial.begin(9600);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
pinMode(TILT, INPUT);
pinMode(LDR, INPUT);
Serial.begin(9600);
nodeCommunication.begin(9600);
delay(2000);
}
void loop() {
//int LDRval = analogRead(LDR); // light intensity sensor (candela)
//int Tilt_Sensed = digitalRead(TILT);
data[0] = analogRead(LDR);
data[1] = digitalRead(TILT);
if(nodeCommunication.available()){
sentBytes = nodeCommunication.write(data[0]);
Serial.println("I reached this if");
}
Serial.println(analogRead(LDR));
Serial.println(sentBytes);
delay(2000);
}
请告诉我我在做什么错。非常感谢!
答案 0 :(得分:1)
byte data = 1; - should be just byte data;
您是否检查了TX / RX连接?来自主机的TX必须连接至从机的RX,反之亦然。 Als GND必须彼此连接。
然后,让主设备(发送方)只是对从设备(接收方)进行Serial.write(在您的情况下为nodeCommunication.write())。
是这样的:
大师:
#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
byte data = 0x01; //Hex value for ''1''
SoftwareSerial nodeCommunication = SoftwareSerial(rxPin, txPin);
void setup()
{
Serial.begin(9600);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
nodeCommunication.begin(9600);
}
void loop()
{
nodeCommunication.write(data); //Sends byte data to slave
delay(1000);
}
从站:
#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
byte incoming
SoftwareSerial nodeCommunication = SoftwareSerial(rxPin, txPin);
void setup()
{
Serial.begin(9600);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
nodeCommunication.begin(9600);
}
void loop()
{
if(nodeCommunication.available > 0) //Only if data is available
{
byte incoming = nodeCommunication.read(); //read byte from master
Serial.println("Incoming = ");
Serial.println(incoming);
}
else
{
Serial.println("No data available....");
}
}
建立串行通信后,下一步就是实现DHT值。