Advertisement
miszczo

rw1990 ibutton keys

Dec 29th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.30 KB | None | 0 0
  1. #include <OneWire.h>
  2. #define pin 10
  3.  
  4. OneWire ibutton (pin); // Подключаем ключ к 10 пину дуни
  5.  
  6. byte addr[8]; //Буфер, хранящий в себе ид ключа
  7.  
  8. void setup(){
  9.  Serial.begin(115200);
  10. }
  11.  
  12. void loop(){
  13.   if (!ibutton.search (addr)){//Читаем ключ в буфер
  14.     ibutton.reset_search();
  15.     delay(200);
  16.     return;
  17.  }
  18.  
  19.   Serial.print(millis()/1000);
  20.   Serial.print("> ");
  21.   for (byte x = 0; x<8; x++){  
  22.     Serial.print(addr[x],HEX); //Печатаем содержимое буфера в консоль
  23.      Serial.print(" ");
  24.   }
  25.  
  26.   //compute crc//
  27.   byte crc;
  28.   crc = ibutton.crc8(addr, 7);
  29.   Serial.print("CRC: ");
  30.   Serial.println(crc,HEX);
  31.   if ( Serial.read() == 'w' ){
  32.     ibutton.skip();ibutton.reset();ibutton.write(0x33);
  33.     Serial.print("  ID before write:");
  34.     for (byte x=0; x<8; x++){
  35.       Serial.print(' ');
  36.       Serial.print(ibutton.read(), HEX);
  37.     }
  38.     // send reset
  39.     ibutton.skip();
  40.     ibutton.reset();
  41.     // send 0xD1
  42.     ibutton.write(0xD1);
  43.     // send logical 0
  44.     digitalWrite(10, LOW); pinMode(10, OUTPUT); delayMicroseconds(60);
  45.     pinMode(10, INPUT); digitalWrite(10, HIGH); delay(10);
  46.    
  47.     Serial.print('\n');
  48.     Serial.print("  Writing iButton ID:\n    ");
  49.     // Хочу записать вот это ид 1:CF:E0:62:E:0:0:3
  50.     byte newID[8] = {0x01, 0xCF, 0xE0, 0x62, 0x0E, 0x00, 0x00, 0x3};
  51.                      
  52.     ibutton.skip();
  53.     ibutton.reset();
  54.     ibutton.write(0xD5);
  55.     for (byte x = 0; x<8; x++){
  56.       writeByte(newID[x]);
  57.       Serial.print('*');
  58.     }
  59.     Serial.print('\n');
  60.     ibutton.reset();
  61.     // send 0xD1
  62.     ibutton.write(0xD1);
  63.     //send logical 1
  64.     digitalWrite(10, LOW); pinMode(10, OUTPUT); delayMicroseconds(10);
  65.     pinMode(10, INPUT); digitalWrite(10, HIGH); delay(10);
  66.  
  67.   }
  68. }
  69.  
  70. int writeByte(byte data){
  71.   int data_bit;
  72.   for(data_bit=0; data_bit<8; data_bit++){
  73.     if (data & 1){
  74.       digitalWrite(pin, LOW); pinMode(pin, OUTPUT);
  75.       delayMicroseconds(60);
  76.       pinMode(pin, INPUT); digitalWrite(pin, HIGH);
  77.       delay(10);
  78.     } else {
  79.       digitalWrite(pin, LOW); pinMode(pin, OUTPUT);
  80.       pinMode(pin, INPUT); digitalWrite(pin, HIGH);
  81.       delay(10);
  82.     }
  83.     data = data >> 1;
  84.   }
  85.   return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement