#include <OneWire.h>
// Чип сидит на пине D2
OneWire ds(2);
void setup(void) {
Serial.begin(9600);
Serial.println("--- Старт сканирования шины 1-Wire ---");
}
void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
// Ищем устройство на линии
if (!ds.search(addr)) {
Serial.println("Чип не присоединен или не найден. Ищу снова...");
ds.reset_search();
delay(3000);
return;
}
// Если нашли, выводим его уникальный 64-битный адрес (ROM)
Serial.print("УРА! Чип ответил! ROM =");
for(i = 0; i < 8; i++) {
Serial.write(' ');
if (addr[i] < 16) Serial.print("0");
Serial.print(addr[i], HEX);
}
// Проверяем контрольную сумму адреса (CRC)
if (OneWire::crc8(addr, 7) != addr[7]) {
Serial.println(" -> Ошибка: несовпадение CRC адреса!");
return;
}
Serial.println();
// Первый байт адреса (Family Code) говорит о типе микросхемы
Serial.print("Код семейства (Family Code): 0x");
Serial.println(addr[0], HEX);
if (addr[0] == 0x23) {
Serial.println("Тип: Похоже на DS2433 (китайский клон без криптозащиты). Его можно шить!");
} else if (addr[0] == 0x43) {
Serial.println("Тип: Похоже на DS2432 / DS28E01 (с защитой SHA-1). Тут всё сложнее.");
} else {
Serial.println("Тип: Неизвестный китайский кристалл.");
}
Serial.println("---------------------------------------");
delay(3000);
}