Всем привет! Я тут новенький, так что не судите строго если что не так.
Нашёл на старом форуме статью о подключении matrix II к ардуино и там был пример скетча:
`#include <OneWire.h>
OneWire ds(7); // выход считывателя на 7 пин
byte addr[8];// буфер приема
void setup() {// стартовая инициализация
Serial.begin(9600);
delay(100);
Serial.println(“Start…”);
}
void loop() {
if(ds.reset()){ // если обнаружено устройттво
ds.write(0x33); // отправляем команду “считать ROM”
delay(50); // на всякий случай ждем
for(int i=0;i<8;i++){
addr[i] = ds.read(); // считываем
}
Serial.print(“ROM =”); // выводим
for(int i = 0; i < 8; i++) {
Serial.write(’ ');
Serial.print(addr[i], HEX);
}
Serial.println();
delay(500);
}
}`
Все подключил, скетч залил, но имею вот такое в консоли, периодически выскакивают FF FF FF FF FF FF FF FF
Подскажите если кто сталкивался, как победить такое не хорошее поведение схемы?
Тем самым я только буду отсекать эти пропуски, сами то они никуда не денутся. Я грешу на схему. Подключил я DATA0 на пин 7 и GND на GND. Но думаю что если это OneWire то , что то мне подсказывает, что нужно воткнуть сопротивление 4.7 ком. Но куда? В схеме с датчиком DS18B20 он идет между плюсом и DATA. Но тут то нет плюса, только дата и земля(
Пока только не решил один вопрос. Приходит HEX карты в виде 150bd41069037. А на самой карте десятеричный серийник, вот как они связаны, какой алгоритм дешифровки хекса в этот самый серийник на карте…
Так, связь нашел. Вот HEX: 150bd41069037, а вот серийник: 4308304
Калькулятор говорит, что HEX числа 4308304 равен 41 BD 50, а это часть приходящего HEX от ключа после первой единицы но в обратном порядке. Вот теперь вопрос, как это в код воткнуть, ну нужна какая то функция для разбора хекса в число.
У вас массив байтов, в этом массиве 1-3 байты хранят нужное число, зачем переводить их в строку и затем конвертировать строку в число? Соберите три байта в uint32_t число - и никакой перекодировки не понадобится