Publicité

Vous avez toujours souhaité avoir votre propre voiture Knight Industries Two Thousand (KITT) - vous savez, de Knight Rider? Rendez votre rêve plus proche de la réalité en construisant un scanner LED! Voici le résultat final:

De quoi as-tu besoin

Il n'y a pas beaucoup de pièces nécessaires pour ce projet, et vous en avez peut-être déjà plusieurs:

  • 1 x Arduino UNO ou similaire
  • 1 x planche à pain
  • 8 x LED rouges
  • 8 x résistances 220 ohms
  • 1 x potentiomètre 10k ohms
  • Câble de raccordement mâle à mâle

Si vous avez un Kit de démarrage Arduino Qu'est-ce qui est inclus dans un kit de démarrage Arduino? [MakeUseOf explique]J'ai déjà présenté le matériel open-source Arduino ici sur MakeUseOf, mais vous allez avoir besoin de plus que le véritable Arduino pour en construire quelque chose et commencer réellement. Les "kits de démarrage" Arduino sont ... Lire la suite il est probable que vous ayez toutes ces parties (que pouvez-vous faire avec un kit de démarrage? 5 projets Arduino uniques pour les débutants que vous pouvez réaliser avec juste un kit de démarrage Lire la suite ).

instagram viewer

Presque n'importe quel Arduino fonctionnera, à condition qu'il ait huit broches disponibles (Jamais utilisé un Arduino auparavant? Commencez ici Débuter avec Arduino: Guide du débutantArduino est une plate-forme de prototypage électronique open source basée sur du matériel et des logiciels flexibles et faciles à utiliser. Il est destiné aux artistes, designers, amateurs et à toute personne intéressée par la création d'objets ou d'environnements interactifs. Lire la suite ). Vous pourriez utiliser un registre à décalage Programmation Arduino - Jouer avec les registres à décalage (alias encore plus de LED)Aujourd'hui, je vais essayer de vous en dire un peu plus sur les registres à décalage. Ce sont une partie assez importante de la programmation Arduino, essentiellement parce qu'ils augmentent le nombre de sorties que vous pouvez utiliser, en échange de ... Lire la suite pour contrôler les LED, bien que cela ne soit pas nécessaire pour ce projet, car l'Arduino a suffisamment de broches.

Plan de construction

Arduino-Knight-Rider-Led-Scanner-Complete
Ceci est un projet très simple. Bien qu'il puisse sembler complexe à cause du grand nombre de fils, chaque pièce individuelle est très simple. Chaque diode électroluminescente (LED) est connectée à sa propre broche Arduino. Cela signifie que chaque LED peut être allumée et éteinte individuellement. Un potentiomètre est connecté à l'analogue Arduino en broches, qui sera utilisé pour régler la vitesse du scanner.

Le circuit

Circuit Arduino-Knight-Rider
Connectez la broche extérieure gauche (en regardant vers l'avant, avec les broches en bas) du potentiomètre à la masse. Connectez la broche extérieure opposée à + 5v. Si cela ne fonctionne pas correctement, inversez ces broches. Connectez la broche du milieu à l'analogue Arduino en 2.

Connectez l'anode (jambe longue) de chaque LED aux broches numériques 1 à 8. Connectez les cathodes (jambe courte) à la terre Arduino.

Le code

Créez une nouvelle esquisse et enregistrez-la en tant que «knightRider». Voici le code:

const int leds [] = {1,2,3,4,5,6,7,8}; // Broches à led. const int totalLeds = 8; int time = 50; // Configuration de void de vitesse par défaut () {// Initialise toutes les sorties pour (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Scan de droite à gauche = analogRead (2); digitalWrite (leds [i], HIGH); temporisation); digitalWrite (leds [i - 1], HIGH); temporisation); digitalWrite (leds [i], LOW); } }

Décomposons-le. Chaque broche LED est stockée dans un tableau:

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

Un tableau est essentiellement une collection d'éléments associés. Ces éléments sont définis comme constants («const»), ce qui signifie qu'ils ne peuvent pas être modifiés ultérieurement. Vous n'avez pas besoin d'utiliser une constante (le code fonctionnera parfaitement si vous supprimez «const»), bien que cela soit recommandé.

Les éléments d'un tableau sont accessibles à l'aide de crochets («[]») et d'un entier appelé index. Les index commencent à zéro, donc "leds [2]" retournerait le troisième élément du tableau - broche 3. Les tableaux rendent le code plus rapide à écrire et plus facile à lire, ils font travailler l'ordinateur dur!

Une boucle for est utilisée pour configurer chaque broche comme sortie:

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

Ce code est à l'intérieur de la fonction "setup ()", car il n'a besoin d'être exécuté qu'une seule fois au démarrage du programme. Car les boucles sont très utiles. Ils vous permettent d'exécuter le même code encore et encore, avec une valeur différente à chaque fois. Ils sont parfaits pour travailler avec des tableaux. Un entier «i» est déclaré, et seul le code à l'intérieur de la boucle peut accéder à cette variable (c'est ce que l'on appelle «portée»). La valeur de i commence à zéro, et pour chaque itération de la boucle, i est augmentée de un. Une fois que la valeur de i est inférieure ou égale à la variable «totalLeds», la boucle se «rompt» (s'arrête).

La valeur de i est utilisée pour accéder au tableau des «leds». Cette boucle accède à chaque élément du tableau et le configure en tant que sortie. Vous pouvez taper manuellement «pinMode (pin, OUTPUT)» huit fois, mais pourquoi écrire huit lignes alors que vous pouvez en écrire trois?

Alors que certains langages de programmation peuvent vous dire combien d'éléments sont dans un tableau (généralement avec une syntaxe comme array.length), Arduino ne le rend pas si simple (cela implique un peu plus de mathématiques). Le nombre d'éléments du tableau étant déjà connu, ce n'est pas un problème.

Arduino-Knight-Rider-LEDS

À l'intérieur de la boucle principale (boucle vide ()) sont deux autres pour les boucles. Le premier allume et éteint les LED de 1 à 8. La deuxième boucle active et désactive les LED de 8 à 1. Remarquez comment la broche actuelle est activée et la broche actuelle plus un est également activée. Cela garantit qu'il y a toujours deux LED allumées en même temps, ce qui rend le scanner plus réaliste.

Au début de chaque boucle, la valeur du pot est lue dans la variable «time»:

time = analogRead (2);

Cela se fait deux fois, une fois dans chaque boucle. Cela doit être constamment vérifié et mis à jour. Si cela était en dehors des boucles, cela fonctionnerait toujours, mais il y aurait un petit retard - il ne s'exécuterait qu'une fois l'exécution d'une boucle terminée. Les pots sont analogiques, c'est pourquoi «analogRead (pin)» est utilisé. Cela renvoie des valeurs comprises entre zéro (minimum) et 1023 (maximum). Arduino est capable de convertir ces valeurs en quelque chose de plus utile, mais elles sont parfaites pour ce cas d'utilisation.

Le délai entre le changement de LED (ou la vitesse du scanner) est défini en millisecondes (1/1000 seconde), de sorte que le temps maximum est légèrement supérieur à 1 seconde.

Scanner avancé

Arduino-LEDs-Outside-Pairs

Maintenant que vous connaissez les bases, regardons quelque chose de plus complexe. Ce scanner éclairera les LED par paires en commençant par l'extérieur et en travaillant. Il inversera ensuite cela et passera des paires internes aux externes. Voici le code:

const int leds [] = {1,2,3,4,5,6,7,8}; // Broches à led. const int totalLeds = 8; const int halfLeds = 4; int time = 50; // Configuration de void de vitesse par défaut () {// Initialise toutes les sorties pour (int i = 0; i <= totalLeds; ++ i) {pinMode (leds [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Scan à l'intérieur des paires time out = analogRead (2); digitalWrite (leds [i], HIGH); digitalWrite (leds [(totalLeds - i) - 1], HIGH); temporisation); digitalWrite (leds [i], LOW); digitalWrite (leds [(totalLeds - i) - 1], LOW); temporisation); } }

Ce code est légèrement plus complexe. Remarquez comment les deux boucles passent de zéro à «halfLeds - 1» (3). Cela fait un meilleur scanner. Si les deux boucles passaient de 4 à 0 et de 0 à 4, les mêmes voyants clignotaient deux fois dans la même séquence - cela n'aurait pas l'air très bien.

Vous devriez maintenant posséder un scanner LED Knight Rider fonctionnel! Il serait facile de le modifier pour utiliser des LED plus ou plus grandes, ou d'implémenter votre propre modèle. Ce circuit est très facile à porter sur un Tarte aux framboises (nouveau sur Pi? Commencer ici Raspberry Pi: le tutoriel non officielQue vous soyez un propriétaire Pi actuel qui veut en savoir plus ou un propriétaire potentiel de cet appareil de la taille d'une carte de crédit, ce n'est pas un guide que vous voulez manquer. Lire la suite ) ou ESP8266 Rencontrez le tueur Arduino: ESP8266Et si je vous disais qu'il y a une carte de développement compatible Arduino avec Wi-Fi intégré pour moins de 10 $? Eh bien, il y en a. Lire la suite .

Construisez-vous une réplique KITT? Je serais ravi de voir toutes les choses Knight Rider dans les commentaires.

Joe est diplômé en informatique de l'Université de Lincoln, au Royaume-Uni. C'est un développeur de logiciels professionnel, et lorsqu'il ne pilote pas de drones ou n'écrit pas de musique, il peut souvent être trouvé en train de prendre des photos ou de produire des vidéos.