Arduino

Multiplexação e POV com PCF8574 e display de 7 segmentos

Já escrevi sobre multiplexação com 74HC595 nesse outro artigo, que certamente tem suas vantagens e pode ser mais apropriado por diversas questões. Mas é interessante testar a possibilidade com um PCF8574 e display de 7 segmentos para ver a velocidade do barramento I2C, utilizar bitwise e rever a multiplexação.

Display de 7 segmentos

Peguei um display de 4 dígitos, dos quais o primeiro já está com o LED central queimado, infelizmente. Mas indiferente, o conceito está sendo testado em apenas 1 dígito, então fiz uso do segundo. Além disso, com o PCF8574 não seria possível alternar o dígito, exceto utilizasse um NE555, um flip-flop ou algo do tipo, porque dos 8 bits, 7 são utilizados para o display.

Também já escrevi um artigo com o MCP23017, nesse link, que possui 2 Bytes e, com ele sim seria possível manipular os 4 dígitos do display, com pinos de sobra.

Para identificar os pinos do display, simplesmente coloquei o multímetro em modo de continuidade e fui colocando pino a pino para identificar os dígitos, depois para identificar os segmentos. É um processo rápido, não há razão para procurar datasheet.

No código mais abaixo estão identificados os segmentos e as relações com os pinos do PCF8574.

PCF8574 e display de 7 segmentos

Já escrevi diversos artigos sobre esse expansor de IO, dos quais sempre recomendo esse.

Eu estava decidido a utilizar um PCF8574 soldado a uma placa de prototipagem, mas no final das contas ia ficar muito esparramado para o artigo porque não tinha onde colocar o display. De qualquer modo, vou deixar as dicas para você montar sua própria placa com o CI PCF8574.

Primeiro passo: Identificar os pinos ou, “pinout”

Comece sempre procurando pelo documento do CI que deseja utililzar. Esse documento é chamado “datasheet”, contendo mais especificações do que muitos de nós haveríamos de utilizar, mas essencial para diversos desenvolvedores de hardware por diversas questões.

Para montar nossa placa com o PCF8574 em casa, poucas informações são necessárias, dentre as quais, o pinout. Buscando no Google por “pcf8574 datasheet” já encontramos o arquivo .pdf. Logo nas primeiras páginas encontra-se os tipos de empacotamento do CI, com o respectivo pinout. No caso, utilizei esse:

PCF8574 e display de 7 segmentos

Agora precisamos de um exemplo de aplicação típica, que normalmente se encontra no datasheet também. Lendo o documento, encontra-se uma informação dizendo que entre os pinos SDA, SCL e INT, deve-se utilizar um resistor de pull-up. Mas não diz o valor. Não é problema, porque no exemplo de aplicação típica está mostrando resistores de 10k.

PCF8574 e display de 7 segmentos

Repare que os endereços estão indo ao GND. Se quiser, por optar por fazer sua placa endereçável, mas desse modo já teremos disponível o PCF8574 no endereço 0x20.

Agora resta buscar uma informação; quanto podemos (ou devemos) colocar de tensão no VCC?

Bem, nada é mais seguro do que o datasheet, porque tem tutoriais por ai que a galera coloca 5V em coisas com nível lógico 3V3. Buscando no datasheet, encontra-se 2 informações relacionadas, das quais apenas uma deve ser considerada: Recomended Operation Conditions.

Podemos usar em 3V3 ou em 5V. Ótimo!

A outra referência é a Absolute Maximum Rates, que é o uso sob condições extremas em ambiente controlado, nunca confunda esses dois tópicos.

Seguindo o datasheet, o resultado foi esse:

Wiring

Agora que já temo a placa, podemos partir para as conexões do PCF8574 e display de 7 segmentos. Ou se preferir, pode comprar um Arduino da MaxBlitz que já vem com o PCF8574. Como citei anteriormente, acabou sendo mais prático porque utilizei a área de prototipagem da própria placa para “slotar” o display. A placa é essa da imagem de destaque. Ela também está com endereçamento fixo em 0x20, o código a seguir será transparente para ambos os casos supracitados.

Código

No código disponibilizo um comentário relacionando os pinos do display e exemplificando com 3 funções diferentes o ligamento incremental, bit a bit e POV (Persistence Of Vision), que é o ligamento tão rápido quanto possível após o desligamento do bit anterior, causando a impressão de que todos os bits estão ligados ao mesmo tempo.

No código só escrevi os números de 0 à 2 para exemplificar, pratique criando os demais dígitos!

Vídeo

Vou subir um vídeo mostrando e explicando os conceitos utilizados. Se tiver dúvidas sobre o uso de bitwise, recomendo a leitura desse artigo. Se preferir um vídeo sobre bitwise, no meu curso de Raspberry Pi eu deixei aberta a aula completa sobre bitwise, acesse através desse link. Se quiser adquirir o curso, utilize o cupom DOBITAOBYTE para obter o curso por R$21,00.

O vídeo relacionado ao artigo estará disponível em nosso canal Dobitaobytebrasil no Youtube. Se não é inscrito, inscreva-se e clique no sininho para receber notificações. Ah, e não se esqueça de deixar um like no vídeo, ok?

Provavelmente no final da página aparecerão algumas sugestões de artigos relacionados que podem lhe ser útil, dê uma conferida.

Até a próxima!