Загрузка данных


#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);
}