Arduino i2c Lendo 8 bits do pcf8574

Ola pessoal Bom dia!

seguinte quero ler os dados de um pcf8574 no protocolo i2c

queria ler os dados das 8 portas i/o
coloquei um dip switch ligado dessa forma
pcf8574<===dipswitch<======GND da porta 1 a 8
quando ponho uma chave em on ele me retorna zero naquela chave ex ligo a chave 2 me retorna 11111101

o que queria e identificar cada sequencia de uma chave de 1 a 8 e fazer uma açao

o codigo que estou usando para ler e este....

#include <Wire.h>

#define Sensores_ADDR 0x3A

int a;

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

void loop() {

Wire.requestFrom(Sensores_ADDR, 1);
  if (Wire.available()){
  a = Wire.read();
  }
Serial.print("BIN - ");
  Serial.println(a, BIN);
delay(800);

}

conto com a ajuda dos colegas Obrigado!!!!!

Isto dá para o que queres ?

#include <Wire.h>
#define Sensores_ADDR 0x3A

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

void loop() {
	Wire.requestFrom( Sensores_ADDR, 1 );
	if( Wire.available() ) {
		// int ocupa 2 bytes (16 bits) de memoria, uint8_t (ou unsigned char) ocupa 1 byte (8 bits).
		uint8_t val = Wire.read();
		
		Serial.print( "BIN: " );
		Serial.println( val, BIN );
		
		switch( val ) {
			case B11111110: // ou 0xFE
				Serial.println( "PIN #1 off" );
				break;
				
			case B11111101: // ou 0xFD
				Serial.println( "PIN #2 off" );
				break;
				
			case B11111011: // ou 0xFB
				Serial.println( "PIN #3 off" );
				break;
				
			case B11110111: // ou 0xF7
				Serial.println( "PIN #4 off" );
				break;
				
			case B11101111: // ou 0xEF
				Serial.println( "PIN #5 off" );
				break;
				
			case B11011111: // ou 0xDF
				Serial.println( "PIN #6 off" );
				break;
				
			case B10111111: // ou 0xBF
				Serial.println( "PIN #7 off" );
				break;
				
			case B01111111: // ou 0x7F
				Serial.println( "PIN #8 off" );
				break;
		}
	}
}