Paso 5: Electrónica - programación
El programa sí mismo está escrito en el lenguaje de programación 'BASIC' y básicamente permite el chip para tomar el audio 'golpeado apagado' desde el amplificador a través de un diodo y convertirlo a un valor digital usando las virutas 'Analógico DC' capacidad de convertidor (ADC), el chip entonces usa este valor en combinación con las posiciones de 2 de los potenciómetros utilizados para 'LED sensibilidad' y 'Brillo' a través de una fórmula matemática para decidir cuántos LEDs luz para arriba , el resultado de esto es LEDs que 'bailan' al ritmo de la música depende del poder de la música en ese momento en el tiempo.
La segunda sección de la programación fue el menú de sistema de que puede accederse pulsando ambos botones al mismo tiempo, este sistema de menú permite al usuario elegir entre 1 de 4 patrones predeterminados de LED, cuya velocidad puede ser controlada por en el las perillas de control y el programa 'música controlada LED' original haciendo que este dispositivo útil aun cuando no se está utilizando como un amplificador de música.
A continuación es el programa que escribí, soy relativamente nuevo en Picaxe programación (básico) por lo que puede haber más simple y más memoria eficientes formas de crear este programa sin embargo esto funciona muy bien (texto procedió por un apostraphy ' son notas y no son parte del programa):
principal:
PAUSE 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)
b.5 serout, n2400, (254, $80) ' primera línea de pantalla LCD
serout b.5, n2400, ("diseños de Santo")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla LCD
b.5 serout, n2400, ("presenta... ")
pausa de 250
alta 0
pausa de 250
alto 0, 1
pausa de 250
alto 0, 1, 2
pausa de 250
alto 0, 1, 2, 3
PAUSE 500
bajo 0
pausa de 250
baja 0, 1
pausa de 250
baja 0, 1, 2
pausa de 250
baja 0, 1, 2, 3
Goto VUMeterTextVUMeterText:
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("música para luces!")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, ("Prensa", 8, «+», 9,"menú 4")
Goto VUMeter
VUMeter:
Si pinc.7 = 1 then
Goto PresetsFlashQ
otra cosa
readadc c.1, b1 ' c.1 pin es la entrada de audio del circuito amplificador de audio
readadc b.7, b2 ' pin b.7 es el potenciómetro 'LED sensibilidad'
readadc c.0, b3 ' pin c.0 es el potenciómetro 'Brillo'
que b2 = b2/20
que b3 = 255 - b3
Si b3 < = 127 entonces
que b3 = 127 - b3
que w4 = b3 * 15
que w3 = b2 * b1-w4
otra cosa
que b3 = b3 - 128
que w4 = b3 * 15
que w3 = b2 * b1 + w4
endif
Si w3 > 4000 entonces
que w3 = 0
endif
Si w3 > 600 entonces cuatro
Si w3 > 450 entonces tres
Si w3 > 300 entonces dos
Si w3 > 150, entonces uno
Si w3 < = 150 entonces cero
endif
Goto VUMeter
cero:
baja 0, 1, 2, 3
Goto VUMeter
uno:
baja 0, 1, 2, 3
alta 0
Goto VUMeter
dos:
baja 0, 1, 2, 3
alto 0, 1
b.5 serout, n2400, (254, $C0)
Goto VUMeter
tres:
baja 0, 1, 2, 3
alto 0, 1, 2
b.5 serout, n2400, (254, $C0)
Goto VUMeter
cuatro:
baja 0, 1, 2, 3
alto 0, 1, 2, 3
b.5 serout, n2400, (254, $C0)
Goto VUMeter
PresetsFlashQ:
Si pinc.6 = 1 then
Goto PresetsFlash
otra cosa
Goto VUMeter
endif
PresetsFlash:
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Main Menu")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, (8, "Preset 1", 9)
baja 0, 1, 2, 3
alta 0
PAUSE 100
alto 0, 1
PAUSE 100
alto 0, 1, 2
PAUSE 100
alto 0, 1, 2, 3
PAUSE 100
bajo 0
PAUSE 100
baja 0, 1
PAUSE 100
baja 0, 1, 2
PAUSE 100
baja 0, 1, 2, 3
PAUSE 100
Goto Preset1
Preset1:
baja 0, 1, 2, 3
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Main Menu")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, (8, "Preset 1", 9)
pausa de 200
Goto Preset1loop
Preset1loop:
Si pinc.7=1 entonces goto Preset1L ' Pin 7 es el botón de 'Izquierda'
Si pinc.6=1 entonces goto Preset1R ' Pin 6 es el botón de 'Derecho'
Goto Preset1loop
Preset1R:
PAUSE 100
Si pinc.7=1 entonces goto Preset1RunText
Goto Preset2
Preset1L:
PAUSE 100
Si pinc.6=1 entonces goto Preset1RunText
Goto PresetVU
Preset1RunText:
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Preset 1)
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, ("Prensa", 8, «+», 9,"menú 4")
pausa de 200
Goto Preset1Run
Preset1Run:
baja 0, 1, 2, 3
alta 0
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
readadc c.0, b5
b5 de pausa
alto 0, 1
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
readadc c.0, b5
b5 de pausa
alto 0, 1, 2
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
readadc c.0, b5
b5 de pausa
alto 0, 1, 2, 3
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
readadc c.0, b5
b5 de pausa
bajo 0
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
readadc c.0, b5
b5 de pausa
baja 0, 1
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
readadc c.0, b5
b5 de pausa
baja 0, 1, 2
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
readadc c.0, b5
b5 de pausa
Si pinc.6=1 y pinc.7=1 entonces goto Preset1
Goto Preset1Run
Preset2:
baja 0, 1, 2, 3
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Main Menu")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, (8, "Preset 2", 9)
pausa de 200
Goto Preset2loop
Preset2loop:
Si pinc.7=1 entonces goto Preset2L
Si pinc.6=1 entonces goto Preset2R
Goto Preset2loop
Preset2R:
PAUSE 100
Si pinc.7=1 entonces goto Preset2RunText
Goto Preset3
Preset2L:
PAUSE 100
Si pinc.6=1 entonces goto Preset2RunText
Goto Preset1
Preset2RunText:
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Preset 2")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, ("Prensa", 8, «+», 9,"menú 4")
pausa de 200
Goto Preset2Run
Preset2Run:
baja 0, 1, 2, 3
alta 0
Si pinc.6=1 y pinc.7=1 entonces goto Preset2
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
1 alta
Si pinc.6=1 y pinc.7=1 entonces goto Preset2
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
2 alta
Si pinc.6=1 y pinc.7=1 entonces goto Preset2
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
alto 3
Si pinc.6=1 y pinc.7=1 entonces goto Preset2
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
2 alta
Si pinc.6=1 y pinc.7=1 entonces goto Preset2
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
1 alta
Si pinc.6=1 y pinc.7=1 entonces goto Preset2
readadc c.0, b5
b5 de pausa
Goto Preset2Run
Preset3:
baja 0, 1, 2, 3
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Main Menu")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, (8, "Preset 3", 9)
pausa de 200
Goto Preset3loop
Preset3loop:
Si pinc.7=1 entonces goto Preset3L
Si pinc.6=1 entonces goto Preset3R
Goto Preset3loop
Preset3R:
PAUSE 100
Si pinc.7=1 entonces goto Preset3RunText
Goto Preset4
Preset3L:
PAUSE 100
Si pinc.6=1 entonces goto Preset3RunText
Goto Preset2
Preset3RunText:
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Preset 3")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, ("Prensa", 8, «+», 9,"menú 4")
pausa de 200
Goto Preset3Run
Preset3Run:
baja 0, 1, 2, 3
alta 0
Si pinc.6=1 y pinc.7=1 entonces goto Preset3
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
2 alta
Si pinc.6=1 y pinc.7=1 entonces goto Preset3
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
1 alta
Si pinc.6=1 y pinc.7=1 entonces goto Preset3
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
alto 3
Si pinc.6=1 y pinc.7=1 entonces goto Preset3
readadc c.0, b5
b5 de pausa
Goto Preset3Run
Preset4:
baja 0, 1, 2, 3
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Main Menu")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, (8, "Preset 4", 9)
pausa de 200
Goto Preset4loop
Preset4loop:
Si pinc.7=1 entonces goto Preset4L
Si pinc.6=1 entonces goto Preset4R
Goto Preset4loop
Preset4R:
PAUSE 100
Si pinc.7=1 entonces goto Preset4RunText
Goto PresetVU
Preset4L:
PAUSE 100
Si pinc.6=1 entonces goto Preset4RunText
Goto Preset3
Preset4RunText:
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Preset 4")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, ("Prensa", 8, «+», 9,"menú 4")
pausa de 200
Goto Preset4Run
Preset4Run:
baja 0, 1, 2, 3
alto 0, 3
Si pinc.6=1 y pinc.7=1 entonces goto Preset4
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
alto 1, 2
Si pinc.6=1 y pinc.7=1 entonces goto Preset4
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
alto 0, 1, 2, 3
Si pinc.6=1 y pinc.7=1 entonces goto Preset4
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
alto 1, 2
Si pinc.6=1 y pinc.7=1 entonces goto Preset4
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
alto 0, 3
Si pinc.6=1 y pinc.7=1 entonces goto Preset4
readadc c.0, b5
b5 de pausa
baja 0, 1, 2, 3
alto 0, 1, 2, 3
Si pinc.6=1 y pinc.7=1 entonces goto Preset4
readadc c.0, b5
b5 de pausa
Goto Preset4Run
PresetVU:
baja 0, 1, 2, 3
b.5 serout, n2400, (254, $80) ' primera línea de pantalla
serout b.5, n2400, ("Main Menu")
b.5 serout, n2400, (254, $C0) ' segunda línea de la pantalla
b.5 serout, n2400, (8,"Music2Lights", 9)
pausa de 200
Goto PresetVUloop
PresetVUloop:
Si pinc.7=1 entonces goto PresetVUL
Si pinc.6=1 entonces goto PresetVUR
Goto PresetVUloop:
PresetVUR:
PAUSE 100
Si pinc.7=1 entonces goto VUMeterText
Goto Preset1
PresetVUL:
PAUSE 100
Si pinc.6=1 entonces goto VUMeterText
Goto Preset4