/*
Example program for AND-Relay testing
*/

#include <Wire.h>

#define adr B0100100  //adres dla układu PCF8574P B01001XY  gdzie X to ustawienie A1, Y ustawienie A0
//A0 i A1 podłączone do 0

//#define expander B0111000  //adres dla układu PCF8574AP B01110XY  gdzie X to ustawienie A1, Y ustawienie A0
//A0 i A1 podłączone do 0

void setup() {
  Wire.begin();
}

void loop() {
  Relay_on(0); //załacz pierwszy przekaźnik
  delay(1000);
  Relay_on(1); //załacz drugi przekaźnik
  delay(1000);
  Relay_on(2); //załacz trzeci przekaźnik
  delay(1000);
  Relay_on(3); //załacz czwarty przekaźnik
  delay(1000);
  Relay_off(0); //wyłacz pierwszy przekaźnik
  delay(1000);
  Relay_off(1); //wyłacz drugi przekaźnik
  delay(1000);
  Relay_off(2); //wyłacz trzzeci przekaźnik
  delay(1000);
  Relay_off(3); //wyłacz czwarty przekaźnik
  delay(1000);
}


 
void Relay_on(byte _data ) {

  byte _data2;
  Wire.requestFrom(adr, 1);
  if(Wire.available()) {
    _data2 = Wire.receive();
  }

  Wire.beginTransmission(adr);
  Wire.send(_data2 | 1<<_data);
  Wire.endTransmission();
}

void Relay_off(byte _data ) {

  byte _data2;
  Wire.requestFrom(adr, 1);
  if(Wire.available()) {
    _data2 = Wire.receive();
  }

  Wire.beginTransmission(adr);
  Wire.send(_data2 & ~(1<<_data));
  Wire.endTransmission();
}

