Tags:
No PCF8574 os pinos podem ser utilizados com entrada ou saida
ja no 74595 os pinos so podem ser utilizados com saida.
Outra coisa no PCF8574 o Nº maxino de chips são 8 ja no 74595 tem tem um limite estabelecido
Veja também esse MCP23017 :
http://www.microchip.com/wwwproducts/Devices.aspx?product=MCP23017
I2C expansor de portas - 16 portas de entrada ou saida.
include <Wire.h>
#define expansorSaida B0111000 // Endereço do chip de saida
#define expansorEntrada B0111001 // Endereço do chip de entrada
/* Defina o endereço de cada chip assim: B0111 A2 A1 A0
Por exemplo, se A2, A1 e A0 estão aterrados: B0111000
Se A2 e A1 estão aterrados e A0 ligado a Vcc: B0111001
Isto vale para o PCF8574A e o PCF8574AP, cujo endereçamento começa em 0111000 bin = 56 dec
No PCF8574 (sem letra, o PCF8574N e o PCF8574P o endereçamento começa em 0100000 bin = 32 dec
*/
void setup() {
Wire.begin();
Serial.begin(9600);
} // end setup
void loop() {
Serial.print("Escrevendo 00000000 ");
expansorWrite(B00000000);
Serial.print("Lendo: ");
Serial.print(expansorRead(), BIN); // imprime a leitura em binário
// se quiser a saída em decimal substitua BIN por DEC
// se quiser a saída em hexa substitua BIN por HEX
Serial.println();
delay(1000);
Serial.print("Escrevendo 11111111 ");
expansorWrite(B11111111);
Serial.print("Lendo: ");
Serial.print(expansorRead(), BIN);
Serial.println();
delay(1000);
} // end loop
void expansorWrite(byte _data ) { // função para escrever no chip de saida
Wire.beginTransmission(32);
Wire.write(_data);
Wire.endTransmission();
} // end function
byte expansorRead() { // função para ler o chip de entrada
byte _data;
Wire.requestFrom(expansorEntrada, 1);
if(Wire.available()) {
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por