Table des matières:

Matrice d'affichage à LED 5x4 utilisant un tampon de base 2 (bs2) et Charlieplexing : 7 étapes
Matrice d'affichage à LED 5x4 utilisant un tampon de base 2 (bs2) et Charlieplexing : 7 étapes

Vidéo: Matrice d'affichage à LED 5x4 utilisant un tampon de base 2 (bs2) et Charlieplexing : 7 étapes

Vidéo: Matrice d'affichage à LED 5x4 utilisant un tampon de base 2 (bs2) et Charlieplexing : 7 étapes
Vidéo: Matrice à led 2024, Juillet
Anonim
Matrice d'affichage LED 5x4 utilisant un Basic Stamp 2 (bs2) et Charlieplexing
Matrice d'affichage LED 5x4 utilisant un Basic Stamp 2 (bs2) et Charlieplexing

Vous avez un Basic Stamp 2 et quelques LED supplémentaires ? Pourquoi ne pas jouer avec le concept de charlieplexing et créer une sortie en utilisant seulement 5 broches.

Pour cette instructable, j'utiliserai le BS2e mais tout membre de la famille BS2 devrait fonctionner.

Étape 1: Charlieplexing: quoi, pourquoi et comment

Voyons d'abord pourquoi. Pourquoi utiliser charlieplexing avec un Basic Stamp 2 ? ---Preuve de concept: découvrez comment fonctionne le charlieplexing et apprenez quelque chose sur le BS2. Cela peut m'être utile plus tard en utilisant des puces à 8 broches plus rapides (seulement 5 d'entre elles seront des entrées/sorties).---Raison utile: Fondamentalement, il n'y en a pas. Le BS2 est beaucoup trop lent pour s'afficher sans scintillement perceptible. J'ai appris le charlieplexing sur www.instructables.com et vous pouvez aussi: LED Charlieplexing - La théorieComment piloter beaucoup de LED à partir de quelques broches de microcontrôleur. Aussi sur wikipedia: CharlieplexingComment puis-je piloter 20 LED avec 5 broches d'E/S ? --- Veuillez lire les trois liens sous "Qu'est-ce que charlieplexing ?". Cela l'explique mieux que je ne pourrais jamais. Le Charlieplexing est différent du multiplexage traditionnel qui nécessite une broche d'E/S pour chaque ligne et chaque colonne (ce serait un total de 9 broches d'E/S pour un affichage 5/4).

Étape 2: Matériel et schéma

Matériel et schéma
Matériel et schéma

Liste des matériaux:1x - Basic Stamp 220x - diodes électroluminescentes (LED) du même type (couleur et chute de tension)5x - résistances (voir ci-dessous concernant la valeur de la résistance)Auxiliaire/Optionnel:Méthode de programmation de votre BS2Bouton poussoir momentané comme interrupteur de réinitialisation6v -9vAlimentation en fonction de votre version du BS2 (lisez votre manuel)Le schéma:Ce schéma est mis en place avec la disposition mécanique à l'esprit. Vous verrez la grille de leds mise en place à gauche, c'est l'orientation pour laquelle le code BS2 a été écrit. Notez que chaque paire de LED a l'anode connectée à la cathode de l'autre. Ils sont ensuite connectés à l'une des cinq broches d'E/S. Valeurs de résistance: vous devez calculer vos propres valeurs de résistance. Consultez la fiche technique de vos LED ou utilisez le réglage LED de votre multimètre numérique pour trouver la chute de tension de vos LED. Faisons quelques calculs: Tension d'alimentation - Chute de tension / Courant souhaité = Valeur de la résistance Le BS2 fournit une puissance régulée de 5 V et peut générer 20 mA. de courant. Mes LED ont une chute de 1,6 V et fonctionnent à 20 mA, 5 V - 1,6 V / 0,02 ampères = 155 ohms. J'ai utilisé 220 ohms parce que ma carte de développement a cette valeur de résistance intégrée pour chaque broche d'E/S. REMARQUE: je crois que puisqu'il y a une résistance sur chaque broche, cela double effectivement la résistance sur chaque led puisqu'une broche est V+ et l'autre est Gnd. Si tel est le cas, vous devez réduire les valeurs de résistance de moitié. L'effet négatif d'une valeur de résistance trop élevée est un gradateur LED. Quelqu'un peut-il vérifier cela et me laisser un MP ou un commentaire afin que je puisse mettre à jour ces informations ? Programmation: j'ai utilisé une carte de développement dotée d'un connecteur DB9 pour programmer la puce directement sur la carte. J'utilise également cette puce sur ma planche à pain sans soudure et j'ai inclus un en-tête de programmation série en circuit (ICSP). L'en-tête est à 5 broches, les broches 2 à 5 se connectent aux broches 2 à 5 sur un câble série DB9 (la broche 1 n'est pas utilisée). Veuillez noter que pour utiliser cet en-tête ICSP, les broches 6 et 7 du câble DB9 doivent être connectées l'une à l'autre. Réinitialisation: Un bouton de réinitialisation momentané est facultatif. Cela tire juste la broche 22 à la terre lorsqu'elle est poussée.

Étape 3: la planche à pain

Planche à pain
Planche à pain
Planche à pain
Planche à pain

Il est maintenant temps de construire la matrice sur une planche à pain. J'ai utilisé un bornier pour connecter une jambe de chaque paire de led et un petit cavalier pour connecter les autres jambes. Ceci est détaillé dans la photo en gros plan et est expliqué en détail ici:1. Orientez votre maquette pour qu'elle corresponde à l'image plus grande2. Placez la LED 1 avec l'anode (+) vers vous et la cathode (-) loin de vous.3. Placez la LED 2 dans le même sens que l'anode (+) dans le bornier de connexion de la cathode de la LED 1.4. Utilisez un petit cavalier pour connecter l'anode de la LED 1 à la cathode de la LED 2.5. Répétez jusqu'à ce que chaque paire de LED ait été ajoutée à la carte. J'utilise ce qui serait normalement les bandes de bus d'alimentation de la carte d'essai comme bandes de bus pour les broches d'E/S BS2. Comme il n'y a que 4 barrettes de bus, j'utilise une barrette à bornes pour P4 (la cinquième connexion E/S). Cela peut être vu sur l'image plus grande ci-dessous.6. Connectez le bornier de la cathode LED 1 à la barrette de bus P0. Répétez l'opération pour chaque LED impaire en substituant le P* approprié pour chaque paire (voir le schéma).7. Connectez le bornier de la cathode LED 2 à la barrette de bus P1. Répétez l'opération pour chaque LED impaire en substituant le P* approprié pour chaque paire (voir le schéma).8. Connectez chaque barrette de bus à la broche d'E/S appropriée sur le BS2 (P0-P4).9. Vérifiez toutes les connexions pour vous assurer qu'elles correspondent au schéma.10. Célébrez. REMARQUE: Dans le gros plan, vous verrez qu'il ne semble pas que j'ai suivi l'étape 7 car la connexion à la deuxième broche d'E/S se trouve sur l'anode des LED impaires. N'oubliez pas que la cathode des LED paires est connectée à l'anode des LED impaires, de sorte que la connexion est la même dans les deux sens. Si cette note vous embrouille, ignorez-la.

Étape 4: les bases de la programmation

Pour que Charlieplexing fonctionne, vous n'allumez qu'une seule led à la fois. Pour que cela fonctionne avec notre BS2, nous avons besoin de deux étapes de base: 1. Définissez les modes de sortie des broches à l'aide de la commande OUTS.2. Dites au BS2 quelles broches utiliser comme sorties à l'aide de la commande DIRS. juste essayer de faire clignoter la LED 1. Si vous regardez le schéma, vous pouvez voir que P0 est connecté à la cathode (-) de la LED 1 et P1 est connecté à l'anode de cette même LED. Cela signifie que nous voulons conduire P0 bas et P1 haut. Cela peut être fait comme ceci: "OUTS = %11110" qui entraîne P4-P1 haut et P0 bas. (% indique qu'un nombre binaire doit suivre. Le chiffre binaire le plus bas est toujours à droite. 0=BAS, 1=HIGH) Le BS2 stocke ces informations mais n'agira pas dessus jusqu'à ce que nous déclarions quelles broches sont des sorties. Cette étape est essentielle car seules deux broches doivent être sorties en même temps. Le reste doit être des entrées, ce qui définit ces broches en mode haute impédance afin qu'elles ne reçoivent aucun courant. Nous devons piloter P0 et P1, nous allons donc les définir sur les sorties et le reste sur les entrées comme suit: "DIRS = %00011". (% indique qu'un nombre binaire doit suivre. Le chiffre binaire le plus bas est toujours à droite. 0 =INPUT, 1=OUTPUT) Mettons cela ensemble dans un code utile:' {$STAMP BS2e}' {$PBASIC 2.5}DO OUTS = %11110 'Drive P0 low et P1-P4 high DIRS = %00011 'Set P0- P1 comme sorties et P2-P4 comme entrées PAUSE 250 'Pause pour que la LED reste allumée DIRS = 0 'Régler toutes les broches sur entrée. Cela éteindra la LED PAUSE 250' Pause pour que la LED reste éteinteLOOP

Étape 5: Le cycle de développement

Maintenant que nous avons vu un temps de travail d'une broche pour s'assurer qu'ils fonctionnent tous.20led_Zig-Zag.bseCe code ci-joint devrait allumer chacune des 20 LED en zigzag. Vous remarquerez qu'une fois que chaque broche est allumée, j'utilise "DIRS = 0" pour reconvertir toutes les broches en entrées. Si vous modifiez les sorties sans désactiver les broches de sortie, vous pouvez obtenir un "fantôme" où une LED qui ne devrait pas être allumée peut clignoter entre les cycles. Si vous modifiez la variable W1 au début de ce code en "W1 = 1" là-bas n'y aura qu'une pause de 1 milliseconde entre chaque clignotement de LED. Cela provoquera un effet de persistance de la vision (POV) qui donne l'impression que toutes les LED sont allumées. Cela a pour effet de rendre les LED plus sombres mais c'est l'essence de la façon dont nous afficherons les caractères sur cette matrice.20led_Interpreter_Proto.bseJ'ai décidé à ce stade que je devais développer un type de code d'interprétation pour transformer les combinaisons folles nécessaires LED dans un modèle utilisable. Ce fichier est mon premier essai. Vous verrez qu'en bas du fichier les caractères sont stockés sur quatre lignes de binaire à 5 chiffres. Chaque ligne est lue, analysée et un sous-programme est appelé à chaque fois qu'une LED doit être allumée. Ce code fonctionne en parcourant les chiffres 1-0. Si vous essayez de l'exécuter, notez qu'il est en proie à un taux de rafraîchissement très lent, ce qui fait que les caractères clignotent presque trop lentement pour être reconnus. Ce code est mauvais pour plusieurs raisons. Tout d'abord, cinq chiffres binaires occupent autant de place dans l'EEPROM que 8 chiffres binaires, car toutes les informations sont stockées par groupes de quatre bits. Deuxièmement, le SELECT CASE utilisé pour décider quelle broche doit être allumée nécessite 20 cas. Le BS2 est limité à 16 cas par opération SELECT. Cela signifie que j'ai dû contourner cette limitation avec une instruction IF-THEN-ELSE. Il doit y avoir un meilleur moyen. Après quelques heures de grattage de tête, je l'ai découvert.

Étape 6: Un meilleur interprète

Chaque rangée de notre matrice est composée de 4 LED, chacune pouvant être allumée ou éteinte. Le BS2 stocke les informations dans son EEPROM par groupes de quatre bits. Cette corrélation devrait nous faciliter les choses. En plus de ce fait, quatre bits correspondent aux nombres décimaux 0-15 pour un total de 16 possibilités. Cela rend ou SELECT CASE beaucoup plus facile. Voici le chiffre 7 tel qu'il est stocké dans l'EEPROM: 7 %1111, %1001, %0010, %0100, %0100, chaque ligne a un équivalent décimal à 0-15 donc nous lisons un ramenez-le à partir de la mémoire et alimentez-le directement dans la fonction SELECT CASE. Cela signifie que la matrice binaire lisible par l'homme utilisée pour créer chaque caractère (1 = led allumé, 0 = led éteint) est la clé de l'interpréteur. Afin d'utiliser le même SELECT CASE pour chacune des 5 lignes, j'ai utilisé un autre cas de sélection pour définir les DIRS et OUTS comme variables. J'ai d'abord lu dans chacune des cinq lignes du caractère les variables ROW1-ROW5. Le programme principal appelle alors le sous-programme pour afficher le caractère. Ce sous-programme prend la première ligne et affecte les quatre combinaisons OUTS possibles à la variable outp1-outp4 et les deux combinaisons possibles DIRS à direc1 & direc2. Les LED clignotent, le compteur de lignes est incrémenté et le même processus est exécuté pour chacune des quatre autres lignes. C'est beaucoup plus rapide que le premier programme interpréteur. Cela étant dit, il y a toujours un scintillement perceptible. Jetez un œil à la vidéo, la caméra rend le scintillement bien pire, mais vous voyez l'idée. Porter ce concept sur une puce beaucoup plus rapide, comme une puce picMicro ou une puce AVR permettrait d'afficher ces caractères sans scintillement notable.

Étape 7: Où aller à partir d'ici

Je n'ai pas de broyeur cnc ou de fournitures de gravure pour fabriquer des cartes de circuits imprimés, je ne vais donc pas câbler ce projet. Si vous avez un moulin et êtes intéressé à collaborer pour aller de l'avant, envoyez-moi un message. Je serais heureux de payer les matériaux et l'expédition encore plus heureux de montrer quelque chose d'un produit fini pour ce projet.

Autres possibilités: 1. Portez-le sur une autre puce. Cette conception matricielle peut être utilisée avec n'importe quelle puce qui dispose de 5 broches d'E/S disponibles qui sont capables de trois états (broches qui peuvent être hautes, basses ou d'entrée (haute impédance)). 2. En utilisant une puce plus rapide (peut-être AVR ou picMicro), vous pouvez augmenter l'échelle. Avec une puce à 20 broches, vous pouvez utiliser 14 broches pour charlieplex un écran 8x22 et utiliser les broches restantes pour recevoir des commandes série d'un ordinateur ou d'un autre contrôleur. Utilisez trois autres puces à 20 broches et vous pouvez avoir un affichage défilant de 8x88 pour un total de 11 caractères à la fois (en fonction de la largeur de chaque caractère bien sûr). Bonne chance, amuse toi bien!

Conseillé: