#if 0
#include <Arduino.h>
#include <SPI.h>

#define SS 2 //slave select
#define CHIP 0x40
#define CHIP_READ 0x41
#define IO_DIR_REG 0x00 //register smeru toku dat
#define GPIO_REG 0x09 //gpio register

void setup() 
{
    Serial.begin(115200);

    while (!Serial){}
    pinMode(SS,OUTPUT);
    digitalWrite(SS,HIGH);
    delay(100);
    SPI.begin();
    SPIWrite(IO_DIR_REG,0x00);
    SPIWrite(GPIO_REG,0x00);
}

void loop() 
{
    //---------------------------------------------GPIO expander -----------------------------------------------------------
    //|bit7|bit6|bit5|bit4|bit3|bit2|bit1|bit0|
    //|GP7 |GP6 |GP5 |GP4 |GP3 |GP2 |GP1 |GP0 | 
    // 0000 0000 -> hexa číslo -> zapísať do gpio registra
    // Príklad: ovládanie výstupu GP7
    SPIWrite(GPIO_REG,0x7f); //GP7 OFF, všetky ostatné GP ON
    Serial.println(SPIRead(GPIO_REG)); //načítanie a výpis gpio registra //načítanie aktuálne zapnutého výstupu
    delay(500);
    SPIWrite(GPIO_REG,0xff); //všetky GP ON
    Serial.println(SPIRead(GPIO_REG)); //načítanie a výpis gpio registra //načítanie aktuálne zapnutého výstupu
    delay(500);

    SPIWrite(GPIO_REG,0x80); //GP7 ON, všetky ostatné GP OFF
    delay(500);
    Serial.println(SPIRead(GPIO_REG)); //načítanie a výpis gpio registra //načítanie aktuálne zapnutého výstupu
    delay(500);

    //SPIWrite(GPIO_REG,0xEF);//vsetky výstupy GP na HIGH iba jeden požadovaný na LOW -- viď. tabuľka vyššie
    // SPIWrite(GPIO_REG,0x10); //set GP4 to HIGH
}

void SPIWrite(byte address, byte data)
{
    digitalWrite(SS,LOW);
    SPI.transfer(CHIP);
    SPI.transfer(address);
    SPI.transfer(data);
    digitalWrite(SS,HIGH);
}

byte SPIRead(byte address)
{
    digitalWrite(SS,LOW);
    SPI.transfer(CHIP_READ);
    SPI.transfer(address);
    byte retVal=SPI.transfer(0x00);
    digitalWrite(SS,HIGH);
    return retVal;
}
#endif