Pessoal estou me preparando para iniciar dois novos projetos para aprendizado, um serial uma matriz de LEDs feita manualmente que ira ter cerca de 200 LEDs e outro projeto seria para controlar dois ou mais displays de 7 segmentos, estou em dúvida quanto a compra de um multiplexador I2C PCF8574 ou um Shift Register M74HC595, tendo em vista que vi projetos bem semelhantes ao meu porém com as duas opções de uso, quais seriam o benefício de cada um deles no meu uso ?

Exibições: 643

Responder esta

Respostas a este tópico

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 

Legal então vai servir pra mim porque nos dois casos serão sempre usados como saída tanto para usar na matriz de led quanto do display de 7 segmentos mas em paralelo vou comprar depois um ou dois PCF8574 pra deixar guardado estive vendo que o 74595 ele é bem mais barato.

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()) {

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço