Table des matières:

Le registre à décalage 74HC164 et votre Arduino : 9 étapes
Le registre à décalage 74HC164 et votre Arduino : 9 étapes

Vidéo: Le registre à décalage 74HC164 et votre Arduino : 9 étapes

Vidéo: Le registre à décalage 74HC164 et votre Arduino : 9 étapes
Vidéo: TRONIK AVENTUR 339 - REGISTRE A DECALAGE avec BASCULES D - CD4013 2024, Novembre
Anonim
Le registre à décalage 74HC164 et votre Arduino
Le registre à décalage 74HC164 et votre Arduino
Le registre à décalage 74HC164 et votre Arduino
Le registre à décalage 74HC164 et votre Arduino

Les registres à décalage sont une partie très importante de la logique numérique, ils agissent comme une colle entre les mondes parallèle et sériel. Ils réduisent le nombre de fils, l'utilisation des broches et aident même à décharger votre processeur en pouvant stocker leurs données. Ils sont disponibles en différentes tailles, avec différents modèles pour différentes utilisations et différentes fonctionnalités. Celui dont je vais parler aujourd'hui est le 74HC164 8 bits, sortie série en parallèle, non verrouillé, registre à décalage. Pourquoi ? Eh bien, pour un, c'est l'un des registres à décalage les plus basiques, ce qui facilite l'apprentissage, mais il se trouve que c'était le seul que j'avais (lol!) Cette instructable explique comment fonctionne cette puce, comment la câbler, et interfacez-le avec un arduino comprenant des exemples de croquis et des circuits led. J'espère que vous apprécierez tous !

Étape 1: Alors, que sont les registres à décalage ?

Alors, que sont les registres à décalage ?
Alors, que sont les registres à décalage ?

Comme mentionné précédemment, ils sont disponibles dans toutes les saveurs différentes, et j'ai également mentionné que j'utilise un 74HC164 8 bits, sortie série en parallèle, non verrouillé, registre à décalage donc qu'est-ce que tout cela signifie ?!? Tout d'abord, le nom 74 -- signifie sa partie de la famille logique 74xx, et comme sa logique ne peut pas contrôler directement beaucoup de courant (16-20ma pour l'ensemble de la puce est commun), il ne fait passer que des signaux, mais cela ne signifie pas ce signal ne va pas à un transistor qui peut commuter une charge de courant plus élevée. HC signifie que c'est un appareil cmos à grande vitesse, vous pouvez lire à ce sujet sur le lien ci-dessous, mais ce que vous devez essentiellement savoir à ce sujet, c'est qu'il s'agit d'un faible dispositif d'alimentation et fonctionnera de 2 à 5 volts (donc si vous utilisez un arduino de 3,3 volts, vous êtes d'accord) De plus, il peut fonctionner correctement à des vitesses élevées, cette puce particulière a une vitesse typique de 78 mhz, mais vous pouvez aller aussi lentement ou aussi vite (jusqu'à ce qu'il commence à faire des bêtises) comme vous le souhaitezwww.kpsec.freeuk.com/components/74series.htm164 est le numéro de modèle de cette puce, il y en a un grand tableau sur wikipediaen.wikipedia.org/wiki/List_of_7400_series_integrated_circuits Ensuite, 8 bits Un registre à décalage est composé de circuits à bascule, une bascule est 1 bit de mémoire, celui-ci ha s 8 (ou 1 octet de mémoire). Puisqu'il s'agit de mémoire, si vous n'avez pas besoin de mettre à jour le registre, vous pouvez simplement arrêter de lui "parler" et il restera dans l'état dans lequel vous l'avez laissé, jusqu'à ce que vous lui "parliez" à nouveau ou que vous réinitialisiez l'alimentation. les autres registres à décalage de la série logique 7400 peuvent aller jusqu'à 16 bits en série en sortie parallèle. Cela signifie que votre arduino lui envoie des données en série (impulsions on off les unes après les autres) et le registre à décalage place chaque bit sur la broche de sortie correcte. Ce modèle ne nécessite que 2 fils pour être contrôlé, vous pouvez donc utiliser 2 broches numériques sur l'arduino et diviser ces 2 sorties en 8 sorties numériques supplémentaires. Certains autres modèles sont parallèles en sortie série, ils font la même chose mais en tant qu'entrées de l'arduino (par exemple une manette de jeu NES) non verrouillé Cela peut être une chute de cette puce si vous en avez besoin. Lorsque les données entrent dans un registre à décalage via série, elles apparaissent sur la première broche de sortie, lorsqu'une impulsion d'horloge entre, le premier bit se déplace sur 1 place, créant un effet de défilement sur les sorties, par exemple 0000001 apparaîtrait sur les sorties comme 101001000100001000001000000100000001Si vous parlez à d'autres périphériques logiques qui partagent la même horloge et ne s'y attendent pas, cela pourrait causer des problèmes. Les registres à décalage verrouillés ont un ensemble supplémentaire de mémoire, donc une fois que les données sont entrées dans le registre, vous pouvez basculer un commutateur et afficher les sorties, mais cela ajoute un autre fil, un logiciel et des éléments à suivre. Dans le cas de cette instructable nous contrôlons les affichages LED, l'effet de défilement se produit si vite que vous ne pouvez pas le voir (sauf lorsque vous allumez la puce pour la première fois), et une fois que l'octet est dans le registre à décalage, il n'y a plus de défilement Nous contrôlerons le type de bargraph, 7 segments, et une matrice de points 16LED 4x4 avec cette puce et ce logiciel sur l'arduino en utilisant seulement 2 broches numériques (+ alimentation et masse)

Étape 2: Câblage et fonctionnement de base

Câblage et fonctionnement de base
Câblage et fonctionnement de base
Câblage et fonctionnement de base
Câblage et fonctionnement de base

Câblage Le 74HC164 est une puce à 14 broches, il a 4 broches d'entrée, 8 broches de sortie, l'alimentation et la terre, alors commençons par le haut. Les broches 1 et 2 sont toutes deux des entrées série, elles sont configurées comme une porte ET logique, ce qui signifie que ils doivent tous les deux être au niveau logique haut (c'est-à-dire 5 volts) pour que le bit soit considéré comme un 1, un état bas (0 volt) sur l'un ou l'autre sera lu comme un zéro. Nous n'avons pas vraiment besoin de cela et c'est plus facile à gérer dans le logiciel, alors choisissez-en un et liez-le à V + pour qu'il soit toujours élevé. J'ai choisi d'utiliser un cavalier de la broche 1 à la broche 14 (V +) car vous pouvez simplement placer un cavalier de planche à pain sur la puce. La seule entrée série restante (broche 2 dans mes schémas) ira à la broche numérique 2 de l'arduino. Les broches 3, 4, 5 et 6 du 74HC164 sont les 4 premiers octets de la sortie La broche 7 se connecte à la terreSaut vers la droite, broche 8 est la broche d'horloge, c'est ainsi que le registre à décalage sait que le prochain bit série est prêt à être lu, il doit être connecté à la broche numérique 3 sur l'arduino. La broche 9 doit effacer tout le registre à la fois, s'il devient bas, vous avez la possibilité de l'utiliser, mais rien dans cet impénétrable ne le fait, alors attachez-le aux broches V + 10, 11, 12 et 13 sont les 4 derniers octets de la sortie La broche 14 est la puissance des puces Opération Vous devez d'abord définir l'entrée série du registre (broche numérique 2 sur l'arduino) haut ou bas, vous devez ensuite basculer la broche d'horloge (broche numérique 3) de bas en haut, le registre à décalage lira les données sur l'entrée série et décalera les broches de sortie de 1, répétez 8 fois et vous avez défini les 8 sorties. Cela peut être fait à la main avec des boucles for et des écritures numériques dans l'IDE arduino, mais depuis t Il s'agit d'une communication au niveau matériel (SPI) très courante, ils ont une seule fonction qui le fait pour vous. shiftOut(dataPin, clockPin, bitOrder, value) Dites-lui simplement où les broches de données et d'horloge sont connectées à l'arduino, de quelle manière envoyer les données et quoi envoyer, et c'est pris en charge pour vous (pratique)

Étape 3: Projets

Projets
Projets

Bon, assez de cours magistral et de théorie, permet de faire des trucs amusants avec cette puce ! La troisième, la matrice LED 4x4, nécessite plus de temps et de réflexion à construire, en raison du câblage LED. compatible (5v) 1 * 330 ohms résistance 1/4 watt 8 * LED rouges à sortie normale 12 * fils de cavalier Projet 2: contrôleur d'affichage 7 segments « 2 fils » 1 * 74HC164 Shift register1 * planche à pain sans soudure1 * arduino, ou compatible arduino (5v) 1 * résistance 330 ohms 1/4 watt 1 * affichage à sept segments à cathode commune9 * fils de raccordement Projet 3: affichage matriciel LED 4x4 « 2 fils » 1 * 74HC164 Registre à décalage1 * arduino, ou compatible arduino (5v) 4 * 150 ohm 1 Résistance 1/4 watt8 * 1Kohm Résistance 1/8 watt (ou plus)8 * Transistor NpN (2n3904 ou mieux)16 * LED rouge à sortie normale un moyen de la construire et une alimentation régulée de 5 volts pouvant gérer 160 + ma (vous pouvez allumer toutes les LED à la fois comme un feu stop)

Étape 4: Projet 1 [pt 1]: Matériel de contrôleur d'affichage à LED à barres '2 fils'

Projet 1[pt 1]: Matériel de contrôleur d'affichage à LED à barregraphe « 2 fils »
Projet 1[pt 1]: Matériel de contrôleur d'affichage à LED à barregraphe « 2 fils »
Projet 1[pt 1]: Matériel de contrôleur d'affichage à LED à barres '2 fils'
Projet 1[pt 1]: Matériel de contrôleur d'affichage à LED à barres '2 fils'

Branchez l'arduino et le registre à décalage selon le schéma, j'ai déjà un affichage graphique à barres à 10 segments prêt à l'emploi et c'est ce que vous verrez sur l'image, mais vous pouvez faire la même chose avec des led individuelles sur la deuxième page J'ai déclaré qu'il ne s'agissait pas de périphériques pilotes, qu'il s'agissait de périphériques logiques, avec de minuscules quantités de courant capables de les traverser. Pour faire fonctionner 8 LED, tout en gardant le circuit simple, et ne cuisant pas le registre à décalage, il faut limiter un peu le courant. Les LED sont câblées en parallèle et partagent une masse commune (cathode commune), avant d'entrer dans le courant fournir la terre dont ils ont besoin pour traverser une résistance de 330 ohms, limitant la quantité totale de courant que toutes les LED pourraient éventuellement utiliser à 10ma (à 5 volts) Cela laisse les LED dans un état maladif mais elles s'allument et servent ainsi à cet exemple, afin de piloter les LED à leur bon courant, vous devrez insérer un transistor où le registre à décalage peut activer / désactiver une source de courant plus élevée (voir projet 3) La broche de données du registre à décalage (broche 2) a besoin pour se connecter à la broche numérique arduino n ° 2 La broche d'horloge du registre à décalage (broche 8) doit se connecter à la broche numérique arduino n ° 3

Étape 5: Projet 1[pt 2]: Logiciel de contrôleur d'affichage à LED à barres '2 fils'

Projet 1[pt 2]: Logiciel de contrôleur d'affichage à LED à bargraphe « 2 fils »
Projet 1[pt 2]: Logiciel de contrôleur d'affichage à LED à bargraphe « 2 fils »
Projet 1[pt 2]: Logiciel de contrôleur d'affichage à LED à bargraphe « 2 fils »
Projet 1[pt 2]: Logiciel de contrôleur d'affichage à LED à bargraphe « 2 fils »

Exemple 1: Ouvrez le fichier " _164_bas_ex.pde" À l'intérieur de l'IDE Arduino, c'est un simple croquis qui vous permet simplement de définir les LED allumées ou éteintes dans l'affichage du graphique à barres. Les 2 premières lignes définissent les numéros de broche que nous utiliserons pour les données et l'horloge, je utilisez #define over const integer, je trouve qu'il est plus facile à retenir, et il n'y a aucun avantage à l'un ou l'autre une fois compilé #define data 2#define clock 3 ensuite est la fonction de configuration void, elle ne s'exécute qu'une seule fois, donc l'arduino tourne allumé, définit le registre à décalage et n'a rien d'autre à faire. À l'intérieur de la fonction de configuration void, nous définissons les broches d'horloge et de données comme broches de SORTIE, puis en utilisant la fonction shiftOut, nous envoyons les données au registre à décalage void setup(){ pinMode(clock, OUTPUT); // fait de la broche d'horloge une sortie pinMode(data, OUTPUT); // fait de la broche de données une sortie shiftOut(data, clock, LSBFIRST, B10101010); // envoie cette valeur binaire au registre à décalage} Dans la fonction shiftOut, vous pouvez voir que ses arguments data sont la broche de données, l'horloge est la broche d'horloge LSBFIRST fait référence à l'ordre dans lequel elle se trouve, lors de l'écriture en notation binaire (Bxxxxxxxx) le 7 l'élément après le B est le bit le moins significatif d'abord, il est introduit en premier afin qu'il se termine sur la dernière sortie une fois que tous les 8 bits sont introduits, essayez de jouer avec différentes valeurs pour activer ou désactiver différents motifs et enfin une boucle vide vide (car vous en avez besoin même si vous ne l'utilisez pas) boucle vide(){} // boucle vide pour l'instant Exemple 2: les 8 premières lignes sont les mêmes que les 8 premières lignes du premier exemple, en fait elles ne changeront pour aucun des autres projets, donc #define data 2#define clock 3void setup(){ pinMode(clock, OUTPUT); // fait de la broche d'horloge une sortie pinMode(data, OUTPUT); // fait de la broche de données une sortie Mais maintenant, dans la configuration void, il y a une boucle de 8 comptes, elle prend un octet vide et se déplace d'un bit à la fois en partant du bit le plus à gauche et en se déplaçant vers la droite. C'est à l'envers du premier exemple où nous sommes partis du bit le plus à droite et avons travaillé à gauche, mais en utilisant MSBFIRST, la fonction de décalage envoie les données de la bonne manière. Nous ajoutons également un délai dans la boucle for afin qu'elle ralentisse suffisamment pour être visible. for(int i = 0; i < 8; ++i) //pour 0 - 7 do { shiftOut(data, clock, MSBFIRST, 1 << i); // décalage binaire d'une valeur logique élevée (1) de i delay(100); // retardez 100ms ou vous ne pourriez pas le voir } }boucle vide(){} // boucle vide pour l'instant téléchargez le script et vous devriez maintenant voir le bargraph s'allumer chaque lumière une à la fois

Étape 6: Projet 2: Contrôleur d'affichage à 7 segments « 2 fils »

Projet 2: Contrôleur d'affichage à 7 segments « 2 fils »
Projet 2: Contrôleur d'affichage à 7 segments « 2 fils »
Projet 2: Contrôleur d'affichage à 7 segments « 2 fils »
Projet 2: Contrôleur d'affichage à 7 segments « 2 fils »

Regardez le brochage de votre écran à 7 segments (je n'en avais qu'un double mais en utilisant juste la moitié) et utilisez le dessin ci-dessous pour connecter chaque segment au bit correct sur le registre à décalage bit 1 = broche 3 bits 2 = broche 4 bits 3 = broche 5 bits 4 = broche 6 bits 5 = broche 10 bits 6 = broche 11 bits 7 = broche 12 bits 8 = broche 13 (si vous souhaitez utiliser la virgule décimale) dans l'arduino IDED'abord, vous voyez où nous définissons les broches de données et d'horloge #define data 2#define clock 3 Ensuite, nous définissons tous les modèles de caractères en binaire, c'est assez facile, regardez le dessin ci-dessous, si vous avez besoin du segment du milieu tapez un, ensuite avez-vous besoin du segment supérieur, si c'est le cas, tapez-en un autre, continuez jusqu'à ce que vous couvriez les 8 segments, notez que mon bit le plus à droite (bit 8) est toujours 0, c'est parce que je n'allume jamais la décimale point. octet zéro = B01111110;octet un = B00000110;octet deux = B11011010;octet trois = B11010110;octet quatre = B10100110;octet cinq = B11110100;octet six = B11111100;octet sept = B01000110;octet huit = B11111110;octet neuf = B11110110; Ensuite, dans la configuration void, nous définissons nos broches de données et d'horloge sur les sorties void setup(){ pinMode(clock, OUTPUT); // fait de la broche d'horloge une sortie pinMode(data, OUTPUT); // faire de la broche de données une sortie3} puis dans la boucle void, nous utilisons shiftOut pour afficher chaque motif (nombre) attendez 1/2 seconde et affichez le suivant, 0 à 9, car il est effectué dans la fonction de boucle void, il comptera 0-9 et répéter indéfiniment. void loop(){ shiftOut(données, horloge, LSBFIRST, zéro); retard (500); shiftOut(données, horloge, LSBFIRST, un); retard (500); shiftOut(données, horloge, LSBFIRST, deux); retard (500); shiftOut(données, horloge, LSBFIRST, trois); retard (500); shiftOut(données, horloge, LSBFIRST, quatre); retard (500); shiftOut(données, horloge, LSBFIRST, cinq); retard (500); shiftOut(données, horloge, LSBFIRST, six); retard (500); shiftOut(données, horloge, LSBFIRST, sept); retard (500); shiftOut(données, horloge, LSBFIRST, huit); retard (500); shiftOut(données, horloge, LSBFIRST, neuf); retard (500);}

Étape 7: Projet 3[pt 1]: Affichage matriciel à LED 4x4 « 2 fils »

Projet 3[pt 1]: Affichage matriciel à LED 4x4 « 2 fils »
Projet 3[pt 1]: Affichage matriciel à LED 4x4 « 2 fils »
Projet 3[pt 1]: Affichage matriciel à LED 4x4 « 2 fils »
Projet 3[pt 1]: Affichage matriciel à LED 4x4 « 2 fils »

Le projet de matrice LED 4x4 est un peu plus complexe, mais il est presque tout en construction, j'ai choisi de faire le mien soudé sur perfboard, mais il devrait être possible de répliquer sur un breadboard, juste beaucoup plus espacé. Les circuits aussi diffère en ce que le registre à décalage ne pilote pas directement les led, à la place les sorties du registre à décalage sont envoyées via une résistance de 1Kohm à la base d'un transistor NpN, lorsque la sortie du bit est élevée, il laisse passer suffisamment de courant et de tension dans le transistor pour commuter la connexion entre le collecteur et l'émetteur, les collecteurs sont liés à un "robuste" régulé 5 volts. Les émetteurs des transistors sont connectés à des résistances de 150 ohms et les résistances sont liées aux anodes de 4 led d'affilée et limite la ligne à 20ma, bien que lors de l'affichage d'images sur l'écran, une seule LED est allumée à la fois, et donc presque à pleine luminosité (presque parce qu'elles s'allument et s'éteignent très rapidement pour constituer l'ensemble de l'image) Il y a 4 rangées et 4 colonnes, chacune rangée reçoit une résistance et un transistor, sur chaque colonne les cathodes de la LED sont attachées ensemble, courues dans le collecteur d'un transistor, dont la base est également contrôlée par le registre à décalage, et enfin à la terre. Grande version du schéma www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

Étape 8: Projet 3[pt 2]: Affichage matriciel à LED 4x4 '2 fils'

Projet 3[pt 2]: Affichage matriciel à LED 4x4 '2 fils'
Projet 3[pt 2]: Affichage matriciel à LED 4x4 '2 fils'
Projet 3[pt 2]: Affichage matriciel à LED 4x4 '2 fils'
Projet 3[pt 2]: Affichage matriciel à LED 4x4 '2 fils'
Projet 3[pt 2]: Affichage matriciel à LED 4x4 '2 fils'
Projet 3[pt 2]: Affichage matriciel à LED 4x4 '2 fils'

Le registre à décalage contrôle à la fois l'anode et les cathodes des LED dans un format YX, regardez le bit suivant 1 = colonne 1 (le plus à droite) bit 2 = colonne 2 bits 3 = colonne 3 bits 4 = colonne 4 bits 5 = rangée 1 (le plus haut) bit 6 = rangée 2 bits 7 = rangée 3 bits 8 = rangée 4 Pour créer une image, dessinez un carré 4x4 sur du papier quadrillé et indiquez ceux que vous souhaitez afficher, puis créez un tableau YX. Ci-dessous, vous verrez un mappage pour une comparaison, ainsi que le mieux possible sur des "pixels" 4x4. Pour chaque section remplie, j'écris dans quelle colonne (Y) elle se trouve, puis dans quelle ligne elle se trouve (X) Maintenant, ouvrez le fichier _4x4.pde dans l'IDE arduino vous verrez nos 2 anciens amis #define data 2#define clock 3 puis un tableau d'entiers int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Si vous regardez ce n'est qu'une liste de mes coordonnées YX écrites, ce serait très pénible de convertir ces valeurs à la main, et nous avons un ordinateur… laissez-le faire ! nos broches d'horloge et de données SORTIES void setup(){ pinMode(clock, OUTPUT); // fait de la broche d'horloge une sortie pinMode(data, OUTPUT); // faire de la broche de données une sortie3} Et une boucle void déroutante, pour commencer, nous devons déclarer certaines variables locales void loop(){ int Y; entier X; octet sortant; Ensuite, une boucle for, cette boucle doit être aussi longue que le nombre d'entrées dans le tableau img, pour cette image, je n'ai utilisé que 6 pixels, ce qui fait 12 coordonnées YX. Je le fais sauter tous les autres nombres en utilisant i +=2, car nous lisons 2 coordonnées par boucle for(int i = 0; i < 12; i += 2) // nombre de points dans le tableau img, ce cas 12 { Maintenant, nous lisons l'entrée Y à dans le tableau et soustrayons un de sa valeur, car les octets ne commencent pas à un, ils commencent à zéro, mais nous avons compté à partir de 1 // obtenons la première paire de cordons YX Y = (img - 1); // soustrait un puisque le nombre de bits commence à 0 Ensuite, nous lisons l'entrée X à [i + 1] dans le tableau, et soustrayons un de sa valeur, pour la même raison X = (img[i+1] - 1); Une fois que nous avons les valeurs YX du pixel, nous effectuons des calculs au niveau du bit ou des mathématiques et nous nous déplaçons vers la gauche. Nous devons d'abord lire la valeur X, et quelle que soit sa valeur, la décaler de plusieurs endroits + 4 à gauche, donc si X est 4 et ajoutez 4 c'est le bit 8 (MSB), en regardant à nouveau le graphique …bit 1 = colonne 1 (le plus à droite)bit 2 = colonne 2bit 3 = colonne 3bit 4 = colonne 4bit 5 = rangée 1 (le plus haut)bit 6 = rangée 2bit 7 = ligne 3 bits 8 = ligne 4 bits 8 est la dernière ligne Ensuite, la valeur Y est également décalée vers la gauche, cette fois juste par elle-même, rien d'ajouté. Enfin, les deux sont regroupés en 1 octet au lieu de 2 demi-octets (grignotages), en utilisant au niveau du bit ou (le symbole |) prend deux octets et les additionne fondamentalement, supposons que X = 10000000Y = 0000001--------------------OU = 10000001ligne 4 colonne 1 sortie = 1 << (X + 4) | 1 << O; Et enfin shiftOut pour afficher l'image actuelle, et continuez jusqu'à ce que nous n'ayons plus de données dans le tableau… retardez un instant et bouclez indéfiniment, car nous déplacions les données vers la gauche et nous avons besoin que le MSB soit sur la dernière broche de sortie du registre à décalage l'envoyer en premier. shiftOut(données, horloge, MSBFIRST, out); // décaler l'octet vers notre registre delay(1); // retardez-le un peu pour qu'il ait une chance de laisser une tache de lumière dans vos yeux N'hésitez pas à faire vos propres images et effets, Il y a 3 fichiers d'exemple, le smiley et un damier (qui ressemble plus à des rayures), et enfin un fabricant d'étincelles aléatoire

Étape 9: Conclusion

Conclusion
Conclusion
Conclusion
Conclusion
Conclusion
Conclusion

Dans l'ensemble, c'est une petite puce assez pratique, et je suis content de l'avoir retiré d'un vieil appareil électronique dirigé à la poubelle. Il peut être utilisé pour d'autres choses que les systèmes d'affichage, mais tout le monde aime les lumières et le retour instantané de voir ce qui se passe est extrêmement utile pour les penseurs visuels comme moi. Veuillez également pardonner mon code, je n'ai l'arduino que depuis la troisième semaine d'octobre, et c'était un cours accéléré assez important. Mais c'est la grande chose à propos du système, si vous vous asseyez et travaillez avec lui, il est plein de fonctionnalités intéressantes qui rendent le contrôle du monde avec un microcontrôleur 8 bits assez facile à faire. Comme toujours, les questions et commentaires sont les bienvenus, et merci pour lecture, j'espère que vous avez beaucoup appris

Conseillé: