Étape 5: Electronique - programmation
Le programme lui-même est écrit en langage de programmation « De base » et permet essentiellement de la puce pour extraire l’audio « tapé » de l’amplificateur grâce à une diode et le convertir en une valeur numérique utilisant les puces « Analogue à DC » capacité de convertisseur (ADC), la puce puis utilise cette valeur en combinaison avec les positions de 2 des potentiomètres utilisés pour « Luminosité LED » et « Sensibilité LED » grâce à une formule mathématique pour décider combien de LED à lumière vers le haut , le résultat de ceci est del « danse » au rythme de la musique dépend de la « puissance » de la musique à ce moment dans le temps.
La deuxième partie de la programmation a été le « System Menu » qui pourrait être accessible en appuyant sur les deux boutons en même temps, ce système de menu permettait à l’utilisateur de choisir entre 1 des 4 modèles prédéfinis de LED, dont la vitesse peut être contrôlée par la les boutons de commande et le programme original de « musique contrôlait LEDs » rendant cet appareil utile même quand on l’utilise pas comme un amplificateur de musique.
Voici le programme que j’ai écrit, je suis relativement nouveau sur Picaxe programming (en BASIC) donc il peut y avoir plus simple et plus mémoire des moyens efficaces de création de ce programme mais cela fonctionne très bien (texte précédés d’un apostraphy ' sont des notes et ne font pas partie du programme) :
principal :
pause de 500
serout B.5, N2400, (254, 64, 32, 36, 44, 63, 63, 44, 36, 32)
serout B.5, N2400, (254, 72, 32, 36, 38, 63, 63, 38, 36, 32)
serout B.5, N2400, (254, 80, 32, 32, 59, 32, 32, 49, 46, 32)
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage à cristaux liquides
serout b.5, n2400, (« dessins de Saint »)
serout b.5, n2400, (254, $C0) ' deuxième ligne d’affichage à cristaux liquides
b.5 serout, n2400, ("Presents... ")
faire une pause 250
0 haute
faire une pause 250
haut 0, 1
faire une pause 250
haut 0, 1, 2
faire une pause 250
haut 0, 1, 2, 3
pause de 500
0 faible
faire une pause 250
bas de 0, 1
faire une pause 250
faible 0, 1, 2
faire une pause 250
faible 0, 1, 2, 3
Goto VUMeterTextVUMeterText :
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, ("la musique aux lumières!")
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (« Press », 8 « + », 9"4 Menu")
Goto vumètre
Vumètre :
Si pinc.7 = 1 then
Goto PresetsFlashQ
d’autre
readadc c.1, b1 ' c.1 de la broche est l’entrée audio du circuit amplificateur audio
readadc b.7, b2 ' pin b.7 est le potentiomètre « Sensibilité LED »
readadc c.0, b3 ' pin c.0 est le potentiomètre « Luminosité LED »
Laissez b2 = b2/20
Laissez b3 = 255 - b3
Si b3 < = 127 puis
Laissez b3 = 127 - b3
Laissez w4 = b3 * 15
Laissez w3 = b2 * b1-w4
d’autre
Laissez b3 = b3 - 128
Laissez w4 = b3 * 15
Laissez w3 = b2 * b1 + w4
endif
Si w3 > 4000 puis
Laissez w3 = 0
endif
Si w3 > 600 puis quatre
Si w3 > 450 puis trois
Si w3 > 300 puis deux
Si w3 > 150 puis une
Si w3 < = 150 ensuite mettre à zéro
endif
Goto vumètre
Zero :
faible 0, 1, 2, 3
Goto vumètre
un :
faible 0, 1, 2, 3
0 haute
Goto vumètre
deux :
faible 0, 1, 2, 3
haut 0, 1
serout b.5, n2400, ($C0 254)
Goto vumètre
trois :
faible 0, 1, 2, 3
haut 0, 1, 2
serout b.5, n2400, ($C0 254)
Goto vumètre
quatre :
faible 0, 1, 2, 3
haut 0, 1, 2, 3
serout b.5, n2400, ($C0 254)
Goto vumètre
PresetsFlashQ :
Si pinc.6 = 1 then
Goto PresetsFlash
d’autre
Goto vumètre
endif
PresetsFlash :
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, (« Menu principal »)
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (8, "Preset 1", 9)
faible 0, 1, 2, 3
0 haute
pause 100
haut 0, 1
pause 100
haut 0, 1, 2
pause 100
haut 0, 1, 2, 3
pause 100
0 faible
pause 100
bas de 0, 1
pause 100
faible 0, 1, 2
pause 100
faible 0, 1, 2, 3
pause 100
Goto Preset1
Preset1 :
faible 0, 1, 2, 3
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, (« Menu principal »)
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (8, "Preset 1", 9)
faire une pause 200
Goto Preset1loop
Preset1loop :
Si pinc.7=1 alors goto Preset1L ' broche 7 est la touche « Gauche »
Si pinc.6=1 alors goto Preset1R ' broche 6 est le bouton « Droit »
Goto Preset1loop
Preset1R :
pause 100
Si pinc.7=1 alors goto Preset1RunText
Goto Preset2
Preset1L :
pause 100
Si pinc.6=1 alors goto Preset1RunText
Goto PresetVU
Preset1RunText :
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, ("Preset 1")
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (« Press », 8 « + », 9"4 Menu")
faire une pause 200
Goto Preset1Run
Preset1Run :
faible 0, 1, 2, 3
0 haute
Si pinc.6=1 et pinc.7=1 puis goto Preset1
readadc c.0, b5
faire une pause b5
haut 0, 1
Si pinc.6=1 et pinc.7=1 puis goto Preset1
readadc c.0, b5
faire une pause b5
haut 0, 1, 2
Si pinc.6=1 et pinc.7=1 puis goto Preset1
readadc c.0, b5
faire une pause b5
haut 0, 1, 2, 3
Si pinc.6=1 et pinc.7=1 puis goto Preset1
readadc c.0, b5
faire une pause b5
0 faible
Si pinc.6=1 et pinc.7=1 puis goto Preset1
readadc c.0, b5
faire une pause b5
bas de 0, 1
Si pinc.6=1 et pinc.7=1 puis goto Preset1
readadc c.0, b5
faire une pause b5
faible 0, 1, 2
Si pinc.6=1 et pinc.7=1 puis goto Preset1
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
Si pinc.6=1 et pinc.7=1 puis goto Preset1
readadc c.0, b5
faire une pause b5
Si pinc.6=1 et pinc.7=1 puis goto Preset1
Goto Preset1Run
Preset2 :
faible 0, 1, 2, 3
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, (« Menu principal »)
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (8, "Preset 2", 9)
faire une pause 200
Goto Preset2loop
Preset2loop :
Si pinc.7=1 alors goto Preset2L
Si pinc.6=1 alors goto Preset2R
Goto Preset2loop
Preset2R :
pause 100
Si pinc.7=1 alors goto Preset2RunText
Goto Preset3
Preset2L :
pause 100
Si pinc.6=1 alors goto Preset2RunText
Goto Preset1
Preset2RunText :
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, ("Preset 2")
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (« Press », 8 « + », 9"4 Menu")
faire une pause 200
Goto Preset2Run
Preset2Run :
faible 0, 1, 2, 3
0 haute
Si pinc.6=1 et pinc.7=1 puis goto Preset2
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
1 haut
Si pinc.6=1 et pinc.7=1 puis goto Preset2
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
2 haute
Si pinc.6=1 et pinc.7=1 puis goto Preset2
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
3 haut
Si pinc.6=1 et pinc.7=1 puis goto Preset2
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
2 haute
Si pinc.6=1 et pinc.7=1 puis goto Preset2
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
1 haut
Si pinc.6=1 et pinc.7=1 puis goto Preset2
readadc c.0, b5
faire une pause b5
Goto Preset2Run
Preset3 :
faible 0, 1, 2, 3
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, (« Menu principal »)
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (8, "Preset 3", 9)
faire une pause 200
Goto Preset3loop
Preset3loop :
Si pinc.7=1 alors goto Preset3L
Si pinc.6=1 alors goto Preset3R
Goto Preset3loop
Preset3R :
pause 100
Si pinc.7=1 alors goto Preset3RunText
Goto Preset4
Preset3L :
pause 100
Si pinc.6=1 alors goto Preset3RunText
Goto Preset2
Preset3RunText :
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, ("Preset 3")
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (« Press », 8 « + », 9"4 Menu")
faire une pause 200
Goto Preset3Run
Preset3Run :
faible 0, 1, 2, 3
0 haute
Si pinc.6=1 et pinc.7=1 puis goto Preset3
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
2 haute
Si pinc.6=1 et pinc.7=1 puis goto Preset3
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
1 haut
Si pinc.6=1 et pinc.7=1 puis goto Preset3
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
3 haut
Si pinc.6=1 et pinc.7=1 puis goto Preset3
readadc c.0, b5
faire une pause b5
Goto Preset3Run
Preset4 :
faible 0, 1, 2, 3
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, (« Menu principal »)
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (8, "Preset 4", 9)
faire une pause 200
Goto Preset4loop
Preset4loop :
Si pinc.7=1 alors goto Preset4L
Si pinc.6=1 alors goto Preset4R
Goto Preset4loop
Preset4R :
pause 100
Si pinc.7=1 alors goto Preset4RunText
Goto PresetVU
Preset4L :
pause 100
Si pinc.6=1 alors goto Preset4RunText
Goto Preset3
Preset4RunText :
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, ("Preset 4")
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (« Press », 8 « + », 9"4 Menu")
faire une pause 200
Goto Preset4Run
Preset4Run :
faible 0, 1, 2, 3
haut 0, 3
Si pinc.6=1 et pinc.7=1 puis goto Preset4
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
haut de 1, 2
Si pinc.6=1 et pinc.7=1 puis goto Preset4
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
haut 0, 1, 2, 3
Si pinc.6=1 et pinc.7=1 puis goto Preset4
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
haut de 1, 2
Si pinc.6=1 et pinc.7=1 puis goto Preset4
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
haut 0, 3
Si pinc.6=1 et pinc.7=1 puis goto Preset4
readadc c.0, b5
faire une pause b5
faible 0, 1, 2, 3
haut 0, 1, 2, 3
Si pinc.6=1 et pinc.7=1 puis goto Preset4
readadc c.0, b5
faire une pause b5
Goto Preset4Run
PresetVU :
faible 0, 1, 2, 3
serout b.5, n2400, (80 $ 254) ' première ligne d’affichage
serout b.5, n2400, (« Menu principal »)
serout b.5, n2400, (254, $C0) « deuxième ligne de l’affichage
serout b.5, n2400, (8,"Music2Lights", 9)
faire une pause 200
Goto PresetVUloop
PresetVUloop :
Si pinc.7=1 alors goto PresetVUL
Si pinc.6=1 alors goto PresetVUR
Goto PresetVUloop :
PresetVUR :
pause 100
Si pinc.7=1 alors goto VUMeterText
Goto Preset1
PresetVUL :
pause 100
Si pinc.6=1 alors goto VUMeterText
Goto Preset4