Stap 5: Elektronica - programmering
Het programma zelf is geschreven in de programmeertaal 'BASIC' en in principe waarmee de chip te nemen van de audio 'getikt uit' van de versterker door middel van een diode en converteren naar een digitale waarde met behulp van de chips 'Analogue naar DC' (ADC) converter vermogen, dan de chip gebruikt deze waarde in combinatie met de standpunten van 2 van de potentiometers gebruikt voor 'LED helderheid' en 'LED gevoeligheid' via een wiskundige formule om te beslissen hoeveel LEDs aan het licht omhoog , het resultaat van deze LEDs die '' op de beat van de muziek die afhankelijk zijn van de 'kracht' van de muziek op dat moment dansen is.
Het tweede deel van de programmering was de 'Menu-systeem', die kan worden geopend door te drukken op beide drukknoppen op hetzelfde moment, dit menusysteem toegestaan de gebruiker om te kiezen tussen 1 van 4 vooraf ingestelde LED patronen, waarvan snelheid kan worden gecontroleerd door op de knoppen van de controle en het oorspronkelijke 'muziek-gestuurde LED' programma nuttig maken van dit apparaat, zelfs wanneer het niet wordt gebruikt als een muziek-versterker.
Hieronder is het programma dat ik schreef, ik ben relatief nieuw voor het Picaxe programmeren (in BASIC) dus er kan eenvoudiger en meer geheugen efficiënt manieren van het creëren van dit programma nochtans werkt dit prima (tekst voorafgegaan door een apostraphy ' zijn notities en niet een onderdeel van het programma):
belangrijkste:
onderbreken van 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, (254, $80) ' eerste regel van de LCD-display
serout b.5, n2400, ("de witte Designs")
serout b.5, n2400, (254, $C0) ' tweede regel van de LCD-display
serout b.5, n2400, ("presenteert... ")
onderbreken van 250
hoge 0
onderbreken van 250
hoog 0, 1
onderbreken van 250
hoge 0, 1, 2
onderbreken van 250
hoge 0, 1, 2, 3
onderbreken van 500
lage 0
onderbreken van 250
laag 0, 1
onderbreken van 250
lage 0, 1, 2
onderbreken van 250
lage 0, 1, 2, 3
goto VUMeterTextVUMeterText:
serout b.5, n2400, (254, $80) ' eerste regel van display
serout b.5, n2400, ("muziek aan lichten!")
serout b.5, n2400, (254, $C0) ' tweede regel van display
serout b.5, n2400, ("Pers", 8 "+", 9"4 Menu")
goto VUMeter
VUMeter:
Als pinc.7 = 1 then
goto PresetsFlashQ
anders
ReadADC c.1, b1 ' pin c.1 is de audio-ingang van de audio-versterker circuit
ReadADC b.7 b2 ' pin b.7 is de 'LED gevoeligheid' potmeter
ReadADC c.0, b3 ' pin c.0 is de 'LED helderheid' potmeter
laat b2 = b2/20
laat b3 = 255 - b3
Als b3 < = 127 then
laat b3 = 127 - b3
laat w4 = b3 * 15
laat w3 = b2 * b1-w4
anders
laat b3 = b3 - 128
laat w4 = b3 * 15
laat w3 = b2 * b1 + w4
endif
Als vervolgens w3 > 4000
laat w3 = 0
endif
Als w3 > 600 dan vier
Als w3 > 450 dan drie
Als w3 > 300 dan twee
Als w3 > 150, vervolgens een
Als w3 < = 150 dan nul
endif
goto VUMeter
Zero:
lage 0, 1, 2, 3
goto VUMeter
een:
lage 0, 1, 2, 3
hoge 0
goto VUMeter
twee:
lage 0, 1, 2, 3
hoog 0, 1
serout b.5, n2400, (254, $C0)
goto VUMeter
drie:
lage 0, 1, 2, 3
hoge 0, 1, 2
serout b.5, n2400, (254, $C0)
goto VUMeter
vier:
lage 0, 1, 2, 3
hoge 0, 1, 2, 3
serout b.5, n2400, (254, $C0)
goto VUMeter
PresetsFlashQ:
Als pinc.6 = 1 then
goto PresetsFlash
anders
goto VUMeter
endif
PresetsFlash:
serout b.5, n2400, (254, $80) ' eerste regel van display
serout b.5, n2400, ("Main Menu")
serout b.5, n2400, (254, $C0) ' tweede regel van display
serout b.5, n2400, (8, "Preset 1", 9)
lage 0, 1, 2, 3
hoge 0
onderbreken van 100
hoog 0, 1
onderbreken van 100
hoge 0, 1, 2
onderbreken van 100
hoge 0, 1, 2, 3
onderbreken van 100
lage 0
onderbreken van 100
laag 0, 1
onderbreken van 100
lage 0, 1, 2
onderbreken van 100
lage 0, 1, 2, 3
onderbreken van 100
goto Preset1
Preset1:
lage 0, 1, 2, 3
serout b.5, n2400, (254, $80) ' eerste regel van display
serout b.5, n2400, ("Main Menu")
serout b.5, n2400, (254, $C0) ' tweede regel van display
serout b.5, n2400, (8, "Preset 1", 9)
onderbreken van 200
goto Preset1loop
Preset1loop:
Als pinc.7=1 en vervolgens goto Preset1L ' Pin 7 is de 'Left' drukknop
Als pinc.6=1 en vervolgens goto Preset1R ' Pin 6 is de 'Right' drukknop
goto Preset1loop
Preset1R:
onderbreken van 100
Als pinc.7=1 en vervolgens goto Preset1RunText
goto Preset2
Preset1L:
onderbreken van 100
Als pinc.6=1 en vervolgens goto Preset1RunText
goto PresetVU
Preset1RunText:
serout b.5, n2400, (254, $80) ' eerste regel van display
serout b.5, n2400, ("Preset 1")
serout b.5, n2400, (254, $C0) ' tweede regel van display
serout b.5, n2400, ("Pers", 8 "+", 9"4 Menu")
onderbreken van 200
goto Preset1Run
Preset1Run:
lage 0, 1, 2, 3
hoge 0
Als pinc.6=1 en pinc.7=1 dan goto Preset1
ReadADC c.0, b5
pauze b5
hoog 0, 1
hoge 0, 1, 2, 3
Als pinc.6=1 en pinc.7=1 dan goto Preset4
ReadADC c.0, b5
pauze b5
lage 0, 1, 2, 3
hoog 1, 2
Als pinc.6=1 en pinc.7=1 dan goto Preset4
ReadADC c.0, b5
pauze b5
lage 0, 1, 2, 3
hoog 0, 3
Als pinc.6=1 en pinc.7=1 dan goto Preset4
ReadADC c.0, b5
pauze b5
lage 0, 1, 2, 3
hoge 0, 1, 2, 3
Als pinc.6=1 en pinc.7=1 dan goto Preset4
ReadADC c.0, b5
pauze b5
goto Preset4Run
PresetVU:
lage 0, 1, 2, 3
serout b.5, n2400, (254, $80) ' eerste regel van display
serout b.5, n2400, ("Main Menu")
serout b.5, n2400, (254, $C0) ' tweede regel van display
serout b.5, n2400, (8,"Music2Lights", van 9)
onderbreken van 200
goto PresetVUloop
PresetVUloop:
Als pinc.7=1 en vervolgens goto PresetVUL
Als pinc.6=1 en vervolgens goto PresetVUR
goto PresetVUloop:
PresetVUR:
onderbreken van 100
Als pinc.7=1 en vervolgens goto VUMeterText
goto Preset1
PresetVUL:
onderbreken van 100
Als pinc.6=1 en vervolgens goto VUMeterText
goto Preset4