从一堆 1-wire 设备中,我想将设备 rom 地址写入数组。我尝试了很多选择,但显然我不知道如何正确地做到这一点。
在下面的代码中,在设备搜索循环中,我得到了我期望的打印在串行线上的地址。但是主循环的打印输出表明我可以在我的方法中将此地址存储在一个数组中......
#include <OneWire.h>
// http://www.pjrc.com/teensy/td_libs_OneWire.html
OneWire ds(2);
void setup(void) {
Serial.begin(9600);
while (!Serial) {
}
}
unsigned char UIDs[12];
int indx=0;
void getDeviceAddresses(void)
{
int i=0;
byte present = 0;
byte done = 0;
byte data[12];
byte addr[8];
while ( !done )
{
if ( ds.search(addr) != 1)
{
Serial.print("No more addresses.\n");
ds.reset_search();
done = 1;
delay(1000);
indx=0;
return;
}
else
{
Serial.print("Sensors");
Serial.print(indx);
Serial.print(" address is:\t");
indx++;
//read each byte in the address array
for( i = 0; i < 8; i++) {
//Serial.print("0x");
if (addr[i] < 16) {
Serial.print('0');
}
// print each byte in the address array in hex format
UIDs[indx]=(UIDs[indx]+(addr[i], HEX)); // I guess this is not how to do it....
Serial.print(addr[i], HEX);
}
}
Serial.println();
}
}
void loop (){
getDeviceAddresses();
int i=0;
while (true) {
for ( indx = 0; indx < 13; indx++) {
Serial.println(UIDs[indx]);
}
delay(4000);
}
}
Sensors0 address is: 106C402502080064
Sensors1 address is: 101E3C25020800DE
Sensors2 address is: 10614C250208000F
Sensors3 address is: 10513325020800E0
Sensors4 address is: 10094B250208003C
Sensors5 address is: 104D342502080097
Sensors6 address is: 10FD4025020800E2
Sensors7 address is: 10534025020800AD
Sensors8 address is: 1047672502080083
No more addresses.
0
128
128
128
128
128
128
128
128
128
0
0
12