Para começar, o fritzing gerou uma imagem muito grande, então aconselho a dar uma passada no http://www.jpegmini.com/ para eles diminuem o tamanho da imagem mantendo a qualidade..
Galera, fiz esse expansor de portas e resolvi divulgar para vocês. Aqui o esquema no eagle expansordeporta.zip
Os pinos 1,2,3 são os responsaveis pelo endereçamento, confira a tabela abaixo.
Essa é a tabela do mapa de endereço do PCF8574A, outros podem ter endereços diferentes, ai cabe a você dar uma olhada no datasheet dele.
Codigo no arduino.
#include <Wire.h>
#define expansor1 0x38 // ou 56
#define expansor2 0x39 // ou 57
int tempo = 350;
void setup()
{
Wire.begin();
comunica(expansor1, B11111111);
comunica(expansor2, B11111111);
}
void loop()
{
comunica(expansor1, B01111111);
delay(tempo);
comunica(expansor1, B10111111);
delay(tempo);
comunica(expansor1, B11011111);
delay(tempo);
comunica(expansor1, B11101111);
delay(tempo);
comunica(expansor1, B11111110);
delay(tempo);
comunica(expansor1, B11111101);
delay(tempo);
comunica(expansor1, B11111011);
delay(tempo);
comunica(expansor1, B11110111);
delay(tempo);
comunica(expansor1, B11111111);
delay(tempo);
comunica(expansor2, B01111111);
delay(tempo);
comunica(expansor2, B10111111);
delay(tempo);
comunica(expansor2, B11011111);
delay(tempo);
comunica(expansor2, B11101111);
delay(tempo);
comunica(expansor2, B11111110);
delay(tempo);
comunica(expansor2, B11111101);
delay(tempo);
comunica(expansor2, B11111011);
delay(tempo);
comunica(expansor2, B11110111);
delay(tempo);
comunica(expansor2, B11111111);
delay(tempo);
}
void comunica(byte endereco, byte digito)
{
Wire.beginTransmission(endereco);
Wire.write(digito);
Wire.endTransmission(endereco);
}
da uma olhada como ficou o prototipo. http://labdegaragem.com/photo/expansor-de-portas?context=featured
Lembrando que meu tempo programando no Arduino é pouco e esse é meu primeiro post completo aqui, vou aprender mais para melhorar sempre..
Comentar
PARABÉNS, mas na próxima vez faça um vídeo com o cantasia, explicando esse código, para que os iniciantes como eu entenda melhor, mas obrigado assim mesmo.
Eu tinha certeza que o meu expansor só podia não estar funcionando por causa de algum erro muito imbecil!!!!
O expansor só funciona com o ground comum ao arduino, acontece que eu estava usando uma fonte externa.
Ficou legal! Percebe que disso aí da pra expandir pra até 64 portas.
Já fez alguma experiência com porta analógica? Eu consigo expandir pra 8 portas, usando o CI 4051, mas quando tento criar os slaves, simplesmente a leitura dos sensores fica maluca.
Video do funcionamento.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2023 Criado por Marcelo Rodrigues.
Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)