Novidades

programação Arduino – jogando com registradores de deslocamento (a.k.a ainda mais leds)





Hoje eu vou tentar ensinar-lhe um pouco sobre registos de deslocamento. Estes são uma parte bastante importante da programação Arduino, basicamente porque eles expandir o número de saídas que você pode usar, em troca de apenas 3 pinos de controle. Você também pode mudança em cadeia registra em conjunto para obter ainda mais saídas.

Este é um salto significativo na dificuldade de tutoriais anterior, porém, e eu sugiro fortemente que você tem um bom entendimento sobre o material anterior (links no final deste artigo), assim como a compreensão da noções básicas de binário que eu escrevi pela última vez.O que é o binário? [Tecnologia Explicada]O que é o binário? [Tecnologia Explicada]Dado que binário é tão absolutamente fundamental para a existência de computadores, parece estranho que nós nunca abordou o assunto antes – por isso hoje eu pensei que eu iria dar um breve resumo do que binário …consulte Mais informação

O que é uma mudança registar-se?

Um registrador de deslocamento de saída, tecnicamente falando, recebe dados em série e saídas em paralelo. Em termos práticos, isto significa que podemos enviar rapidamente um monte de comandos de saída para o chip, diga a ele para ativar, e as saídas serão enviados para os pinos relevantes. Em vez de iteração através de cada pino, nós simplesmente enviar a saída requerida para todos os pinos de uma vez, como um único byte ou mais informações.

Se ele ajuda a entender, você pode pensar de um registo de deslocamento como um ‘array` de saídas digitais, mas podemos ignorar os comandos digitalWrite habituais e simplesmente enviar uma série de bits para transformá-los ligado ou desligado.

Como funciona?

O registador de deslocamento estaremos usando – o 74HC595N incluído no kit de iniciação Oomlout – precisa apenas 3 pinos de controle. O primeiro é um relógio – você não precisa se preocupar muito sobre isso como as bibliotecas de série Arduino controlá-lo -, mas um relógio é basicamente apenas uma on / off pulso elétrico que define o ritmo para o sinal de dados.

O pino de trava é usado para dizer o registo de deslocamento, quando deveria transformar suas saídas dentro e fora de acordo com os bits que acabamos de enviar-lo – ou seja, trancando-os no lugar.

Finalmente, o pino de dados é onde enviamos os dados de série real com os bits para determinar a on / off estado das saídas do registrador de deslocamento.

Todo o processo pode descrito em 4 passos:

  • Definir o pino de dados de alta ou baixa para o primeiro pino de saída do registador de deslocamento.
  • Pulso o relógio para ‘mudança` os dados no registo.
  • Continue definindo os dados e pulsante do relógio até ter definido o estado necessário para todos os pinos de saída.
  • Pulsar o pino de ferrolho para activar a sequência de saída.
  • Implementação

    Você precisa dos seguintes componentes para este projeto:

    • 7HC595N mudar chip de registo
    • 8 LEDs e resistores apropriados, ou o que quer que você quer saída para
    • Os breadboard habituais, conectores e um Arduino básico

    Se você tiver o kit Oomlout partida, você pode baixar o layout placa de ensaio a partir daqui.

    Aqui está o vídeo de montagem:

    O layout da placa:


    E a minha versão montada:

    Eu já modificou o código original fornecido pela Ooolmout, mas se você gostaria de tentar que em vez disso, ele pode ser baixado na íntegra aqui. Explicação do código está incluído, para copiar e colar a coisa toda de baixo ou pastebin para ler uma explicação do código.

    / * ———————————————— ——— * | Shift Register Tutorial, com base em | * | Arduino Experimentação Kit CIRC-05 | * | .: 8 Mais LEDs:. (74HC595 Shift Register) | * ——————————————- ————– * | Modificado por James @ MakeUseOf.com | * —————————————– —————- * /// Pin Definições // 7HC595N tem três dados pinsint = 2 // onde enviar os bits para controlar relógio outputsint = 3- // mantém o dados trava syncint = 4 // informa o registo de deslocamento quando ativar a configuração sequencevoid saída () {// definir os três pinos de controle para outputpinMode (dados, saída) -pinMode (relógio, oUTPUT) -pinMode (trava, oUTPUT ) -Serial.begin (9600) – // para que possamos enviar mensagens de depuração para monitor serial} void loop () {outputBytes () – // nossa saída básico que escreve 8-bits para mostrar como um registo works.// turno outputIntegers () – // envia um valor inteiro como dados em vez de bytes, contando efectivamente em binário} outputIntegers void () {para (int i = 0-IGT, para ajustar directiondelay (100) -}}.

    Bit-shifting (OutputBytes Função)

    No primeiro exemplo de loop – outputBytes () – o código utiliza uma sequência de 8 bits (um byte) que, em seguida, deixou turnos cada iteração do circuito. É importante notar que se você mudar mais do que é possível, o bit é simplesmente perdido.

    Bit-shifting é feito usando lt; lt; ou gt; gt; seguido pelo número de bits que você deseja mudar por.

    Confira o exemplo a seguir e certifique-se de compreender o que está acontecendo:

    byte val = B00011010val = val lt; lt; 3 // B11010000val = val lt; lt; 2 // B01000000, perdemos os outros pedaços! Val = val gt; gt; 5 // B00000010

    Enviando Inteiros Em vez disso (OutputIntegers Function)

    Se você enviar um número inteiro para o registo de deslocamento em vez de um byte, ele simplesmente irá converter o número em uma sequência de bytes binário. Nesta função (uncomment no circuito e fazer o upload para ver o efeito), temos um loop que conta 0-255 (o número inteiro mais alto podemos representar com um byte), e envia essa vez. Basicamente, conta em binário, então a sequência pode parecer um pouco aleatório a menos que seus LEDs são dispostos em uma longa fila.

    Por exemplo, se você ler o binário explicou artigo, você vai saber que o número 44 será representado como 00101100, assim LEDs 3,5,6 vão acender naquele ponto na seqüência.

    Encadeamento mais de um turno Register

    A coisa notável sobre registos de deslocamento é que se forem dadas mais de 8-bits de informação (ou por maior que seu registro é), eles vão mudar os outros bits adicionais para fora outra vez. Isto significa que você pode conectar-se uma série de-los juntos, empurrar em uma longa cadeia de bits, e tê-lo distribuído a cada registrar separadamente, todos sem codificação adicional de sua parte.

    Embora não seremos detalhando o processo ou esquemas aqui, se você tem mais de um turno registrar, você pode tentar o projeto a partir do site Arduino oficial aqui.

    Outros artigos da série:

    Isso é tanto quanto nós iremos com registos de deslocamento de hoje, como eu acho que nós cobrimos muito. Como sempre, eu encorajá-lo para jogar com e ajustar o código, e não hesite em perguntar qualquer dúvida que possa ter nos comentários, ou mesmo compartilhar um link para seu projeto incrível com base turno registo.

    Gosta de dicas de futebol para investimento desportivo? Então visita agora mesmo Palpites Copa do Mundo e prepara-se para viver a emoção do maior campeonato do planeta.