Arduino shift out binário opções


Navegação Versão atual 1.1.0 2017-03-02: suporte IDE 1.0. E testado em 0021 e 0022 1.0.0 2017-01-13: Primeira versão. 1.1.0 2017-03-02: segunda versão. Descrição shiftOutX é uma biblioteca para controlar registros de deslocamento. Eu o usei em quatro registradores de deslocamento 74HC595 encadeados em cadeia, mas ele pode controlar até oito registradores. Ele não usa SPI para que ele não funciona para PWM, mas se os interruptores ON OFF são tudo o que é necessário para conduzir LEDs e ou relés (provavelmente transistores para conduzir os relés que é realmente o que eu estava usando para isso), isso vai funcionar. É exatamente como as saídas digitais no arduino. Ele é composto de funções shiftOut modificadas de wiringshift. c. Espero que sirva alguém. Na versão 1.1.0, SPI foi adicionado e os ponteiros para arrays de bytes são usados ​​em vez de inteiros longos longos, é mais rápido e o PWM funciona (software implementado). Baixe, instale e importe e coloque o diretório shiftOutX em DocumentsArduinolibraries (Mac) ou Meus documentsArduinolibraries (Windows) do IDE do Arduino. Você pode ver um exemplo de esboço de File - gt Sketchbook - gt Example - gt shiftOutX - gt shiftFourRegisters. Para criar um novo esboço, selecione a partir do menu Sketch-gtImport Library-gtshiftOutX. Uma vez que a biblioteca é importada, uma linha de inclusão ltshiftOutX. hgt aparecerá na parte superior do Sketch. E também, um include ltshiftPinNo. hgt Você precisa criar uma instância da classe shiftOut como esta: shiftOutX (byte latchPin, byte dataPin, byte clockPin, byte bitOrder, byte NofRegisters) shiftOutX regGroupOne 40 8. 11. 12. MSBFIRST. 4 41 sim você pode anexar mais daisy encadeados registros basta usar um número latchPin diferente para que você possa realmente adicionar outros quatro registros e só pegar outro pino do Arduino apenas declarar outra instância, por exemplo, regGroupTwo e usar o mesmo dataPin e clockPin. Você pode usar dois grupos de oito para um total de 128 saídas Informações sobre esta página O 74HC164 Shift Register e seu Arduino ampquotsome outros modelos são paralelos em série, eles fazem a mesma coisa, mas como entradas para o arduinoampquot. Que números de peça são estes, como eu não posso encontrar um registro de deslocamento PISO de 8 bits na lista de peças 74XX mais 74 séries lógicas I. C. Tenha uma parte complementar que seja de 1 ou 2 dígitos diferentes, veja os 165 e 166. Esses don39t fazem o que eu quero, mas não me importo quando eu encontrei o problema. Eu preciso inserir informações de 15 opções diferentes para o arduino, mas eu não tenho que muitos pinos de reposição ltemgt (alguns estão em uso como saídas) ltemgt. I39ve usado 4 ltstronggt73LS30ltstronggt (8 portas de entrada NAND) para dar uma saída binária de 4 bits, para que eles só usam 4 pinos no arduino. Não tão bom quanto 1 pino (serial), mas melhor do que 15 pinos Muito legal tutorial. LtbrgtI tive um problema descobrir onde ligar o relógio (8) ltbrgtand pino 9 (V) no 74HC164. Eu finalmente peguei e pino aterrado. Eu estava me perguntando por que quando eu toquei no pino 9, os leds acenderiam. Então percebi que estava agindo como uma espécie de terra, então ele me atingiu. LOLltbrgtMy próximo tutorial será o display. ltbrgtltbrgtl segmento 7Eu estava me perguntando como eu posso ter a matriz 4x4 flash letters. ltbrgtCould você me dá algumas dicas sobre isso Como posso abrir o arquivo. tmp no arduino IDE. Parece não funciona. Ltbrgtthank você :) clique nos links acima ele vai abrir no seu navegador, basta copiar e colar, ou renomear o arquivo tmp para pde (não tenho idéia por que fazer isso) Ok. Vou tentar Obrigado Este é um excelente instrutível Este é de longe o melhor guia de iniciantes para registos de deslocamento. Muito obrigado por colocar isso lá fora. Espero que você ainda responda perguntas para este instructable. Eu terminei de construir a matriz 4x4. Tudo costuma funcionar bem, mas estou tendo problemas para acender o LEDs. ltbrgtltbrgtI pode facilmente endereçar um diodo emissor de luz individual para acender, mas quando eu faço eu tenho LEDs de ambiente para ligar também (muito mais claro, em seguida, o LED endereçado) ltbrgtltbrgtI ter Atacou uma imagem para mostrar o que está acontecendo. Estou tentando apenas acender e LED que está na posição (1,1), mas como o mesmo LED (4,4) é pouco iluminado. Ltbrgtltbrghere é o pedaço de código que eu estou usando. LtbrgtltbrgtAny suposição de porquê Olá queria dizer obrigado por um ótimo tutorial, estou prestes a terminar de construir o 4x4 Matrix e vai deixar você sabe como ele vai. LtbrgtshiftOut (data, clock, MSBFIRST, B10000001) Ltbrgt Grande tutorial. ampnbsp Obrigado por torná-lo, it39s real helpfulltbrgt Este é um guia fantástico ltbrgt ltbrgt I39ve sido à procura de algo escrito como este por um tempo. Agora tenho uma matriz 4x4 totalmente trabalhada, que eu construí, e tenho que mostrar os padrões que eu quero. Ltbrgt ltbrgt Isto é tudo obrigado a você. Ltbrgt ltbrgt ltbrgt ltbrgt ltbrgt Mikey C Super rad tutorial doodbitshift esquerda (ltlt), bitshift direita (gtgt) Descrição From The Bitmath Tutorial no Playground Existem dois operadores de deslocamento de bit em C: o operador de deslocamento para a esquerda ltlt eo operador de deslocamento para a direita Gtgt. Esses operadores fazem com que os bits no operando esquerdo sejam deslocados para a esquerda ou para a direita pelo número de posições especificadas pelo operando direito. Mais informações sobre matemática bit a bit podem ser encontradas aqui. Variável ltlt numberofbits variável gtgt numberofbits Parâmetros variável - (byte, int, long) numberofbits integer lt 32 Quando você muda um valor x por y bits (x ltlt y), os bits y mais à esquerda em x são perdidos, literalmente deslocados para fora da existência: Se você está certo de que nenhum dos valores em um valor está sendo deslocado para o esquecimento, uma maneira simples de pensar no operador do lado esquerdo é que ele multiplica o operando esquerdo por 2 elevado à potência operando direita. Por exemplo, para gerar potências de 2, as seguintes expressões podem ser empregadas: Quando você muda x para a direita por y bits (x gtgt y) eo bit mais alto em x é a 1, o comportamento depende do tipo exato de dados de x . Se x é do tipo int, o bit mais alto é o bit de sinal, determinando se x é negativo ou não, como discutimos acima. Nesse caso, o bit de sinal é copiado para bits inferiores, por razões históricas esotéricas: esse comportamento, chamado extensão de sinal, muitas vezes não é o comportamento desejado. Em vez disso, você pode desejar que os zeros sejam deslocados da esquerda. Acontece que as regras de deslocamento à direita são diferentes para as expressões int não assinadas, portanto, você pode usar um atributo de tipo para suprimir as que estão sendo copiadas da esquerda: Se você tiver cuidado para evitar a extensão do sinal, use o operador shift direito gtgt como Maneira de dividir por potências de 2. Por exemplo: Correções, sugestões e documentação nova devem ser postadas no Fórum. O texto da referência Arduino está licenciado sob uma Licença Creative Commons Atribuição-Compartilhamento pela mesma licença 3.0. Amostras de código na referência são liberadas para o domínio público. Serial para Shifting-Out Paralelo com um 74HC595 Shifting Out amp o chip 595 Em algum momento ou outro você pode ficar sem pinos em sua placa Arduino e precisa estendê-lo com registros de deslocamento. Este exemplo é baseado no 74HC595. A folha de dados refere-se ao 74HC595 como um registrador de deslocamento em série, serial ou paralelo de 8 bits com bloqueio de saída de 3 estados. Em outras palavras, você pode usá-lo para controlar 8 saídas de uma vez enquanto apenas ocupando alguns pinos em seu microcontrolador. Você pode vincular vários registros juntos para ampliar sua produção ainda mais. (Os usuários também podem querer procurar outros chips driver com 595 ou 596 em seus números de peça, existem muitos. O STP16C596, por exemplo, irá conduzir 16 LEDs e elimina os resistores série com built-in fontes de corrente constante.) Como isso tudo funciona É através de algo chamado comunicação serial síncrona, ou seja, você pode pulso um pino para cima e para baixo, assim, comunicar um byte de dados para o registro bit a bit. Seu pulsando segundo pino, o pino do relógio, que você delinear entre bits. Isto está em contraste com a utilização da comunicação serial assíncrona da função Serial. begin (), que depende do remetente e do receptor a serem configurados independentemente para uma taxa de dados especificada. Uma vez que todo o byte é transmitido ao registrador, as mensagens HIGH ou LOW mantidas em cada bit são parceladas para cada um dos pinos de saída individuais. Esta é a parte de saída paralela, tendo todos os pinos fazer o que você quer que eles façam tudo de uma vez. A parte de saída serial deste componente vem de seu pino extra que pode passar a informação serial recebida do microcontrolador para fora novamente inalterada. Isto significa que você pode transmitir 16 bits em uma linha (2 bytes) e os primeiros 8 fluirão através do primeiro registrador no segundo registro e serão expressados ​​lá. Você pode aprender a fazer isso a partir do segundo exemplo. 3 estados refere-se ao fato de que você pode definir os pinos de saída como alta, baixa ou alta impedância. Ao contrário dos estados HIGH e LOW, você não pode definir pinos para o seu estado de alta impedância individualmente. Você só pode definir o chip inteiro juntos. Esta é uma coisa bastante especializada para fazer - Pense em uma matriz de LED que pode precisar de ser controlado por microcontroladores completamente diferentes, dependendo de uma configuração de modo específico construído em seu projeto. Nenhum dos dois exemplos aproveita esse recurso e normalmente não precisa se preocupar em obter um chip que o tenha. Aqui está uma tabela que explica os pin-outs adaptados da folha de dados Phillips. O primeiro passo é ampliar seu Arduino com um registro de deslocamento. O Circuito 1. Ligando-o Faça as seguintes conexões: GND (pino 8) à terra, Vcc (pino 16) a 5V OE (pino 13) à terra MR (pino 10) a 5V Esta configuração faz com que todos os pinos de saída Ativo e endereçável o tempo todo. A única falha deste conjunto é que você acaba com as luzes ligando para seu último estado ou algo arbitrário cada vez que você ligar o circuito pela primeira vez antes do programa começa a ser executado. Você pode contornar isso controlando os pinos MR e OE de sua placa Arduino também, mas desta forma funcionará e o deixará com pinos mais abertos. 2. Conecte a Arduino DS (pino 14) a Ardunio DigitalPin 11 (fio azul) SHCP (pino 11) a Ardunio DigitalPin 12 (fio amarelo) STCP (pino 12) a Ardunio DigitalPin 8 (fio verde) Ser referenciado como o dataPin, o clockPin eo latchPin respectivamente. Observe o capacitor de 0.1f no latchPin, se você tem algum cintilação quando os pulsos do pino de trava você pode usar um capacitor até mesmo para fora. 3. Adicione 8 LEDs. Neste caso, você deve conectar o cátodo (pino curto) de cada LED a uma terra comum, eo ânodo (pino longo) de cada LED para seu respectivo pino de saída do registro de deslocamento. Usando o registrador de deslocamento para fornecer energia como esta é chamada corrente de abastecimento. Alguns registros de deslocamento não podem ser atuais, eles só podem fazer o que se chama corrente de afundamento. Se você tiver um desses significa que você terá que virar a direção dos LEDs. Colocando os ânodos diretamente na alimentação e os cátodos (pinos de aterramento) nas saídas do registrador de deslocamento. Você deve verificar a sua folha de dados específica se você arent usando um chip da série 595. Não se esqueça de adicionar um resistor de 220 ohms em série para proteger os LEDs de serem sobrecarregados. Diagrama de circuito Aqui estão três exemplos de código. O primeiro é apenas um código do mundo hello que simplesmente produz um valor de byte de 0 a 255. O segundo programa acende um LED de cada vez. O terceiro ciclos através de uma matriz. O código é baseado em duas informações na folha de dados: o diagrama de tempo e a tabela lógica. A tabela lógica é o que lhe diz que, basicamente, tudo o que é importante acontece em uma batida superior. Quando o clockPin vai de baixo para alto, o registrador de deslocamento lê o estado do pino de dados. À medida que os dados são deslocados, ele é salvo em um registro de memória interno. Quando o latchPin vai de baixo para alto, os dados enviados são movidos a partir dos registos de deslocamento do registo de memória acima mencionado para os pinos de saída, iluminando os LEDs. Neste exemplo você adicionará um segundo registrador de deslocamento, duplicando o número de pinos de saída que você tem enquanto ainda estiver usando o mesmo número de pinos do Arduino. O Circuito 1. Adicione um segundo registrador de deslocamento. A partir do exemplo anterior, você deve colocar um segundo registro de deslocamento no quadro. Deve ter as mesmas ligações ao poder e à terra. 2. Ligue os 2 registos. Duas dessas conexões simplesmente estendem o mesmo sinal de clock e trava do Arduino para o segundo registrador de deslocamento (fios amarelo e verde). O fio azul está indo do pino de saída serial (pino 9) do primeiro registro de deslocamento para a entrada de dados em série (pino 14) do segundo registrador. 3. Adicione um segundo conjunto de LEDs. Neste caso eu adicionei uns verdes assim que ao ler o código é desobstruído que byte está indo a que jogo dos diodos emissores de luz Diagrama de circuito Aqui outra vez são três exemplos do código. Se você está curioso, você pode querer experimentar as amostras do primeiro exemplo com este circuito criado apenas para ver o que acontece. Exemplo de código 2.1 Contadores binários duplos Há apenas uma linha extra de código em comparação com a primeira amostra de código do exemplo 1. Ele envia um segundo byte. Isso força o primeiro registrador de deslocamento, aquele diretamente ligado ao Arduino, a passar o primeiro byte enviado ao segundo registrador, iluminando os LEDs verdes. O segundo byte aparecerá nos LEDs vermelhos. Exemplo de código 2.2 2 Byte One By One Comparando esse código com o código similar do exemplo 1, você vê que um pouco mais teve que mudar. A função blinkAll () foi alterada para a função blinkAll2Bytes () para refletir o fato de que agora há 16 LEDs para controlar. Além disso, na versão 1 os pulsos do latchPin estavam situados dentro das subfunções lightShiftPinA e lightShiftPinB (). Aqui eles precisam ser movidos de volta para o loop principal para acomodar a necessidade de executar cada subfunção duas vezes em uma linha, uma vez para os LEDs verdes e uma vez para os vermelhos. Exemplo de código 2.3 - Arrays duplos definidos Como a amostra 2.2, a amostra 2.3 também tira proveito da nova função blinkAll2bytes (). 2.3s grande diferença da amostra 1.3 é apenas que em vez de apenas uma única variável chamada dados e uma única matriz chamada dataArray você tem que ter um dataRED, um dataGREEN, dataArrayRED, dataArrayGREEN definido frente. Isso significa que a linha dataRED dataArrayREDj dataGREEN dataArrayGREENj shiftOut (dataPin, clockPin, dados) shiftOut (dataPin, clockPin, dataGREEN) shiftOut (dataPin, clockPin, dataRED) Iniciado por Carlyn Maw e Tom Igoe novembro 06

Comments