Faça um cavaleiro cavaleiro levou scanner com arduino

Sempre quis que você tinha seu próprio carro Cavaleiro Industries Two Thousand (KITT) - você sabe, de Knight Rider? Faça o seu sonho de um passo mais perto da realidade através da construção de um scanner de LED! Aqui está o resultado final:

Video: Como fazer um capacete para bebidas!

Video: Manga novo cavaleiros do zodiaco Episodio G vol 2

O que você precisa

Não há um monte de peças necessárias para este projeto, e você pode ter muitos deles já:

  • 1 x Arduino UNO ou semelhante
  • 1 x Tábua
  • 8 x LEDs vermelhos
  • 8 x 220 ohm resistores
  • 1 x 10k ohm potenciômetro
  • Macho para macho ligar fios

Se você tem um starter kit Arduino é provável que você tem todas essas partes (o que você pode fazer com um starter kit?).O que está incluído em um Starter Kit Arduino? [MakeUseOf Explica]O que está incluído em um Starter Kit Arduino? [MakeUseOf Explica]Eu já havia introduzido o hardware livre Arduino aqui no MakeUseOf, mas você vai precisar de mais do que apenas o Arduino real para construir alguma coisa com isso e realmente começar. Arduino "starter kits" estamos...consulte Mais informação

Quase todo o Arduino vai funcionar, desde que tenha oito pinos disponíveis (Nunca usou um Arduino antes? Comece aqui). Você poderia usar um Shift Register para controlar os LEDs, embora isso não seja necessário para este projeto, como o Arduino tem bastante dos pinos.

Plano de construir

Arduino-Knight-Rider-led-Scanner completa
Este é um projeto muito simples. Embora possa parecer complexo a partir do grande número de fios, cada parte individual é muito simples. Cada Light Emitting Diode (LED) está ligado ao seu próprio pin Arduino. Isto significa que cada LED pode ser ligado individualmente ligado e desligado. Um potenciómetro é ligado ao análogo Arduino em pinos, que vai ser utilizado para ajustar a velocidade do scanner.

O circuito

Arduino-Knight-Rider-Circuito
Ligue o pino externa esquerda (olhando para a frente, com os pinos na parte inferior) do potenciómetro à terra. Ligue o pino externo oposto a + 5V. Se ele não funcionar corretamente, inverta esses pinos. Ligue o pino do meio para Arduino analógico em dois.

Ligue o ânodo (long leg) de cada LED para pinos digitais de um a oito. Ligue os cátodos (perna curta) ao Arduino chão.

O código

Criar um novo desenho e salve-o como “knightrider”. Aqui está o código:

const int leds[] = {1,2,3,4,5,6,7,8}- // pinos Ledconst int totalLeds = 8-int Tempo = 50- // velocidade padrãovazio configuração() {// inicializa todas as saídaspara(int Eu = 0- Eu lt; = totalLeds- ++Eu) {pinMode(leds[Eu], SAÍDA)-}}vazio laço() {para(int Eu = 0- Eu lt; totalLeds - 1- ++Eu) {// digitalização esquerda para a direitaTempo = analogRead(2)-digitalWrite(leds[Eu], ALTO)-demora(Tempo)-digitalWrite(leds[Eu + 1], ALTO)-demora(Tempo)-digitalWrite(leds[Eu], BAIXO)-}para(int Eu = totalLeds- Eu gt; 0- --Eu) {// direito de digitalização para a esquerdaTempo = analogRead(2)-digitalWrite(leds[Eu], ALTO)-demora(Tempo)-digitalWrite(leds[Eu - 1], ALTO)-demora(Tempo)-digitalWrite(leds[Eu], BAIXO)-}}

Vamos dividi-la. Cada pino de LED é armazenado em uma matriz:

const int leds[] = {1,2,3,4,5,6,7,8}-

Uma matriz é essencialmente uma coleção de itens relacionados. Estes elementos são definidos como constante ( “constante”), o que significa que não pode ser alterado posteriormente. Você não tem que usar uma constante (o código irá funcionar perfeitamente se você remover “const”), embora seja recomendado.

Elementos de uma matriz são acedidos utilizando parêntesis rectos ( “[]”) e um número inteiro chamado um índice. Índices começam em zero, de modo “leds [2]” retornaria o terceiro elemento na matriz - pino 3. Arrays tornar o código mais rápido para escrever e mais fácil de ler, eles fazem o computador fazer o trabalho duro!

Um loop é usado para configurar cada um dos pinos como uma saída:

para(int Eu = 0- Eu lt; = totalLeds- ++Eu) {pinMode(leds[Eu], SAÍDA)-}


Este código é dentro da função “setup ()”, uma vez que só precisa ser executado uma vez no início do programa. Para laços são muito úteis. Eles permitem que você execute o mesmo código de uma e outra vez, com um valor diferente de cada vez. Eles são perfeitos para trabalhar com arrays. Um número inteiro “i” é declarada, e somente o código dentro do laço pode aceder a esta variável (isto é conhecido como “alcance”). O valor de i começa em zero, e para cada iteração do circuito, i é aumentado em um. Uma vez que o valor de i é menos do que ou igual ao “totalLeds” variável, o loop “quebra” (parar).

O valor de i é usado para acessar a matriz “leds”. Este circuito de acessos a cada elemento na matriz e configura-lo como uma saída. Você pode digitar manualmente “pinMode (pin, OUTPUT)” oito vezes, mas por que escrever oito linhas quando você pode escrever três?

Enquanto algumas linguagens de programação posso te dizer quantos elementos estão em um array (geralmente com sintaxe como array.length), Arduino não torná-lo tão simples (que envolve um pouco mais de matemática). Como o número de elementos na matriz já é conhecido, não é um problema.

Arduino-Knight-Rider-LEDS

Dentro do loop principal (void loop ()) São mais dois loops. O primeiro define os LEDs e depois desligar a partir de 1 - 8. A segunda alça define os LEDs e depois desligar a partir de 8 - 1. Note como o pino de corrente situa-se, e o pino de corrente e de uma for definido no bem. Isso garante que há sempre dois LEDs no ao mesmo tempo, fazendo com que o olhar do scanner mais realista.

No início de cada ciclo, o valor do pote é lido para a variável “tempo”:

Tempo = analogRead(2)-

Isto é feito por duas vezes, uma vez no interior de cada ciclo. Isso precisa ser constantemente verificado e atualizado. Se isso estava fora dos loops, ele continuaria a trabalhar, no entanto, haveria um pequeno atraso - que seria executado apenas uma vez por ciclo terminar a execução. Potes são analógicos, daí por “analogRead (pinos)” é usado. Isto devolve valores entre zero (mínimo) e 1023 (no máximo). Arduino é capaz de converter esses valores para algo mais útil, no entanto eles são perfeitos para este caso de uso.

O atraso entre mudança LEDs (ou a velocidade do scanner) é definido em milissegundos (1/1000 segundo), de modo que o tempo máximo é de pouco mais de 1 segundo.

Scanner avançado

Arduino-LEDs-outside-Pairs

Agora que você sabe o básico, vamos olhar para algo mais complexo. Este scanner irá acender os LEDs em pares a partir do exterior e de trabalho. É, então, inverter esta e ir de dentro para fora pares. Aqui está o código:

const int leds[] = {1,2,3,4,5,6,7,8}- // pinos Ledconst int totalLeds = 8-const int halfLeds = 4-int Tempo = 50- // velocidade padrãovazio configuração() {// inicializa todas as saídaspara(int Eu = 0- Eu lt; = totalLeds- ++Eu) {pinMode(leds[Eu], SAÍDA)-}}vazio laço() {para(int Eu = 0- Eu lt; (halfLeds - 1)- ++Eu) {// Digitalizar pares fora emTempo = analogRead(2)-digitalWrite(leds[Eu], ALTO)-digitalWrite(leds[(totalLeds - Eu) - 1], ALTO)-demora(Tempo)-digitalWrite(leds[Eu], BAIXO)-digitalWrite(leds[(totalLeds - Eu) - 1], BAIXO)-demora(Tempo)-}para(int Eu = (halfLeds - 1)- Eu gt; 0- --Eu) {// Verificar interior dos pares foraTempo = analogRead(2)-digitalWrite(leds[Eu], ALTO)-digitalWrite(leds[(totalLeds - Eu) - 1], ALTO)-demora(Tempo)-digitalWrite(leds[Eu], BAIXO)-digitalWrite(leds[(totalLeds - Eu) - 1], BAIXO)-demora(Tempo)-}}

Este código é um pouco mais complexo. Observe como ambos os loops ir de zero a “halfLeds - 1” (3). Isso faz com que um scanner melhor. Se ambos os loops foi 4-0 e 0-4, em seguida, os mesmos LEDs iria piscar duas vezes na mesma sequência - isto não seria muito bom.

Agora você deve possuir um scanner LED Knight Rider trabalhar! Seria fácil para modificar isto para usar mais ou maiores LEDs, ou implementar seu próprio padrão. Este circuito é muito fácil para a porta a um Raspberry Pi (novo para Pi? Começa aqui) ou ESP8266.Raspberry Pi: O Tutorial UnofficialRaspberry Pi: O Tutorial UnofficialSe você é proprietário de uma corrente de Pi que quer aprender mais ou proprietário de uma potencial deste dispositivo de tamanho de cartão de crédito, este não é um guia que você quer perder.consulte Mais informação

Você está construindo uma réplica KITT? Eu adoraria ver todas as coisas Knight Rider nos comentários.


Artigos relacionados