HOMENAGEM
† 12 de março de 2016
Quem está conectado?
Há 189 usuários online :: 0 registrados, 0 invisíveis e 189 visitantes :: 3 motores de buscaNenhum
O recorde de usuários online foi de 362 em Sex 9 Abr 2021 - 22:11
Últimos assuntos
Top dos mais postadores
Rafael Silveira (7816) | ||||
Caca Silva (6057) | ||||
renatoscp (3891) | ||||
CMeletronica (3234) | ||||
michel chagas (2791) | ||||
Railson (2119) | ||||
alexsandro rodrigues de a (1835) | ||||
naldo santos (1625) | ||||
ablacon64 (1222) | ||||
gilvantexas (1061) |
Tópicos semelhantes
Medidor de Velocidade
Ampliar saídas do Arduíno com registradores de deslocamento 74HC595
3 participantes
Página 1 de 1
Ampliar saídas do Arduíno com registradores de deslocamento 74HC595
O segredo é utilizar os registradores de deslocamento 74HC595. Utilizei 4 registradores. O primeiro é ligado diretamento no Arduino, os demais são conectados um ao outro. Para cada registrador ganhamos 8 saídas. No exemplo eu poderia conectar até 32 Leds. O número de registradores fica por sua conta. Pode-se ligar uma quantidade praticamente ilimitada!
Cada registrador custa em média menos de 1 Real.
No código que fiz, é necessário que você indique dentro da função shiftWrite() quantos registradores está usando:
- Código:
void shiftWrite(int pin){
int qtdRegistradores = 4; //QUANTIDADE DE REGISTRADORES (74HC595).
E para acionar os Leds, usei o loop:
- Código:
int tempo = 200;
for (int i=1; i<=30; i++){
shiftWrite(i);
delay(tempo);
}
Onde i é o número do Led. Nesse caso, de 1 a 30.
Para um controle mais exato de cada saída, é necessário uma grande melhoria nessa lógica. A função pode ser modificada para ter um controle exatamente como o digitalWrite(), onde podemos controlar cada porta de forma individual.
Agora quando precisar de mais saídas, antes de pensar em gastar aquela grana toda comprando um Arduino Mega, lembre dos registradores de deslocamento!
Esse foi só um exemplo de como podemos ampliar as portas de saída do Arduino.
Segue o esquema elétrico do circuito do vídeo, e o código fonte.
Abraços e bons projetos!
- Código:
/*---------------------------------------------
S H I F T O U T M E G A
Ampliar o número de saídas do Arduino com
Registrador de Deslocamento 74HC595
Fellipe Couto - 19/02/2012
--------------------------------------------*/
/*¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
- Pino 8 do Arduino ligado ao pino 12 do CI.
- Pino 11 do Arduino ligado ao pino 14 do CI.
- Pino 12 do Arduino ligado ao pino 11 do CI.
- Led 1 = Pino 15 do CI.
- Led 2 = Pino 1 do CI.
- Led 3 = Pino 2 do CI.
- Led 4 = Pino 3 do CI.
- Led 5 = Pino 4 do CI.
- Led 6 = Pino 5 do CI.
- Led 7 = Pino 6 do CI.
- Led 8 = Pino 7 do CI.
- Pinos 10 e 16 do CI ligados ao Vcc.
- Pinos 8 e 13 do CI ligados ao GND.
- Pino 9 do CI ligado ao pino 14 do próximo CI.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨*/
int latchPin = 8; //Pino conectado ao pino 12 do 74HC595 (Latch).
int dataPin = 11; //Pino conectado ao pino 14 do 74HC595 (Data).
int clockPin = 12; //Pino conectado ao pino 11 do 74HC595 (Clock).
void setup(){
//Define os pinos como saída
pinMode(latchPin,OUTPUT);
pinMode(dataPin,OUTPUT);
pinMode(clockPin,OUTPUT);
}
void loop(){
int tempo = 200;
for (int i=1; i<=30; i++){
shiftWrite(i);
delay(tempo);
}
for (int i=30; i>0; i--){
shiftWrite(i);
delay(tempo);
}
tempo = 10;
for (int j=0; j<3; j++){
for (int i=1; i<=30; i++){
shiftWrite(i);
delay(tempo);
}
for (int i=30; i>0; i--){
shiftWrite(i);
delay(tempo);
}
tempo -= 2;
}
}
void shiftWrite(int pin){
int qtdRegistradores = 4; //QUANTIDADE DE REGISTRADORES (74HC595).
int countShift = 1;
int data = 256;
for (int i=1; i<=pin; i++){
if (data <= 1){
data = 256;
countShift++;
}
data /= 2;
}
digitalWrite(latchPin, LOW);
for (int i=qtdRegistradores; i>0; i--){
if (i == countShift){
shiftOut(data);
}
else{
shiftOut(0);
}
}
digitalWrite(latchPin, HIGH);
}
void shiftOut(byte dataOut){
//Desloca 8 bits, com o bit menos significativo (LSB) sendo deslocado primeiro, no extremo ascendente do clock.
boolean pinState;
digitalWrite(dataPin, LOW); //Deixa o registrador de deslocamento pronto para enviar dados.
digitalWrite(clockPin, LOW);
for (int i=0; i<8; i++){ //Para cada bit em dataOut, envie um bit.
digitalWrite(clockPin, LOW); //Define clockPin como LOW antes de enviar o bit.
//Se o valor de dataOut E(&) de uma mascara de bits forem verdadeiros, defina pinState como 1 (HIGH).
if (dataOut & (1<<i)){
pinState = HIGH;
}
else{
pinState = LOW;
}
digitalWrite(dataPin, pinState); //Define dataPin como HIGH ou LOW, dependendo de pinState.
digitalWrite(clockPin, HIGH); //Envia o bit no extremo ascendente do clock.
}
digitalWrite(clockPin, LOW); //Interrompe o deslocamento de dados.
}
Fonte: Efeito Nerd.
Re: Ampliar saídas do Arduíno com registradores de deslocamento 74HC595
Se eu quiser ligar os varios leds de uma vez esse circuito aguenta?
tenminutes- Nível 1
- Mensagens : 1
Data de inscrição : 09/02/2013
Idade : 38
Localização : Matrix
Re: Ampliar saídas do Arduíno com registradores de deslocamento 74HC595
Boa Tarde Robinho, este HC595 foi o BE que vc usou nesse projeto?
Erisvaldo Alves Santos- Nível 1
- Mensagens : 1
Data de inscrição : 16/09/2015
Idade : 48
Localização : Monte Alegre de Minas - MG
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|
Dom 14 Abr 2024 - 12:58 por ROLDAO
» PI ITALIANO 6V DETECTOR DE METAL
Qua 10 Abr 2024 - 19:10 por Fardin pezzhan
» DETECTOR DE METAIS IDX-PRO
Sex 5 Abr 2024 - 19:51 por Fardin pezzhan
» Fonte Chaveada 2000W SG3525 & IR2110
Qui 4 Abr 2024 - 12:55 por sandy silva de oliveira
» Todas as revistas CTA VOL 1 A 12 - aproveitem.
Ter 2 Abr 2024 - 22:28 por Rodrigo L Santos
» >>>>>>> Sobre a criação de novos tópicos<<<<<<<<<<<<<<<
Dom 24 Mar 2024 - 16:10 por crisnich
» Defeito intermitente amplificador Ciclotron TIP5000
Qua 20 Mar 2024 - 9:13 por fastaveira
» Esquema Amplificador Audio Leader AL 5.0
Qua 20 Mar 2024 - 9:01 por fastaveira
» MK4000 - FONTE CHAVEADA FULL BRIDGE
Dom 17 Mar 2024 - 18:43 por sandy silva de oliveira
» amplificador class h tailandes
Sex 15 Mar 2024 - 22:41 por mehuysal
» Amplificador Super Strong
Qui 14 Mar 2024 - 13:03 por Reginaldo Silva
» Amplificador Classe D UCD1500
Qua 13 Mar 2024 - 13:07 por Guille
» NS450 - FONTE CHAVEADA PARTE 2
Seg 11 Mar 2024 - 6:55 por ffernand3s
» Amplificador Fonte Simples em teia de aranha
Sex 1 Mar 2024 - 12:17 por Reginaldo Silva
» Manutenção Gradiente 366 / 266
Qui 29 Fev 2024 - 21:40 por tiaogaviao