Haga un escáner LED Knight Rider con Arduino

  • Peter Holmes
  • 0
  • 4025
  • 497
Anuncio

¿Alguna vez has deseado tener tu propio coche Knight Industries Two Thousand (KITT)? ¿Sabes, de Knight Rider? ¡Haga que su sueño esté un paso más cerca de la realidad construyendo un escáner LED! Aquí está el resultado final:

Que necesitas

No se necesitan muchas piezas para este proyecto, y es posible que ya tenga muchas de ellas:

  • 1 x Arduino UNO o similar
  • 1 x placa de prueba
  • 8 x LED rojos
  • 8 resistencias de 220 ohmios
  • 1 x potenciómetro de 10k ohmios
  • Cables de conexión macho a macho

Si tiene un kit de inicio Arduino ¿Qué incluye un kit de inicio Arduino? [MakeUseOf explica] ¿Qué se incluye en un kit de inicio Arduino? [Explica MakeUseOf] Anteriormente presenté el hardware de código abierto Arduino aquí en MakeUseOf, pero necesitarás más que el Arduino real para construir algo y comenzar realmente. Los "kits de inicio" de Arduino son ... es probable que tenga todas estas partes (¿qué puede hacer con un kit de inicio? 5 proyectos únicos de Arduino para principiantes que puede hacer con solo un kit de inicio 5 proyectos únicos de Arduino para principiantes que puede hacer con solo un kit de inicio).

Casi cualquier Arduino funcionará, siempre que tenga ocho pines disponibles (¿Nunca ha usado un Arduino antes? Comience aquí Comenzando con Arduino: una guía para principiantes Comenzando con Arduino: una guía para principiantes Arduino es una plataforma de prototipos electrónicos de código abierto basada en flexibilidad , hardware y software fáciles de usar. Está destinado a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos). Podrías usar una programación Arduino de registro de cambios - Jugar con registros de cambios (también conocidos como LED) Programación Arduino - Jugar con registros de cambios (también conocidos como LED aún) Hoy intentaré enseñarte un poco sobre los registros de cambios. Estas son una parte bastante importante de la programación de Arduino, básicamente porque amplían la cantidad de salidas que puede usar, a cambio de ... para controlar los LED, aunque esto no es necesario para este proyecto, ya que Arduino tiene suficientes pines.

Plan de construcción


Este es un proyecto muy simple. Si bien puede parecer complejo debido a la gran cantidad de cables, cada parte individual es muy simple. Cada diodo emisor de luz (LED) está conectado a su propio pin Arduino. Esto significa que cada LED se puede encender y apagar individualmente. Se conecta un potenciómetro al análogo Arduino en pines, que se utilizará para ajustar la velocidad del escáner.

El circuito


Conecte el pin externo izquierdo (mirando hacia el frente, con los pines en la parte inferior) del potenciómetro a tierra. Conecte el pin externo opuesto a + 5v. Si no funciona correctamente, invierta estos pines. Conecte el pin del medio al analógico Arduino en 2.

Conecte el ánodo (pata larga) de cada LED a los pines digitales del uno al ocho. Conecte los cátodos (pata corta) a tierra Arduino.

El código

Cree un nuevo boceto y guárdelo como “caballero”. Aquí está el código:

const int leds [] = 1,2,3,4,5,6,7,8; // Pines led const int totalLeds = 8; int tiempo = 50; // Configuración de vacío de velocidad predeterminada () // Inicializa todas las salidas para (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT);   void loop()  for(int i = 0; i  0; --i) // Escanear tiempo de derecha a izquierda = analogRead (2); digitalWrite (leds [i], ALTO); tiempo de retardo); digitalWrite (leds [i - 1], ALTO); tiempo de retardo); digitalWrite (leds [i], LOW); 

Vamos a desglosarlo. Cada pin LED se almacena en una matriz:

const int leds [] = 1,2,3,4,5,6,7,8;

Una matriz es esencialmente una colección de artículos relacionados. Estos elementos se definen como constantes (“const”), lo que significa que no se pueden cambiar más adelante. No tiene que usar una constante (el código funcionará perfectamente si elimina “const”), aunque se recomienda.

Se accede a los elementos de una matriz mediante corchetes (“[]”) y un entero llamado índice. Los índices comienzan en cero, entonces “leds [2]” devolvería el tercer elemento en la matriz: pin 3. Las matrices hacen que el código sea más rápido de escribir y más fácil de leer, hacen que la computadora haga el trabajo duro!

Se usa un bucle for para configurar cada pin como salida:

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

Este código está dentro del “preparar()” función, ya que solo necesita ejecutarse una vez al inicio del programa. Para los bucles son muy útiles. Le permiten ejecutar el mismo código una y otra vez, con un valor diferente cada vez. Son perfectos para trabajar con matrices. Un entero “yo” se declara, y solo el código dentro del bucle puede acceder a esta variable (esto se conoce como “alcance”) El valor de i comienza en cero, y para cada iteración del ciclo, i aumenta en uno. Una vez que el valor de i es menor o igual que el “totalLeds” variable, el bucle “rompe” (se detiene).

El valor de i se utiliza para acceder a “leds” formación. Este bucle accede a todos los elementos de la matriz y lo configura como una salida. Puedes escribir manualmente “pinMode (pin, SALIDA)” ocho veces, pero ¿por qué escribir ocho líneas cuando puedes escribir tres??

Si bien algunos lenguajes de programación pueden decirle cuántos elementos hay en una matriz (generalmente con una sintaxis como array.length), Arduino no lo hace tan simple (implica un poco más de matemáticas). Como ya se conoce el número de elementos en la matriz, no es un problema.

Dentro del bucle principal (bucle vacío ()) son dos más para los bucles. El primero enciende y apaga los LED de 1 a 8. El segundo bucle enciende y apaga los LED de 8 a 1. Observe cómo se activa el pin actual y el pin actual más uno también. Esto asegura que siempre haya dos LED encendidos al mismo tiempo, haciendo que el escáner se vea más realista.

Al comienzo de cada ciclo, el valor del bote se lee en el “hora” variable:

tiempo = analogRead (2);

Esto se hace dos veces, una vez dentro de cada bucle. Esto debe ser revisado y actualizado constantemente. Si esto estuviera fuera de los bucles, todavía funcionaría, sin embargo, habría un pequeño retraso, solo se ejecutaría una vez que un bucle haya terminado de ejecutarse. Las macetas son analógicas, de ahí que “analogRead (pin)” es usado Esto devuelve valores entre cero (mínimo) y 1023 (máximo). Arduino es capaz de convertir estos valores en algo más útil, sin embargo, son perfectos para este caso de uso.

El retraso entre el cambio de LED (o la velocidad del escáner) se establece en milisegundos (1/1000 segundos), por lo que el tiempo máximo es de poco más de 1 segundo.

Escáner avanzado

Ahora que conoce los conceptos básicos, veamos algo más complejo. Este escáner iluminará los LED en pares, comenzando desde el exterior y trabajando hacia adentro. Luego lo invertirá y pasará de adentro hacia afuera. Aquí está el código:

const int leds [] = 1,2,3,4,5,6,7,8; // Pines led const int totalLeds = 8; const int halfLeds = 4; int tiempo = 50; // Configuración de vacío de velocidad predeterminada () // Inicializa todas las salidas para (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT);   void loop()  for(int i = 0; i <(halfLeds - 1); ++i)  // Scan outside pairs in time = analogRead(2); digitalWrite(leds[i], HIGH); digitalWrite(leds[(totalLeds - i) - 1], HIGH); delay(time); digitalWrite(leds[i], LOW); digitalWrite(leds[(totalLeds - i) - 1], LOW); delay(time);  for(int i = (halfLeds - 1); i> 0; --i) // Escanear el tiempo de pares internos = analogRead (2); digitalWrite (leds [i], ALTO); digitalWrite (leds [(totalLeds - i) - 1], ALTO); tiempo de retardo); digitalWrite (leds [i], LOW); digitalWrite (leds [(totalLeds - i) - 1], BAJO); tiempo de retardo); 

Este código es un poco más complejo. Observe cómo ambos bucles van de cero a “halfLeds - 1” (3) Esto hace un mejor escáner. Si ambos bucles pasaron de 4 a 0 y de 0 a 4, los mismos LED parpadearían dos veces en la misma secuencia; esto no se vería muy bien.

¡Ahora debería tener un escáner LED Knight Rider que funcione! Sería fácil modificar esto para usar más o más LED, o implementar su propio patrón. Este circuito es muy fácil de transferir a un Raspberry Pi (¿nuevo en Pi? Comience aquí Raspberry Pi: el tutorial no oficial Raspberry Pi: el tutorial no oficial Si es un propietario actual de Pi que desea obtener más información o un propietario potencial de este crédito dispositivo de tamaño de tarjeta, esta no es una guía que quieras perderte) o ESP8266 Conoce al asesino de Arduino: ESP8266 Conoce al asesino de Arduino: ESP8266 ¿Qué pasa si te digo que hay una placa de desarrollo compatible con Arduino con Wi-Fi incorporado? Fi por menos de $ 10? Bueno, hay. .

¿Estás construyendo una réplica de KITT? Me encantaría ver todas las cosas de Knight Rider en los comentarios.




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.