Continuando com as experiências com a arduino montada na breadboard, resolvi aprender a usar os chips de shift register que expandem as portas digitais da arduino.
Nos exemplos do comando ShiftOut site arduino.cc existem esquemas e bons exemplos, porém como sempre, não consegui encontrar o chip 74HC595 da philips que é usado em todos os exemplos que encontrei na web. O chip que achei é um clone compatível do fabricante SGS-THOMSON modelo M74HC595F1R.
Nos exemplos do comando ShiftOut site arduino.cc existem esquemas e bons exemplos, porém como sempre, não consegui encontrar o chip 74HC595 da philips que é usado em todos os exemplos que encontrei na web. O chip que achei é um clone compatível do fabricante SGS-THOMSON modelo M74HC595F1R.
Mudam os nomes dos pinos e sua posição mas as funcionalidades são exatamente as mesmas. Isso aconteceu também com o display de 7 segmentos que achei, tive que testar todos os pinos para achar qual era aordem correta de conexão, o modelo do display é HS5101AG VERDE - CATODO (COM TERRA COMUM), nao consegui achar nada de documentação deste.
O site mais completo que achei sobre o assunto com exemplos foi :
http://tronixstuff.wordpress.com/2010/04/30/getting-started-with-arduino-%E2%80%93-chapter-four/
Nao tem nehum esquema da montagem no site acima, mas tem explicações sobre o funcionamento do sistema bem feitas. O mais interessante é que a foto do chip que ele usa é a do modelo que encontrei e usei mas o resto das explicações são sobre o chip da philips...
Segue o meu esquema de pinagem:
O chip M74HC595 recebe do microcontrolador por meio do comando ShiftOut um número decimal que é convertido em binário, este número binário representa os pinos que devem ser ligados e desligados para acender ou apagar os leds que formam um certo número ou letra.
São 7 segmentos e um ponto, por tanto, oito leds para serem controlados por uma sequencia de oito zeros e uns.
Veja nos comentários abaixo o número decimal, o binário interpretado pelo chip e o número a ser apresentado no display .
Segue o sketch que montei par apresentar todos os números em série:
--------------------------------------------------------------------------------------------
/* Claudio Miklos based on work by Carlyn Maw and Tom Igoe */int latchpin = 11; // conecta no pino 14 do M74HC595int clockpin = 10; // conecta no pino 12 do M74HC595 int datapin = 9; // conecta no pino 11 do M74HC595 void setup() { pinMode(latchpin, OUTPUT); pinMode(clockpin, OUTPUT); pinMode(datapin, OUTPUT); } void loop() { digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 63); // 111111 = 0 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 6); // 110 = 1 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 91); // 1011011 = 2 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 79); // 1001111 = 3 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 102); // 00000100 = 4 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 109); // 1101101 = 5 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 125); // 1111101 = 6 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 7); // 00000111 = 7 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 127); // 1111111 = 8 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 111); // 1101111 = 9 digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 128); // 10000000 = DP digitalWrite(latchpin, HIGH); delay(1000); digitalWrite(latchpin, LOW); shiftOut(datapin, clockpin, MSBFIRST, 255); // 11111111 = TUDO digitalWrite(latchpin, HIGH); delay(1000); }------------------------------------------------------------------------------------------------------- O objetivo agora é fazer um termometro usando o que aprendi nos experiencias anteriores e montar tudo em uma placa de circuito de verdade.
Valeu Mike pelo exemplo !
ResponderExcluirNo site do Arduino tem os exemplos mas é difícil enteder a lógica de funcionamento. Com sua explicação e a explicação do blog que você colocou o link agora deu pra entender como funciona.
Só pra constar, eu achei pra comprar o 74HC595 aqui: http://soldafria.com.br/ aproveitei e comprei logo um tanto bom deles.
Valeu !!
Como faço para implementar 3 displays e 3 74hc595?
ResponderExcluir