595_01_arduino_bb
Tutorial: Expandindo saídas do Arduino com 595
Índice

Neste tutorial vamos conhecer o Circuito Integrado 595, entender como seus pinos funcionam e como ele pode expandir as portas do seu Arduino.

 

Você decidiu ligar 8 Leds de uma vez para um projeto e viu aquele emaranhado de cabos, 8 variáveis para criar e comandar /0\ /0\ /0\. Calma, o Circuito Integrado 595 veio para te ajudar! Com ele é possível ligar e manipular esses 8 Leds utilizando apenas 3 pinos do Aduino O.o

Vamos ao que interessa: copie o código a seguir na IDE do seu Arduino e conecte os cabos como a figura abaixo demonstra.

 

 

595_01_arduino_bb

Conexões fios, Leds e CI 595

 

O resultado deve ser parecido com esse:

595_e_shiftout_com_leds

 

Quem é o 595?

É um Circuito Integrado que possibilita controlar até 8 saídas utilizando apenas 3 pinos do Arduino.

Observe a figura abaixo:

74hc595n

Pinos do 595

 

Do Q0 até o Q’ temos as oito saídas, e ainda temos a Q7′ que é usada para ligar a outro chip 74HC595, aumentando ainda mais quantidade de saídas.

A lógica do chip é a seguinte: aplica-se uma sequência de pulsos, cada um representa um bit, de forma que ao final teremos comunicado um byte inteiro de dados ao registrador. É pela aplicação de pulsos ao pino 2, que é o pino de clock, que você delineia os bits. Uma vez transmitido todo o byte ao registrador, as mensagens HIGH e LOW atribuídas a cada bit são entregues a cada pino respectivo de saída. Esta é a parte chamada de saída paralela – todos os pinos apresentam o byte todo de uma só vez.

Com o pino OE é possível habilitar ou desabilitar todas as saídas de uma única vez. Alocando a um pino PWM e utilizando o ‘analogWrite’ podemos controlar o brilho dos Leds.

 

 

Programa

Bloco declaração variáveis

int clockPin = 13;

int dataPin = 11;

int storePin = 10;

A primeira variável representará o pino ‘Clock’ (//Pino conectado ao SH_CP do 74HC595) e será alocada no pino 13 do Arduino (int clockPin = 13;).

A segunda variável representará o pino ‘Data’ (//Pino conectado ao DS do 74HC595) e será alocada no pino 11 do Arduino (int dataPin = 11;).

A terceira variável representará o pino “Store’ (//Pino conectado ao ST_CP do 74HC595) e será alocada no pino 10 do Arduino (int storePin = 10;).

Bloco setup

void setup() {

config595();

}

Para configurar esse bloco foi feita uma função com o nome ‘config595()’, que será descrita fora da função void loop()

Função void loop()

void loop() {

for (byte saida = 0; saida < 256; saida = saida + 1) {

envia595(saida);

delay (200);

}

}

Dentro dessa função vamos utilizar um ‘for’ e criar a variável ‘byte saida’, que começa no 0 (byte saida = 0) e termina em 255 (saida < 256). O programa fará isso sempre somando o próximo dado (saida = saida + 1).

A função ‘envia595(saida)’ que será descrita fora da função ‘void loop()’, é a responsável por controlar

Fora do ‘void loop()’ vamos descrever as duas funções citadas acima e criar rotinas usadas para acessar o chip ‘595.

Na função ‘void config595()’ precisamos definir quais os pinos de saída (OUTPUT) do chip 595, no caso, as três variáveis declaradas no início do código (int storePin, int clockPin, int dataPin).

void config595() {

pinMode(storePin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(dataPin, OUTPUT);

}

A última função ‘envia595(byte dado)’ será responsável pelo registro de deslocamento.

void envia595(byte dado) {

digitalWrite(storePin, LOW);

shiftOut(dataPin, clockPin, MSBFIRST, dado);

digitalWrite(storePin, HIGH);

}

Essa função se baseará exclusivamente na variável ‘byte dado’ (void envia595(byte dado)).

Na linha ‘digitalWrite(storePin, LOW);’ dizemos ao programa para manter o pino ‘store’ desligado (LOW)

Em seguida temos ‘shiftOut(dataPin, clockPin, MSBFIRST, dado);’ onde alocamos os pinos ‘data’, ‘clock’ a variável ‘dado’ e o ‘MSBFIRST’. Este último significa Most Significant Bit First (Primeiro bit mais significativo).

Logo após ordenamos que o pino ‘store’ ligue. Quando o ‘storePin’ vai para HIGH os dados são transferidos para a saída.

 

Partes

Você vai precisar de:

 

placa arduino uno

Arduino UNO

 

cabo usb

Cabo USB

 

chip-c595

Chip 595

 

led-vermelho-3

Led

 

resistor-220-2

Resistor

 

cabos-jumper-macho

Cabos Jumper

 

protoboard-830-2

Protoboard

 

 

Montagem

Vamos começar a montagem pelos pinos do chip, porém verifique onde está a meia circunferência do mesmo (figura 1). A partir desse ponto identifique as saídas (Q0 até Q7) de um lado e os pinos ‘Clock’, ‘Data Input’ e ‘Store’.

Identificando a meia circunferência do CI 595

 

Nas saídas (Q0 até Q7) vamos conectador por meio de cabos jumper o lado positivo dos 8 Leds, sendo que o oitavo se encontra no pino 15 do chip (Q0). Nas pernas negativas do Led vamos posicionar os resistores e estes, na trilha negativa da Protoboard (figura 2).

 

passo2-montagem

Figura 2: Posicionando os Leds nas saídas do chip

 

Agora é a vez de conectarmos os pinos do chip com os pinos do Arduino (figura 3): no pino 13 do Arduino vamos conectar com o pino ‘Clock’ do 595, no caso o pino SH_CP; no pino 11 do Arduino vamos posicionar o pino ‘Data’ do 595, ou seja, o pino DS do chip. Por último vamos conectar ao pino 10 do Arduino nosso pino ‘Store’ (ST_CP do chip 595). Atente-se à posição dos pinos do chip.

 

passo3-montagem

Figura 4: conexões do chip e do Arduino

 

Terminada essa parte, vamos fazer as conexões para alimentar a Protoboard (figura 4). Nosso exemplo utilizou duas protoboards, então faremos a conexão entre ambas pela parte negativa (cabo preto maior). Ao lado direito do chip vamos conectar o pino ‘GND’ com a parte negativa da Protoboard. Ao lado esquerdo também conectaremos à parte negativa, o pino OE.

A parte positiva (cabos vermelhos) serão conectados pelos pinos ‘VCC’ e ‘MR’ do chip.

 

passo4-montagem

Figura 4: alimentação da Protoboard

 

Para finalizar a alimentação (figura 5) vamos conectar o lado positivo da Protoboard com os pino 5V e GND do Arduino.

 

passo5-montagem

Figura 5: alimentação Arduino-Protoboard

 

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

 

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.

 

Desafio

Que tal controlar o brilho do Led utilizando o pino OE do chip?

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.

sensor-ultrassonico-distancia

Sensor ultrassônico HC-SR04

R$17,90

Mensure distâncias com este ótimo sensor ultrassônico. Faça uma régua eletrônica, um theremin digital, ou até mesmo seus robôs evitarem obstáculos no meio do caminho com este simples e excelente sensor de distância!

 

display-lcd

Display LCD 16X2 caracteres com I2C

R$24,90

Nosso display 16×2 vem equipado com uma placa I2C. Isto significa que com apenas duas conexões para alimentação e mais duas para comunicação pode-se fazer o display funcionar!

Muito mais simples que as conexões paralelas dos outros displays.

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.

Deixe uma resposta

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

limpar formulárioPostar Comentário