I need to send one transmission and record multiple distances with 4 receivers, but everytime I use more than 2 receivers, the serial data does not print. What can I do?
P.S. I'm using 5 SRF-02 Sensors, 1 transmitter and 4 receivers all via I2C.
#include <Wire.h>
#define cmdByte 0x00 // Command byte
#define rangeByte 0x02 // Byte for start of ranging data
byte highByte = 0x00; // Stores high byte from ranging
byte lowByte = 0x00; // Stored low byte from ranging
int range = 0;
int rangeData;
void setup() {
Serial.begin(9600);
Wire.begin();
}
void loop() {
D0_1= getRange(0x70, 0x71);
Serial.println(D0_1);
D0_2= getRange(0x70, 0x72);
Serial.println(D0_2);
D0_3= getRange(0x70, 0x73);
Serial.println(D0_3);
D0_4= getRange(0x70, 0x74);
Serial.println(D0_4);
}
int getRange (uint8_t send_address, uint8_t rec_address)
{
Wire.beginTransmission(rec_address);
Wire.write((uint8_t)cmdByte);
Wire.write((uint8_t)0x56);
Wire.endTransmission();
Wire.beginTransmission(send_address); // Start communticating with SRF02
Wire.write((uint8_t)cmdByte); // Send Command Byte
Wire.write((uint8_t)0x5C); // Transmit an 8 cycle 40khz burst - no ranging takes place
Wire.endTransmission();
delay(80); // Wait for ranging to be complete
Wire.beginTransmission(rec_address); // start communicating with SRFmodule
Wire.write((uint8_t)rangeByte); // Call the register for start of ranging data
Wire.endTransmission();
Wire.requestFrom(rec_address, 2); // Request 2 bytes from SRF module
while(Wire.available() < 2); // Wait for data to arrive
highByte = Wire.read(); // Get high byte
lowByte = Wire.read(); // Get low byte
range = (highByte << 8 ) + lowByte; // Put them together
delay(120);
return(range); // Returns Range
}