Propaganda

Já desejou ter o seu próprio carro Knight Industries Two Mil (KITT) - você sabe, da Knight Rider? Faça do seu sonho um passo mais perto da realidade construindo um scanner de LED! Aqui está o resultado final:

O que você precisa

Não há muitas partes necessárias para este projeto, e você já pode ter muitas delas:

  • 1 x Arduino UNO ou similar
  • 1 x Breadboard
  • 8 x LEDs vermelhos
  • Resistores de 8 x 220 ohm
  • 1 x 10k ohm potenciômetro
  • Macho para macho ligar fios

Se você tem um Kit de iniciação Arduino O que está incluído no kit inicial do Arduino? [MakeUseOf explica]Eu introduzi anteriormente o hardware de código aberto do Arduino aqui no MakeUseOf, mas você precisará mais do que apenas o Arduino real para criar algo com ele e realmente começar. Os "kits iniciais" do Arduino são ... consulte Mais informação é provável que você tenha todas essas partes (o que você pode fazer com um kit inicial? 5 projetos exclusivos do Arduino para iniciantes que você pode criar com apenas um kit inicial consulte Mais informação ).

instagram viewer

Quase todo Arduino funcionará, desde que tenha oito pinos disponíveis (nunca usou um Arduino antes? Comece aqui Introdução ao Arduino: Guia para iniciantesO Arduino é uma plataforma de prototipagem eletrônica de código aberto baseada em hardware e software flexível e fácil de usar. Destina-se a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos. consulte Mais informação ). Você poderia use um Shift Register Programação Arduino - Tocando com registradores de turno (também conhecidos como LEDs)Hoje vou tentar ensinar um pouco sobre os registros de turno. Essa é uma parte bastante importante da programação do Arduino, basicamente porque eles expandem o número de saídas que você pode usar, em troca de ... consulte Mais informação para controlar os LEDs, embora isso não seja necessário para este projeto, pois o Arduino possui pinos suficientes.

Plano de Construção

Arduino-Knight-Rider-Led-Scanner-Complete
Este é um projeto muito simples. Embora possa parecer complexo devido ao grande número de fios, cada parte individual é muito simples. Cada diodo emissor de luz (LED) está conectado ao seu pino Arduino. Isso significa que cada LED pode ser ligado e desligado individualmente. Um potenciômetro é conectado ao analógico do Arduino em pinos, que será usado para ajustar a velocidade do scanner.

O circuito

Arduino-Cavaleiro-Circuito-Cavaleiro
Conecte o pino externo esquerdo (olhando para a frente, com os pinos na parte inferior) do potenciômetro ao terra. Conecte o pino externo oposto a + 5v. Se não funcionar corretamente, inverta esses pinos. Conecte o pino do meio ao analógico do Arduino em 2.

Conecte o ânodo (perna longa) de cada LED aos pinos digitais de um a oito. Conecte os cátodos (perna curta) ao terra do Arduino.

O código

Crie um novo esboço e salve-o como "knightRider". Aqui está o código:

const int leds [] = {1,2,3,4,5,6,7,8}; // Pinos conduzidos. const int totalLeds = 8; int tempo = 50; // Velocidade padrão void setup () {// Inicializa todas as saídas para (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Digitaliza o tempo da direita para a esquerda = analogRead (2); digitalWrite (leds [i], ALTO); tempo de atraso); digitalWrite (leds [i - 1], ALTO); tempo de atraso); digitalWrite (leds [i], LOW); } }

Vamos dividir. 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. Esses elementos são definidos como constantes ("const"), o que significa que eles não podem ser alterados posteriormente. Você não precisa usar uma constante (o código funcionará perfeitamente se você remover "const"), embora isso seja recomendado.

Os elementos de uma matriz são acessados ​​usando colchetes (“[]”) e um número inteiro chamado índice. Os índices começam em zero, então "leds [2]" retornaria o terceiro elemento da matriz - pino 3. As matrizes tornam o código mais rápido de escrever e mais fácil de ler, eles fazem o computador fazer o trabalho duro!

Um loop for é usado para configurar cada pino como uma saída:

para (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); }

Este código está dentro da função "setup ()", pois só precisa ser executado uma vez no início do programa. Para loops são muito úteis. Eles permitem que você execute o mesmo código repetidamente, com um valor diferente a cada vez. Eles são perfeitos para trabalhar com matrizes. Um número inteiro "i" é declarado e apenas o código dentro do loop pode acessar essa variável (isso é conhecido como "escopo"). O valor de i começa em zero e, para cada iteração do loop, i é aumentado em um. Quando o valor de i é menor ou igual à variável "totalLeds", o loop "quebra" (para).

O valor de i é usado para acessar a matriz "leds". Esse loop acessa todos os elementos da matriz e o configura como uma saída. Você pode digitar manualmente “pinMode (pin, OUTPUT)” oito vezes, mas por que escrever oito linhas quando pode escrever três?

Embora algumas linguagens de programação possam dizer quantos elementos há em uma matriz (geralmente com sintaxe como array.length), o Arduino não a torna tão simples (envolve um pouco mais de matemática). Como o número de elementos na matriz já é conhecido, não há problema.

Arduino-Cavaleiro-Cavaleiro-LEDS

Dentro do loop principal (loop vazio ()) são mais dois para loops. O primeiro ativa e apaga os LEDs de 1 a 8. O segundo loop ativa e apaga os LEDs de 8 - 1. Observe como o pino atual está ativado e o pino atual mais um também. Isso garante que sempre haja dois LEDS acesos ao mesmo tempo, tornando o scanner mais realista.

No início de cada loop, o valor do pote é lido na variável "time":

time = analogRead (2);

Isso é feito duas vezes, uma vez dentro de cada loop. Isso precisa ser constantemente verificado e atualizado. Se isso estivesse fora dos loops, ainda funcionaria, porém haveria um pequeno atraso - ele só seria executado quando o loop terminasse de executar. Os potenciômetros são analógicos, portanto, por que "analogRead (pin)" é usado. Isso retorna valores entre zero (mínimo) e 1023 (máximo). O Arduino é capaz de converter esses valores em algo mais útil, porém eles são perfeitos para este caso de uso.

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

Scanner avançado

Arduino-LEDs-Fora-Pares

Agora que você conhece o básico, vejamos algo mais complexo. Este scanner acenderá os LEDs em pares, começando do lado de fora e trabalhando. Ele reverterá isso e passará de dentro para fora. Aqui está o código:

const int leds [] = {1,2,3,4,5,6,7,8}; // Pinos conduzidos. const int totalLeds = 8; const int halfLeds = 4; int tempo = 50; // Velocidade padrão void setup () {// Inicializa todas as saídas para (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Scan dentro de pares fora time = analogRead (2); digitalWrite (leds [i], ALTO); digitalWrite (leds [(totalLeds - i) - 1], ALTO); tempo de atraso); digitalWrite (leds [i], LOW); digitalWrite (leds [(totalLeds - i) - 1], BAIXO); tempo de atraso); } }

Este código é um pouco mais complexo. Observe como os dois loops vão de zero a "halfLeds - 1" (3). Isso cria um scanner melhor. Se os dois loops passassem de 4 - 0 e 0 - 4, os mesmos LEDs piscariam duas vezes na mesma sequência - isso não pareceria muito bom.

Agora você deve possuir um scanner LED Knight Rider em funcionamento! Seria fácil modificar isso para usar LEDs maiores ou maiores ou implementar seu próprio padrão. Este circuito é muito fácil de portar para um Raspberry Pi (novo no Pi? Começa aqui Raspberry Pi: o tutorial não oficialSe você é proprietário de um Pi atual e deseja saber mais ou um proprietário em potencial desse dispositivo de tamanho de cartão de crédito, este não é um guia que você deseja perder. consulte Mais informação ) ou ESP8266 Conheça o assassino do Arduino: ESP8266E se eu disser a você que existe uma placa de desenvolvimento compatível com Arduino com Wi-Fi embutido por menos de US $ 10? Bem, existe. consulte Mais informação .

Você está construindo uma réplica KITT? Eu adoraria ver tudo o que Knight Rider nos comentários.

Joe é graduado em Ciência da Computação pela Universidade de Lincoln, Reino Unido. Ele é um desenvolvedor de software profissional e, quando não está pilotando drones ou escrevendo músicas, pode ser encontrado tirando fotos ou produzindo vídeos.