Как использовать два независимых считывателя iButton?

Vittorio
Offline
Зарегистрирован: 02.02.2015

Подскажите, как можно с одним контроллером использовать два считывателя iButton? Мне нужно однозначно определить к какому именно пульту (считывателю) приложен ключ. Если их подключить параллельно, этого не определить, будут только ключи различаться, а мне надо, чтобы у администратора клуба и у пользователей были разные считыватели. Значит, повесить его на другой пин. Но как указать библиотеке, что надо поочередно опрашивать эти два пина?

#include <OneWire.h> // http://www.pjrc.com/teensy/td_libs_OneWire.html
#define IBUTTON_PIN 9
#define RELAY_PIN 6

byte key[8] = {1,16,103,186,1,0,0,7};

OneWire ds(IBUTTON_PIN);    

void setup(void) 
{  
  pinMode(RELAY_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop()
{ 
  byte addr[8];
  byte val = 0;

  if (ds.search(addr)) 
  {
    Serial.print("R=");
    for (byte i = 0; i < 8; i++) 
    {
      Serial.print(addr[i], DEC);
      Serial.print(" ");
      if (addr[i] == key[i]) val++;
    }
    Serial.println();
    ds.reset();

    if (val == 8) 
    {
      Serial.println("OPEN!");
      digitalWrite(RELAY_PIN, HIGH);
      delay(3000);
      digitalWrite(RELAY_PIN, LOW); 
    }
    else
    {
      Serial.println("DENY!");
    }
    ds.reset_search();   
  }  
}
toc
Offline
Зарегистрирован: 09.02.2013

попробуйте для каждого пина свой экземпляр.
удалите строку 07. добавьте

OneWire dsADMIN(IBUTTON_PIN);
OneWire dsPOSETITEL(IBUTTON_PIN2);
...