le Tarte aux framboises peut être une excellente plate-forme d'apprentissage, mais une chose importante qu'il ne peut pas faire dès le départ est d'utiliser des composants électroniques analogiques. Cela laisse tout, des joysticks analogiques aux potentiomètres hors limites par défaut, mais heureusement, l'ajout d'une puce coûteuse résout le problème. Le MCP3008 ADC (convertisseur analogique-numérique) est utilisé pour connecter l'électronique analogique au 40 broches GPIO du Raspberry Pi, vous permettant d'utiliser toutes sortes de composants supplémentaires.
Pour vous montrer comment tirer parti de la conversion analogique-numérique et comment créer un spectacle de lumière amusant, nous avons créé un projet qui lira trois potentiomètres et utilisera ces cadrans pour contrôler la couleur d'un Adafruit NeoPixel. Voici comment créer un spectacle lumineux Raspberry Pi coloré à l'aide d'une entrée analogique.
Ce dont vous avez besoin pour faire un spectacle lumineux avec votre Raspberry Pi:
- Tarte aux framboises. N'importe quel modèle peut être utilisé
- Raspberry Pi OS sur une carte micro SD de 8 Go +
- MCP3008 Convertisseur analogique-numérique (A / D) utilisé pour lire les signaux analogiques et les convertir pour que le Pi les comprenne
- LED Adafruit NeoPixels WS2812B. Nous avons utilisé un anneau LED de 12 pixels d'Adafruit
- Matériel de soudure. Cela n'est nécessaire que pour souder les fils de pontage aux NeoPixels.
- Un 400 points de plus grande planche à pain. Utilisé pour construire le circuit
- 3 potentiomètres 10k. Ce sont les cadrans utilisés comme entrées
- 6x fils de connexion mâle à femelle
- 13x fils de connexion mâle à mâle
Comment créer un spectacle de lumière Rasperry Pi avec des entrées analogiques
1. Insérez le MCP3008 dans la planche à pain de sorte que les broches chevauchent la découpe centrale. L'encoche sur la puce doit faire face à l'extrémité courte de la planche à pain. Les 16 broches du MCP3008 commencent par 1 dans le coin inférieur gauche, puis nous comptons jusqu'à 8 dans le coin inférieur droit. La broche 9 est dans le coin supérieur droit et enfin la broche 16 dans le coin supérieur gauche.
2. Connectez le MCP3008 au GPIO Raspberry Pi en utilisant les fils de pontage femelle à mâle. Premiers fils femelle à mâle pour connecter les broches 3,3 V et GND aux rails + et – de la planche à pain. Utilisez ensuite des câbles mâle à mâle pour connecter les rails aux broches du MCP3008 pour l'alimentation et la masse.
3. Connectez le MCP3008 au Raspberry Pi en utilisant des fils de pontage femelle à mâle.
Couleur de fil | MCP3008 | Raspberry Pi GPIO |
---|---|---|
Rose | dix | GPIO 08 |
Violet | 11 | GPIO 10 |
Orange | 12 | GPIO 09 |
vert | 13 | GPIO 11 |
4. Insérez les potentiomètres et connectez-les au MCP3008 en utilisant des fils de connexion mâle à mâle.
5. Souder trois fils aux Adafruit NeoPixels. PWR, GND et In. PWR se connecte au rail + sur la platine, GND au rail -. «IN» est connecté à GPIO 18 sur le Raspberry Pi.
6. Modifiez le fichier /boot/config.txt.
sudo nano /boot/config.txt
7. Ajoutez cette ligne au bas du fichier. Il permettra au GPIO de parler aux NeoPixels mais il désactivera la sortie audio via la prise casque. Appuyez sur CTRL + X, Y et Entrée pour quitter lorsque vous avez terminé. Redémarrez le Pi pour que les modifications prennent effet.
hdmi_force_hotplug=1
8. Installez les modules Python 3 pour NeoPixels.
sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel
9. Ouvrez l'EDI Thonny, trouvé dans le menu Programmation.
dix. Ajoutez les lignes suivantes pour importer des modules qui permettent au code de fonctionner avec NeoPixels, de mettre en pause le code et d'utiliser la carte MCP3008.
import board
import neopixel
from time import sleep
from gpiozero import MCP3008
11. Créez trois variables r, g, b qui stockera les valeurs brutes produites par le MCP3008.
r = MCP3008(channel=0)
g = MCP3008(channel=1)
b = MCP3008(channel=2)
12. Créez un objet appelé pixels. Cela permettra au code Python de fonctionner avec les NeoPixels. À cet objet, nous passons la broche GPIO qui est utilisée, D18, et le nombre de NeoPixels dans la chaîne / l'anneau, 16.
pixels = neopixel.NeoPixel(board.D18, 16)
13. Créer une boucle True True: qui exécutera en continu le code.
while True:
14. Créez trois variables, rouge, vert et bleu qui stockera la valeur renvoyée par le potentiomètre. Cette valeur est comprise entre 0,0 et 1,0 et pour la convertir en quelque chose que les NeoPixels peuvent comprendre, nous multiplions la valeur par 255.
red = round(r.value * 255)
green= round(g.value * 255)
blue = round(b.value * 255)
15. Imprimez les valeurs renvoyées dans le shell Python.
print(red,green,blue)
16. Créez une boucle for qui mettra à jour les 16 pixels dans l'anneau pour afficher le mélange de couleurs actuel.
for i in range(16):
pixels(i) = (red, green, blue)
17. Ajoutez une pause de 0,1 seconde au code.
sleep(0.1)
18. Enregistrez le code sous analog-inputs.py.
19. Exécutez le code à l'aide de sudo dans un terminal.
sudo python3 analog-inputs.py
20. Tournez les potentiomètres pour contrôler la couleur des NeoPixels.
Liste complète des codes
Voici tout le code utilisé dans ce projet.
import board
import neopixel
from time import sleep
from gpiozero import MCP3008
r = MCP3008(channel=0)
g = MCP3008(channel=1)
b = MCP3008(channel=2)
pixels = neopixel.NeoPixel(board.D18, 16)
while True:
red = round(r.value * 255)
green= round(g.value * 255)
blue = round(b.value * 255)
print(red,green,blue)
for i in range(16):
pixels(i) = (red, green, blue)
sleep(0.1)
PLUS: Framboise Tutoriels Pi
PLUS: Meilleurs chapeaux Raspberry Pi
PLUS: Meilleures cartes microSD pour Raspberry Pi