Dans les années 1980, le boom des ordinateurs personnels a vu des machines d’Atari, Apple, Commodore, Acorn, Sinclair et autres chercher à introduire l’informatique à une génération. Dans un exemple d’histoire qui se répète, nous avons vu l’émergence du Raspberry Pi dans les années 2010. Mais comme Raspberry Pi et Python vont maintenant de pair pour cette génération, dans les années 1980, c’était BASIC.
BASIC, Beginners All-Purpose Symbolic Instruction Code est un langage de haut niveau lisible par l’homme développé à l’origine en 1964 par John G. Kemeny, Thomas E. Kurtz et Mary Kenneth Keller au Dartmouth College. BASIC a pris de l’importance à la fin des années 1970, grâce à l’essor des ordinateurs personnels. Les années 1980 ont vu BASIC, plusieurs versions du langage, pour de nombreux ordinateurs personnels différents. Microsoft BASIC, TI-BASIC, Amiga BASIC, AppleSoft BASIC. BASIC était à la fois notre langage de programmation et un moyen de contrôler nos ordinateurs personnels.
Au fil du temps, BASIC est tombé dans l’ombre pour beaucoup. De nouvelles langues sont apparues et ont pris le relais. Nous avons maintenant des milliers de langages de programmation parmi lesquels choisir. En ce qui concerne le Raspberry Pi Pico, notre choix est un peu plus limité, mais nous pouvons maintenant en ajouter un de plus à la liste.
PicoMite est le nom d’un projet basé sur Raspberry Pi Pico qui voit une version de BASIC (MMBASIC dans ce cas) utilisée pour contrôler le GPIO du Pico. Le terme « Mite » vient du créateur, la gamme de cartes Maximite et Micromite de Geoff Graham qui utilisent des SoC basés sur Arm pour alimenter de puissants ordinateurs domestiques qui exécutent une saveur de BASIC.
PicoMite est un produit plus « léger », conçu pour le Raspberry Pi Pico à 4 $, permettant au code BASIC de contrôler et de fonctionner avec des broches GPIO, des capteurs, des LED RVB et d’autres composants. Dans ce guide, nous allons créer notre propre appareil PicoMite et l’utiliser pour contrôler une série de LED Neopixel RVB.
Pour ce projet, vous aurez besoin
Configuration de PicoMite
1. Naviguez vers le Page Web PicoMite et faites défiler jusqu’à la section Téléchargements. Téléchargez le dernier micrologiciel PicoMite.
2. Extraire le contenu du téléchargement.
3. Appuyez et maintenez enfoncé le bouton BOOTSEL du Raspberry Pi Pico et connecter via USB à votre ordinateur. Un nouveau lecteur, RPI-RP2 va apparaître, c’est notre Raspberry Pi Pico.
4. Copiez le PicoMite UF2 fichier du micrologiciel sur le lecteur RPI-RP2. Après quelques instants, le lecteur disparaîtra et notre Pico exécute maintenant la version Pico de MMBASIC.
Connexion au PicoMite
Pour utiliser PicoMite, nous devons créer une connexion série entre notre ordinateur et le Raspberry Pi Pico. Le meilleur outil pour le travail sous Windows est PuTTY.
1. Téléchargez et installez PuTTY à votre ordinateur Windows.
2. Clic droit sur le menu Windows et sélectionnez Gestionnaire de périphériques.
3. Faites défiler jusqu’à Ports (COM et LPT) et cliquez sur la flèche déroulante. Notez le port COM du périphérique série USB.
4. Ouvrir le mastic et cliquez sur Série. Entrez le port COM de votre PicoMite et réglez la vitesse sur 38400.
5. Dans le menu Catégorie (à gauche), cliquez sur Série.
6. Définissez votre configuration série comme suit. Vitesse 38400, bits de données 8, bits d’arrêt 1, parité aucune, contrôle de flux aucun.
7. Dans le menu Catégoriecliquez sur Clavier et réglez la touche Retour arrière sur Control-H. Cela nous permettra d’utiliser la touche de retour arrière pour supprimer toute erreur dans notre code. Si ce paramètre n’est pas activé, la touche de retour arrière est désactivée.
8. Cliquez sur Session, nommez votre session PicoMite et cliquez sur Enregistrer. Nous avons maintenant les paramètres prêts à l’emploi chaque fois que nous souhaitons utiliser PicoMite avec PuTTY.
9. Cliquez sur Ouvrir pour créer une connexion.
Utilisation de PicoMite avec MMBASIC
La première chose que nous voyons avec MMBASIC n’est rien. Un écran vide avec une invite est tout ce qui accueille. Mais à partir de là, nous pouvons écrire du code BASIC, ligne par ligne, qui s’exécute chaque fois que nous appuyons sur la touche Entrée.
Utilisons une commande d’impression rapide pour tester que tout fonctionne comme prévu. Appuyez sur Entrée à la fin de la ligne pour exécuter le code, vous devriez voir le message apparaître à l’écran.
print “Hello World”
Nous devons créer un fichier pour faire plus avec le code.
1. Taper Éditer et appuyez sur Entrée. Cela ouvre un éditeur de texte de base et en bas de l’écran, nous pouvons voir que les touches de fonction sont utilisées pour enregistrer, exécuter, rechercher, marquer (surligner pour couper/copier) et coller.
2. Créez un commentaire, commençant par ‘, qui identifiera ce que le projet fera. Les commentaires, les remarques en langage BASIC, sont des façons de laisser des messages dans notre code. Pour MMBASIC, ils servent également de noms de fichiers de projet.
‘For loop
3. Créer une boucle for qui itérera dix fois.
For i = 1 To 10
4. À l’intérieur de la boucle for, ajoutez une commande d’impression pour imprimer un message à l’écran.
Print “Tom’s Hardware”
5. Fermez la boucle for avec Next. Cela augmentera la valeur de i à chaque itération de la boucle. Quand il atteint 10, la boucle se termine.
Next i
6. Appuyez sur F1 pour enregistrer. Cela nous sortira également de l’éditeur.
7. Enregistrez le code dans l’emplacement un de la mémoire embarquée. PicoMite a sept emplacements dans lesquels nous pouvons enregistrer du code.
flash save 1
8. Taper Cours et appuyez sur Entrée pour lancer le code. Un message apparaîtra dix fois.
Pour la liste complète des codes de boucle
'For Loop
For i = 1 To 10
Print "Tom's Hardware"
Next i
Utilisation du GPIO
Comme il s’agit d’un Raspberry Pi Pico, nous pouvons faire bien plus qu’imprimer des chaînes de texte. MMBASIC a accès au GPIO. Nous avons numérique, analogique, PWM, I2C, SPI, RS232 et 1-Wire. Commençons simplement avec une LED.
La LED a deux connexions, l’anode et la cathode. L’anode (jambe longue) se connecte au GP0 via un cavalier mâle à mâle. La cathode (jambe courte, GND) se connecte à n’importe quelle broche GND du Pico via une résistance de 220 ohms.
1. Taper Éditer et appuyez sur Entrée. Cela ouvre un éditeur de texte de base.
2. Nommez le projet LED Blink.
‘LED Blink
3. Définissez la broche GPIO 0 comme sortie.
SetPin GP0, DOUT
4. Créez une variable, delay, dans laquelle nous stockons la valeur 1000. Il s’agit d’un délai d’une seconde en millisecondes.
delay = 1000
5. Créez une étiquette, Blink_Loop : qui indique le début de notre code en boucle. BASIC peut utiliser des étiquettes ou des numéros de ligne, en remontant par pas de 10, pour indiquer les positions dans le code.
6. Allumez la LED connectée au GP0, et utilisez une commande d’impression pour écrire « On » à l’écran. En imprimant un message à l’écran, nous pouvons voir que la boucle fonctionne, si notre circuit LED est incorrect.
Pin(GP0) = 1
Print “On”
7. Ajoutez une pause en utilisant la valeur stockée dans le délai. Cela gardera la LED allumée pendant une seconde.
Pause delay
8. Éteignez la LED, imprimez à l’écran et puis faites une pause d’une seconde.
Pin(GP0) = 0
Print "Off"
Pause delay
9. Utilisez une commande GoTo pour renvoyer le code à Blink_Loop, fermant la boucle.
GoTo Blink_Loop
dix. Appuyez sur F1 pour enregistrer et quitter le code.
11. Enregistrez le projet dans l’emplacement deux de la mémoire embarquée.
flash save 2
12. Taper Cours et appuyez sur Entrée pour lancer le code. La LED devrait maintenant clignoter toutes les secondes. Appuyez sur CTRL+C pour quitter le code.
Clignotement LED Liste complète des codes
'LED Blink
SetPin GP0, DOUT
delay = 1000
Blink_Loop:
Pin(GP0) = 1
Print "On"
Pause delay
Pin(GP0) = 0
Print "Off"
Pause delay
GoTo Blink_Loop
Code de chargement
Nous avons maintenant deux projets enregistrés sur PicoMite, mais un seul peut être exécuté à la fois.
1. Répertoriez les projets enregistrés sur le PicoMite.
flash list
2. Chargez le code de la boucle for à partir du premier emplacement.
flash load 1
3. Lister le contenu du code, taper liste et appuyez sur Entrée.
4. Taper Cours et appuyez sur Entrée pour exécuter le code.
Et si nous voulions exécuter notre code lorsque le Raspberry Pi Pico est loin d’un ordinateur ? Disons que nous voulons que le projet de clignotement de LED se charge lorsque le PicoMite est sous tension.
Utilisez cette commande pour définir le code LED Blink dans l’emplacement 2 à charger au démarrage.
option autorun 2
Contrôler les NeoPixels avec PicoMite
Vous avez bien lu ! Normalement, nous avons besoin de CircuitPython, MicroPython ou C pour contrôler NeoPixels avec le Raspberry Pi Pico. Mais PicoMite prend en charge le « bitbanging », où nous créons les signaux/impulsions nécessaires pour contrôler les LED RVB WS2812 dans le logiciel.
Le circuit pour NeoPixels est simple. Nous avons trois connexions.
Framboise Pi Pico | NéoPixel | Couleur du fil |
---|---|---|
3v3 | VCC | Rouge |
Terre | Terre | Le noir |
GPIO28 | Entrée de données (DIN) | Vert |
Le code de ce projet est un peu plus compliqué car nous allons utiliser des tableaux (des groupes de variables essentiellement) pour contrôler la couleur de chaque LED dans une chaîne de six.
1. Chargez un emplacement vide pour le code.
flash load 3
2. Ouvrez la fente à l’aide Éditer.
3. Ajoutez le commentaire ‘Neopixels. N’oubliez pas que ce sera le titre du code dans l’emplacement 3.
4. Créez une variable appelée retard et là stocker 1000. Ce sera un délai d’une seconde entre chaque couleur du cycle.
delay = 1000
5. Créez un tableau (Python appelle cela une liste) qui contiendra les six valeurs pour chacun des six Neopixels que nous souhaitons contrôler. En BASIC, nous devons créer les dimensions (taille) de la liste. Le ! indique que notre tableau contient des entiers, et chacun est une valeur RVB, dans ce cas rouge.
Dim a%(5)=(RGB(red),RGB(red),RGB(red),RGB(red),RGB(red),RGB(red))
6. Créez un autre tableau, cette fois pour régler les LED sur le vert.
Dim b%(5)=(RGB(green),RGB(green),RGB(green),RGB(green),RGB(green),RGB(green))
7. Créez un tableau final, cette fois pour régler les LED sur le bleu.
Dim c%(5)=(RGB(blue),RGB(blue),RGB(blue),RGB(blue),RGB(blue),RGB(blue))
8. Réglez GPIO 28 sur une sortie.
SetPin GP28, DOUT
9. Créez une étiquette qui indique le début d’une boucle.
pixel_loop:
dix. Utilisez la commande Bitbang pour simuler la synchronisation WS2812 nécessaire pour régler les LED en rouge. L’option WS2812 a deux paramètres pour Neopixels. O pour standard et B pour la version WS2812B. Si l’un ne fonctionne pas, essayez l’autre.
Bitbang ws2812 o, GP28, 6, a%()
11. Ajoutez une pause. Nous utilisons la valeur stockée dans retard comme la durée.
Pause delay
12. Utilisez un autre bitbang pour mettre les LED en vert, puis ajoutez une autre pause. Nous utilisons les valeurs du b tableau pour mettre chaque LED en vert.
Bitbang ws2812 o, GP28, 6, b%()
Pause delay
13. Réglez les LED en bleu avec une commande bitbang finale et une courte pause.
Bitbang ws2812 o, GP28, 6, c%()
Pause delay
14. Fermez enfin la boucle en demandant au code de revenir à l’étiquette.
GoTo pixel_loop
15. Appuyez sur F1 pour enregistrer le code.
16. Remplacez le code dans l’emplacement 3. Cela garantit que notre code est correctement enregistré.
flash overwrite 3
17. Taper Cours pour lancer le code. Appuyez sur CTRL+C pour arrêter à tout moment.
Liste des codes Neopixel
Votre code pour ce projet devrait ressembler à ceci.
'Neopixels
delay = 1000
Dim a%(5)=(RGB(red),RGB(red),RGB(red),RGB(red),RGB(red),RGB(red))
Dim b%(5)=(RGB(green),RGB(green),RGB(green),RGB(green),RGB(green),RGB(green))
Dim c%(5)=(RGB(blue),RGB(blue),RGB(blue),RGB(blue),RGB(blue),RGB(blue))
SetPin GP28, DOUT
pixel_loop:
Bitbang ws2812 o, GP28, 6, a%()
Pause delay
Bitbang ws2812 o, GP28, 6, b%()
Pause delay
Bitbang ws2812 o, GP28, 6, c%()
Pause delay
GoTo pixel_loop