Boa noite gente!
Tenho visto bastante gente comentando a respeito de "aumentar" o número de pinos de uma Arduino. Pois bem, vi no EfeitoNerd um projeto para controlar 30 LEDs com 3 pinos do Arduino, usando 4 CIs 595 (74HC595N, para a versão mais comum).
O link do projeto, com esquemas e código: http://www.efeitonerd.com.br/2012/02/ampliar-saidas-do-arduino.html
Apesar de no projeto, o Felipe Couto usar resistores de 220R, usei os de 330 por serem os únicos disponíveis no estoque =D.
Foto do que eu montei:
Um vídeo:
https://www.youtube.com/watch?v=cK_iL91cfZk
Um CI queimou... Só acendem 24 LEDs!
Não estou querendo levar crédito por um projeto alheio, apenas compartilhando uma ideia boa que é de interesse de pessoas do fórum.
Valeu
Tags:
Euclides, esse CI pode oscilar até 100 MHz. O Arduino, a 16MHz. A percepção do olho humano não vai além de uma oscilação de 15, 20Hz.
Esse "quebra-galho" foi usado pela primeira vez no século retrasado pelos irmãos Lumière para inventar o cinema. É usado nas TVs de antanho (de tubo, lembra delas?), monitores etc etc e põe etc nisso.
Boa noite!
Fiz uma biblioteca para, agora sim, controlar cada saída de forma individual. Exatamente como usamos o digitalWrite(), com a biblioteca, controlamos cada saída dos registradores usando o shiftWrite(pin, HIGH/LOW)
Agora sim, dá pra controlar muitas e muitas saídas!
Espero que seja útil!
Link do post: http://www.efeitonerd.com.br/2012/09/ampliar-saidas-do-arduino-libr...
Abraços!
Sergio,
Da forma que fiz, se vc colocar 10 registradores, terá 80 saídas a mais no Arduino.
Para controlar as saídas dos registradores, é só usar a função shiftWrite(), da mesma forma que usa-se a digitalWrite() no Arduino.
Exemplo:
Acionar os LEDs 22 e 50.
shiftWrite(22, HIGH);
shiftWrite(50, HIGH);
Apagar-los:
shiftWrite(22, LOW);
shiftWrite(50, LOW);
É só incluir a biblioteca, e ligar os registradores em 3 saídas do arduino, e agora tem o mesmo controle de portas do arduino nas portas dos registradores.
Fácil assim mesmo! :)
Como eu precisava de muitas e muitas portas de saídas, fiz a biblioteca pensando em poder trabalhar como se eu tivesse usando um arduino mega. Fiz vários testes e até agora, ta funcionando que é uma beleza! hehehe
Abraços!!
Tempos atrás, publiquei no meu blog uma série de posts sobre o uso de 595 para multiplexar portas do Arduino: http://automatobr.blogspot.com.br/2012/07/controlando-infinitos-led...
Num projeto, cheguei a usar 10 595 para controlar 24 LEDs RGB. Dá prá até simular PWM, ou seja, controlar a intensidade do brilho de cada LED.
Esse CI é barato, fácil de achar e confiável.
Abracadabraço!
Mauro
Ajudo, com uma condição: desde que vc pare de me chamar de senhor... ;)
Isso,vá registrando e faça um blog. Eu tenho blog desde 2006, atualmente tenho dois.
Quando voltar, passa pra gente os preços dos LEDs, Transistores, e 74x595...e o que mais achar por lá...obrigado.
Vai uma lib pra deixar a coisa mais fácil que programar em Arduino:
http://nootropicdesign.com/ez-expander/
Exemplos:
1) Do site:
#include <EZExpander.h>
// Create an EZExpander object
EZExpander expander = EZExpander();
void setup() { }
void loop() {
for(int i=20;i<=35;i++) {
expander.digitalWrite(i, HIGH);
}
delay(1000);
for(int i=20;i<=35;i++) {
expander.digitalWrite(i, LOW);
} delay(1000);
}
1) Atualização das saídas a partir de um vetor:
void OutRefresh(){
for(int i=0;i<=64;i++) {
int id = 19+i;
if (PinStatus[i] == 1) {
expander.digitalWrite(id, HIGH); // Liga a Porta
}
if (PinStatus[i] == 0) {
expander.digitalWrite(id, LOW); // Liga a Porta
}
}
}
Bom, já que o assunto é o 595, alguém tem alguma solução para não usar um pino do arduino mas fazer o clear das saídas?
Pois com os 3 pinos, na horá que liga o circuito, as vezes os registradores não estão sempre zerados, queria alguma forma sem ter que usar mais um pino para o clear...
Não sei se entendi direito, mas não serve mandar zerar os registradores antes de começarw
É na hora de "energizar" mesmo o circuito, pois ou usa-se o "clear" ou o "ENABLE", pois seria algo do tipo,
Inicia em "LOW" e depois fica em HIGH enquanto estiver operando.
O meu problema é que eu pretendo acionar alguns relês, que estão ligados a aparelhos, controlados pelas saídas do 595, então, não pode "acionar" indevidamente, na hora de energizar...
Saquei. Nesse caso acho que só com o uso do Enable mesmo.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por