Faire un cavalier de chevalier conduit scanner avec arduino
Jamais souhaité vous aviez votre propre Chevalier Industries Two Thousand (KITT) voiture - vous le savez, de Knight Rider? Faites votre rêve un peu plus de la réalité en construisant un scanner à LED! Voici le résultat final:
Contenu
- De quoi as-tu besoin
- Plan de construction
- Le circuit
- Le code
- Video: un cavalier saute un obstacle par-dessus les ramasseurs de barres
- Video: building games #5 un cavalier, qui surgit hors de la nuit
- Scanner avancée
- Video: book 01 - the hunchback of notre dame audiobook by victor hugo (chs 1-6)
- Video: book 06 - the hunchback of notre dame audiobook by victor hugo (chs 1-5)
De quoi as-tu besoin
Il n`y a pas beaucoup de pièces nécessaires à ce projet, et vous pouvez avoir beaucoup d`entre eux déjà:
- 1 x Arduino UNO ou similaire
- 1 x Breadboard
- 8 x LED rouges
- 8 x résistances de 220 ohms
- 1 x potentiomètre 10k ohms
- Homme crochet mâle en fils
Si vous avez un Kit de démarrage Arduino il est probable que vous avez toutes ces pièces (Que pouvez-vous faire avec un kit de démarrage?).Ce qui est inclus dans un Arduino Starter Kit? [MakeUseOf Explique]Ce qui est inclus dans un Arduino Starter Kit? [MakeUseOf Explique]Je l`ai déjà introduit le matériel open source Arduino ici MakeUseOf, mais vous allez besoin plus que l`Arduino réelle pour construire quelque chose sur et en fait commencer. Arduino "kits de démarrage" sont...Lire la suite
Presque tous les Arduino fonctionnera, à condition qu`il a huit broches disponibles (jamais utilisé un Arduino avant? Commencez ici). Vous pourriez utiliser un registre à décalage pour contrôler les LED, bien que cela ne soit pas nécessaire pour ce projet, comme l`Arduino a des broches assez.
plan de construction
Ce projet est très simple. Bien qu`il puisse sembler complexe du grand nombre de fils, chaque partie est très simple. Chaque diode électroluminescente (LED) est connecté à sa propre broche Arduino. Cela signifie que chaque LED peut être activée et désactivée individuellement. Un potentiomètre est relié à l`analogue Arduino à broches, qui sera utilisé pour ajuster la vitesse du scanner.
Le circuit
Connecter la broche externe gauche (en regardant l`avant, avec les broches en bas) du potentiomètre à la masse. Connecter la broche extérieure opposée à + 5v. Si cela ne fonctionne pas correctement, inverser ces broches. Raccorder la broche centrale à analogique Arduino en deux.
Connecter l`anode (branche longue) de chaque LED à broches numériques de un à huit. Connectez les cathodes (jambes courtes) pour Arduino sol.
Le code
Créer une nouvelle esquisse et l`enregistrer comme « knightrider ». Voici le code:
const int diodes électroluminescentes[] = {1,2,3,4,5,6,7,8}- // broches Ledconst int totalLeds = 8-int temps = 50- // vitesse par défautvide installer() {// Initialiser toutes les sortiespour(int je = 0- je lt; = totalLeds- ++je) {pinMode(diodes électroluminescentes[je], SORTIE)-}}vide boucle() {pour(int je = 0- je lt; totalLeds - 1- ++je) {// balayage de gauche à droitetemps = analogRead(2)-digitalWrite(diodes électroluminescentes[je], HAUTE)-retard(temps)-digitalWrite(diodes électroluminescentes[je + 1], HAUTE)-retard(temps)-digitalWrite(diodes électroluminescentes[je], FAIBLE)-}pour(int je = totalLeds- je gt; 0- --je) {// droite balayage vers la gauchetemps = analogRead(2)-digitalWrite(diodes électroluminescentes[je], HAUTE)-retard(temps)-digitalWrite(diodes électroluminescentes[je - 1], HAUTE)-retard(temps)-digitalWrite(diodes électroluminescentes[je], FAIBLE)-}}
Brisons vers le bas. Chaque broche LED est stockée dans un tableau:
Video: Un cavalier saute un obstacle par-dessus les ramasseurs de barres
const int diodes électroluminescentes[] = {1,2,3,4,5,6,7,8}-
Un tableau est essentiellement une collection d`éléments liés. Ces éléments sont définis comme constants ( « const »), ce qui signifie qu`ils ne peuvent pas être modifiés par la suite. Vous ne devez pas utiliser une constante (le code fonctionnera parfaitement si vous supprimez « const »), bien qu`il soit recommandé.
Video: Building Games #5 Un cavalier, qui surgit hors de la nuit
Eléments d`un réseau sont accessibles à l`aide de crochets ( « [] ») et un nombre entier appelé un index. Les indices commencent à zéro, « diodes électroluminescentes [2] » retourneraient le troisième élément du tableau - broches 3. Les tableaux font le code plus rapide à écrire et plus facile à lire, ils font l`ordinateur faire le travail dur!
Une boucle est utilisée pour configurer chaque broche comme un signal de sortie:
pour(int je = 0- je lt; = totalLeds- ++je) {pinMode(diodes électroluminescentes[je], SORTIE)-}
Ce code est à l`intérieur de la fonction « setup () », car il n`a besoin que d`exécuter une fois au début du programme. Pour 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 nombre entier « i » est déclarée, et le code seulement à l`intérieur de la boucle peut accéder à cette variable (ce qui est connu comme la « portée »). La valeur de i commence à zéro, et pour chaque itération de la boucle, i est augmentée d`une unité. Une fois que la valeur de i est inférieure ou égale à la « totalLeds » variable, la boucle « casse » (arrêt).
La valeur de i est utilisé pour accéder au tableau « leds ». Cette boucle accède à chaque élément dans le tableau et le configure en tant que sortie. Vous pouvez taper manuellement « pinMode (pin, SORTIE) » huit fois, mais pourquoi écrire huit lignes quand vous pouvez écrire trois?
Alors que certains langages de programmation peuvent vous dire combien d`éléments sont dans un tableau (généralement avec la syntaxe comme array.length), Arduino ne fait pas si simple (il implique un peu plus de maths). Comme le nombre d`éléments du tableau est déjà connu, ce n`est pas un problème.
A l`intérieur de la boucle principale (void loop ()) Sont deux autres pour les boucles. La première définit les voyants ON et OFF puis de 1 - 8. La deuxième boucle fixe la LED ON et OFF à partir de 8 - 1. Remarquez que la broche en cours est activé, et la broche en cours plus un est situé sur aussi bien. Cela garantit qu`il ya toujours deux LEDS sur en même temps, ce qui rend l`apparence du scanner plus réaliste.
Au début de chaque boucle, la valeur du pot est lue dans la variable « temps »:
temps = analogRead(2)-
Cela se fait deux fois, une fois à l`intérieur de chaque boucle. Cela doit être constamment vérifié et mis à jour. Si cela était en dehors des boucles, il fonctionne toujours, mais il y aurait un petit retard - une fois une boucle ne briguera a terminé son exécution. Les pots sont analogiques, donc pourquoi « analogRead (pin) » est utilisé. Cela renvoie des valeurs entre zéro (minimum) et 1023 (maximum). Arduino est capable de convertir ces valeurs à quelque chose de plus utile, mais ils sont parfaits pour ce cas d`utilisation.
Le délai entre l`évolution des diodes électroluminescentes (ou la vitesse du scanner) est réglé en millisecondes (1/1000 seconde), de sorte que le temps maximum est un peu plus de 1 seconde.
Scanner avancée
Video: Book 01 - The Hunchback of Notre Dame Audiobook by Victor Hugo (Chs 1-6)
Maintenant que vous connaissez les bases, regardons quelque chose de plus complexe. Ce scanner s`allume les LED par paires à partir de l`extérieur et de travail. Ce sera ensuite inverser cela et aller de l`intérieur vers l`extérieur paires. Voici le code:
const int diodes électroluminescentes[] = {1,2,3,4,5,6,7,8}- // broches Ledconst int totalLeds = 8-const int halfLeds = 4-int temps = 50- // vitesse par défautvide installer() {// Initialiser toutes les sortiespour(int je = 0- je lt; = totalLeds- ++je) {pinMode(diodes électroluminescentes[je], SORTIE)-}}vide boucle() {pour(int je = 0- je lt; (halfLeds - 1)- ++je) {// Numérisation des paires extérieures danstemps = analogRead(2)-digitalWrite(diodes électroluminescentes[je], HAUTE)-digitalWrite(diodes électroluminescentes[(totalLeds - je) - 1], HAUTE)-retard(temps)-digitalWrite(diodes électroluminescentes[je], FAIBLE)-digitalWrite(diodes électroluminescentes[(totalLeds - je) - 1], FAIBLE)-retard(temps)-}pour(int je = (halfLeds - 1)- je gt; 0- --je) {// Analyser les paires surtemps = analogRead(2)-digitalWrite(diodes électroluminescentes[je], HAUTE)-digitalWrite(diodes électroluminescentes[(totalLeds - je) - 1], HAUTE)-retard(temps)-digitalWrite(diodes électroluminescentes[je], FAIBLE)-digitalWrite(diodes électroluminescentes[(totalLeds - je) - 1], FAIBLE)-retard(temps)-}}
Ce code est un peu plus complexe. Remarquez comment les deux boucles vont de zéro à « halfLeds - 1 » (3). Cela rend un meilleur scanner. Si les deux boucles était le 4 - 0 et 0 - 4, alors les mêmes LED clignoteraient deux fois dans la même séquence - ce ne serait pas l`air très bien.
Video: Book 06 - The Hunchback of Notre Dame Audiobook by Victor Hugo (Chs 1-5)
Vous devriez maintenant posséder un scanner à LED Knight Rider de travail! Il serait facile de modifier cette option pour utiliser des LED plus ou plus, ou mettre en œuvre votre propre modèle. Ce circuit est très facile au port à un Raspberry Pi (nouveau à Pi? Commencer ici) ou ESP8266.Raspberry Pi: Le Tutorial non officielRaspberry Pi: Le Tutorial non officielQue vous soyez propriétaire actuel Pi qui veut en savoir plus ou un propriétaire potentiel de cet appareil de format carte de crédit, ce n`est pas un guide que vous voulez manquer.Lire la suite
Êtes-vous construire une réplique KITT? J`aimerais voir toutes les choses Knight Rider dans les commentaires.