Как использовать в цикле for названия переменных, чтобы они перебирались по очереди
- Войдите на сайт для отправки комментариев
Втр, 26/03/2019 - 19:31
Здравствуйте.
у меня есть много датчиков ds18b20 пока 15, но в дальнейшем будет еще больше, их адреса известны и объявлены как byte,
byte addr1[8]={0x28,0xFF,0x94,0x84,0x24,0x17,0x03,0x5D};
каждый получает температуру и записывает в свою переменную t1,t2,t3 и так далее,(объявлены как volatile int) как облагородить такой кусок кода
ds.reset(); ds.select(addr1); ds.write(0xBE); // Read Scratchpad (чтение регистров) t1 = ds.read() | (ds.read()<<8); //прочитаны 2 байта ds.reset(); ds.select(addr2); ds.write(0xBE); // Read Scratchpad (чтение регистров) t2 = ds.read() | (ds.read()<<8); //прочитаны 2 байта ds.reset(); ds.select(addr3); ds.write(0xBE); // Read Scratchpad (чтение регистров) t3 = ds.read() | (ds.read()<<8); //прочитаны 2 байта ds.reset(); ds.select(addr4); ds.write(0xBE); // Read Scratchpad (чтение регистров) t4 = ds.read() | (ds.read()<<8); //прочитаны 2 байта
и вот такой на вывод
Serial.print(t1/16.0); // выводим как десятичное число - то же, что и формат "DEC" Serial.print(" t2= "); Serial.print(t2/16.0); Serial.print(" t3= "); Serial.print(t3/16.0); Serial.print(" t4= "); Serial.print(tt4);
плюс, я хочу это все на sd карту писать и там тоже будет такая простыня
пытался гуглить, но не сумел
пробовал вот так, не работает
for (int i=1; i<15;i++){ Serial.print(" t[i]= "); Serial.print(t[i]/16.0); }
говорит "'t' was not declared in this scope"
вот такая проблемка, прошу помочь.
Надо использовать одномерный массив для температур и двухмерный массив доя адресов.
Спасибо, так и думал, что что-то здесь не то, буду разбираться с массивами
окажу медвежью услугу... один из первых моих кодов... хотя проще самому написать ИМХО ... с мусором и delay
спасибо, проверку на crc у вас стыбрю, а то я сам не докумекал