visao-geral
Tutorial: Expandindo saídas do Arduino com duas matrizes 595
Índice

Neste tutorial vamos entender como conectar duas matrizes CI 595 para utilizar um display de 7 segmentos e 8 Leds.

 

visao-geral

Figura 1: Visão geral da montagem

 

 

Introdução

O tutorial “Expandindo saídas do Arduino com 595” nos mostrou como expandir as saídas de um Arduino utilizando apenas 3 dos seus pinos, agora vamos utilizar duas matrizes CI 595 para controlar um display de 7 segmentos e 8 Leds.

O display de 7 segmentos nada mais é que um conjunto de 8 Leds (temos o ponto do display). Antes de montar precisamos identificar se ele é anodo (a trilha comum que liga os Leds é o VCC) ou catodo (a trilha comum que liga os Leds é o GND) e, logo em seguida, conhecer a posição de cada Led, dessa forma:

 

Figura 2: Display e seus pinos

 

Pronto. Agora vamos decifrar o programa…

Programa

Para esse exemplo utilizamos a biblioteca SPI (Serial Peripheral Interface), que já está no Arduino, portanto só precisamos seguir este caminho: SKETCH/ INCLUIR BIBLIOTECA/ GERENCIAR BIBLIOTECAS, escolher a versão do Arduino e instalar.

Essa biblioteca na verdade se trata de um protocolo de comunicação de dados, ou seja, um conjunto de regras que controla a comunicação para que ela seja eficiente e sem erros.

1º bloco

#include <SPI.h>
int number[] = {
B11111101, // zero
B01100000, // um
B11011011, // dois
B11110010,
B01100111,
B10110110,
B10111111,
B11100000,
B11111111,
B11110110,
};
int RCLK = 10;

Na primeira linha, #include <SPI.h>, precisamos incluir essa biblioteca/ protocolo de comunicação.

Depois vamos construir um array contendo todas as combinações para formar números (int number[] = { B11111101,B01100000…}), para isso seguimos a ordem das letras a, b, c, d, e, f, g, p. Não esquecendo que essas letras correspondem aos pinos do display (figura 2).

Caso você não se recorde, um array é um conjunto de elementos, no nosso caso, vamos inserir a combinação dos Leds para que formem números 1, 2, 3, 4, 5, 6, 7, 8, 9 e 0.  Lembrando que cada letra representa um Led no display, vamos ligar e desligar cada um dependendo de cada número formado. Exemplo: para formar o número 0 precisamos acender as letras a, b, c, d, e, f.

display-7segmentos-zero

Figura 3: Formando o número 0

 

A letra B significa número binário (0 e 1 ou ligado e desligado).

 

tabela-pinos

Figura 4: Pinos do display formando o número 0

 

Na última linha vamos declarar uma variável correspondente ao pino ‘Storage’ (int RCLK = 10). Mas calma, o tutorial anterior dizia que precisávamos de três pinos (‘data’, ‘clock’ e ‘storage’) e por que nesse vamos declarar apenas um? Por conta do nosso protocolo SPI: ele é responsável por controlar os dados que entram e saem; abstrai os pinos de ‘dados’ e ‘clock’.

2º bloco Setup()

void setup() {
SPI.begin();

SPISettings modoSPI(100000, MSBFIRST, SPI_MODE0);
SPI.beginTransaction(modoSPI);
pinMode(RCLK, OUTPUT);
}

Na primeira linha desse bloco vamos inicializar a biblioteca do SPI (SPI.begin()) e depois vamos configurar como ele se comportará (SPISettings modoSPI(100000, LSBFIRST, SPI_MODE0)). SPISettings é o padrão para declarar a configuração. E modoSPI foi um nome aleatório dado (poderia ser qualquer outro nome). Dentro dos parênteses temos três tipos de informação: o primeiro é a velocidade máxima da comunicação (100000), o segundo é a ordem dos dados, MSBFIRST (Most Significant Bit First) ou LSBFIRST (Least Significant Bit First) e o último tipo é sobre o modo. Geralmente utiliza-se o SPI_MODE0.

Após configurar vamos iniciar a transição de dados utilizando SPI.beginTransaction(modoSPI). Observe que, dentro dos parênteses “chamamos” o nome que demos à nossa configuração (modoSPI).

Na última linha declaramos o pino ‘Storage’ como saída (pinMode(RCLK, OUTPUT);).

3º bloco

void loop() {
for (int j = 0; j < 10; j++) {

digitalWrite(RCLK, HIGH); // inicia a transmissao

SPI.transfer(~number[j]); // positivo comum
digitalWrite(RCLK, LOW); // armazena os dados

delay(1000);
}

Agora vamos ver a “mágica” acontecer no loop(): vamos criar um for com o objetivo de fazer o programa escrever os 9 números por meio da variável jfor (int j = 0; j < 10; j++)). Devemos colocar o número 10 porque temos 9 combinações e nossa contagem começa a partir do 0 e não do 1.

Ordenamos que o pino ‘Storage’ ligue (digitalWrite(RCLK, HIGH)) e, em seguida, vamos dizer ao SPI trasnferir transferir a informação armazenada no pino ‘Storage’, mas de forma oposta utilizando o sinal ‘ ~ ‘ (~number[j]), pois estamos trabalhando com o display de anodo comum (VCC).

Recebidas as informações agora precisamos carregá-las desligando o pino Storage (digitalWrite(RCLK, LOW)).

Ao final, damos um tempo (1 segundo) para receber novas informações (delay(1000)).

 

Partes

Você precisará de:

 

placa arduino uno

Arduino UNO

 

resistor-1k-2

Resistor 1K

 

led-vermelho-3

Leds

 

7-segmentDisplayO1

Display de Led de 1 dígito

 

chip-c595

CI 595

 

cabos-jumper-macho

Cabos Jumper

 

Montagem

Vamos começar com os dois CI 595: antes de conectar verifique onde está a meia circunferência do chip.

 

passo1-montagem

Figura 5: Verifique a meia circunferência do chip

 

Também é importante lembrar alguns pinos do 595:

74hc595n

Figura 6: Pinos do 595

 

No nosso caso, posicionamos o lado direito dos chips para cima. Vamos conectar os pinos de alimentação com a protoboard (vermelho e preto) e os pinos entre os chips (verde, azul e marrom).

Nossa entrada de dados será feita pelo chip da direita, assim o pino de Dados desse chip precisa estar conectado ao pino de saída serial do chip da esquerda (cabo azul). O pino do Storage conectado ao mesmo pino do outro chip (cabo marrom) e o pino Clock de ambos os componentes estão conectados pelo cabo verde.

passo1-chips595

Figura 7: Conexão entre chips

 

Agora vamos fazer as conexões do chip da esquerda, na parte inferior: todos os pinos, exceto um (o cabo preto deve ser conectado ao lado negativo da protoboard) são responsáveis por alocar os pinos do display de Led (cabos amarelos). Existe ainda um último pino do lado superior do chip que se conecta com o display. Todos os cabos amarelos devem ser seguidos de resistores para não queimarmos o display.

 

passo2-chip-display1

Figura 7: Conectando o outro lado do chip

 

Agora, na outra extremidade desses resistores vamos conectar cada um dos pinos do display. O cabo vermelho está ligado ao lado positivo da Protoboard (VCC). É importante seguir a ordem dos cabos conectados aos resistores.

 

passo3-chip-display2

Figura 8: Conectando os pinos do display

 

Agora precisamos conectar os pinos do outro 595 às trilhas que estão ao lado dos resistores dos Leds (cabos rosa e violeta). Temos que ligar um dos pinos com o negativo (GND) da Protoboard (cabo preto).

passo4-chip-led1

Figura 9: conectando o lado inferior do chip da direita

 

Posicionados os cabos e resistores, vamos colocar os Leds (em uma das pernas temos um cabo e na outra um resistor).

passo5-chip-led2

Figura 10: conectando Leds e chip 595

 

Estamos quase finalizando e precisamos conectar os cabos de alimentação (cabos vermelhos e pretos) dos dois chips: pinos 16 e 10 de cada 595 ligados ao positivo (VCC) e pino 13 do chip ao negativo (GND). Também devemos fazer conexão entre as duas protoboards.

passo6-alimentacao-protoboard

Figura 11: Conexão para alimentar a protoboard

 

No Arduino vamos utilizar apenas três pinos: alimentação (cabos vermelho e preto) nos pinos 5V e GND com a Protoboard e pino 10 com o ‘Storage’ do chip da direita (cabo verde).

passo7-conexao-arduino-protoboard

Figura 12: conexão de pinos da Protoboard com Arduino

 

 

Upload do programa

Lembre-se de conectar a placa de Arduino à entrada de USB do seu computador. Verifique se a placa e portas estão já estão configuradas no seu IDE.

Para efetuar o Upload clique na seta indicada em vermelho.

 

upload

Upload do programa

Dicas

Verifique todos os itens abaixo para fazer seu projeto funcionar:

  • conexão dos cabos e pinos do 595 com o Arduino e com os Leds;
  • mude de cabos, ou posição na Protoboard (mau contato pode prejudicar o bom andamento das coisas);
  • troque a porta;
  • verifique os pinos digitados no programa.
Produtos
Promoção!
Arduino UnoArduino UnoOut Of Stock

Uno SMD – Arduino compatível

R$59,90 R$54,90

Ideal para iniciantes, o Uno é um Arduino compatível bem capaz, barato e com diversos shields e sensores compatíveis disponíveis. Se você está começando a aprender sobre microcontroladores e Arduinos, esta é a placa perfeita! Ela é a nossa placa principal nos nossos tutoriais de Arduino.

protoboard-830-2Out Of Stock

Protoboard transparente 830 pontos

R$24,90

Protoboard transparente com 830 pontos para prototipagem é ideal para trabalhos elétricos e eletrônicos com Arduino e microcontroladores em geral. É fácil tem muito espaço para conectar leds, cabos, resistores entre outros.

Os pólos negativos e positivos estão bem identificados para facilitar seu trabalho com vários componentes.

led-vermelho-3

10 Leds – cor vermelho

R$1,80

O led vermelho é um dos velhos conhecidos componentes para prototipagem.

Com ele você pode sinalizar quando um sensor é acionado ou alguma reação esperada acontece.

 

Deixe uma resposta

Seu endereço de e-mail não será publicado. Campos obrigatórios estão marcados *

limpar formulárioPostar Comentário