PICAXE - musik lyhörda, dimma producerar, LED Light Show och Audio förstärkare i ett (5 / 12 steg)
Steg 5: Elektronik - programmering
Själva programmet är skrivet i programmeringsspråket "Grundläggande" och i princip tillåter chip att ta ljud "knackade bort" från förstärkaren genom en diod och konvertera den till ett digitalt värde med marker 'Analog till DC' (ADC) omvandlare förmåga, chip sedan använder det här värdet i kombination med 2 av potentiometrar används för "LED ljusstyrka" och "LED Sensitivity" genom en matematisk formel att besluta hur många lysdioder till ljus upp ståndpunkter , detta leder lysdioder som "dansar" i takt med musiken beroende av "makt" av musik på den punkten i tid.
Den andra delen av programplaneringen var "Menyn System" som kan nås genom att trycka på båda knapparna samtidigt, detta menyn system tillåts att användaren kan välja mellan 1 av 4 förinställda LED mönster, vars hastighet kan styras av på den kontroll knoppar, och det ursprungliga "musik kontrollerade lysdioder" program att göra enheten användbar även när den inte används som en musik förstärkare.
Nedan är det program jag skrev, jag är relativt ny på Picaxe programmering (i BASIC) så det kan vara enklare och mer minne effektiva sätt att skapa detta program men detta fungerar alldeles utmärkt (text föregås av en apostraphy "anteckningar och inte en del av programmet):
viktigaste:
Pausa 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) "första raden i LCD-skärm
serout b.5, n2400, ("Skärtorsdagens Designs")
serout b.5, n2400, (254, $C0) ' andra linje av LCD-skärm
serout b.5, n2400, ("presenterar... ")
Pausa 250
hög 0
Pausa 250
hög 0, 1
Pausa 250
hög 0, 1, 2
Pausa 250
hög 0, 1, 2, 3
Pausa 500
låga 0
Pausa 250
lågt 0, 1
Pausa 250
låg 0, 1, 2
Pausa 250
låg 0, 1, 2, 3
gå till VUMeterTextVUMeterText:
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("musik till ljus!")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, ("Press", 8, "+", 9,"4 menyn")
gå till VUMeterVUMeter:
om pinc.7 = 1 då
gå till PresetsFlashQ
annat
readadc c.1, b1 "PIN-kod c.1 är ljudingången från förstärkare kretsen
readadc b.7, b2 "pin b.7 är Potentiometer"LED Sensitivity"
readadc c.0, b3 ' pin c.0 är Potentiometer "LED ljusstyrka"
Låt b2 = b2/20
Låt b3 = 255 - b3
om b3 < = 127 då
Låt b3 = 127 - b3
Låt w4 = b3 * 15
Låt w3 = b2 * b1-w4
annat
Låt b3 = b3 - 128
Låt w4 = b3 * 15
Låt w3 = b2 * b1 + w4
endif
om w3 > 4000 sedan
Låt w3 = 0
endif
om w3 > 600 sedan fyra
om w3 > 450 sedan tre
om w3 > 300 sedan två
om w3 > 150 då en
om w3 < = 150 sedan noll
endif
gå till VUMeterZero:
låg 0, 1, 2, 3
gå till VUMeteren:
låg 0, 1, 2, 3
hög 0
gå till VUMetertvå:
låg 0, 1, 2, 3
hög 0, 1
serout b.5, n2400, (254, $C0)
gå till VUMetertre:
låg 0, 1, 2, 3
hög 0, 1, 2
serout b.5, n2400, (254, $C0)
gå till VUMeterfyra:
låg 0, 1, 2, 3
hög 0, 1, 2, 3
serout b.5, n2400, (254, $C0)
gå till VUMeterPresetsFlashQ:
om pinc.6 = 1 då
gå till PresetsFlash
annat
gå till VUMeter
endifPresetsFlash:
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Huvudmeny")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, (8, "Preset 1", 9)
låg 0, 1, 2, 3
hög 0
Pausa 100
hög 0, 1
Pausa 100
hög 0, 1, 2
Pausa 100
hög 0, 1, 2, 3
Pausa 100
låga 0
Pausa 100
lågt 0, 1
Pausa 100
låg 0, 1, 2
Pausa 100
låg 0, 1, 2, 3
Pausa 100
gå till Preset1Preset1:
låg 0, 1, 2, 3
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Huvudmeny")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, (8, "Preset 1", 9)
Pausa 200
gå till Preset1loop
Preset1loop:
om pinc.7=1 sedan goto Preset1L "Pin 7 är på"Vänster"-knappen
om pinc.6=1 sedan goto Preset1R "Pin 6 är på"Rätt"-knappen
gå till Preset1loop
Preset1R:
Pausa 100
om pinc.7=1 sedan goto Preset1RunText
gå till Preset2
Preset1L:
Pausa 100
om pinc.6=1 sedan goto Preset1RunText
gå till PresetVU
Preset1RunText:
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Preset 1")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, ("Press", 8, "+", 9,"4 menyn")
Pausa 200
gå till Preset1Run
Preset1Run:
låg 0, 1, 2, 3
hög 0
om pinc.6=1 och pinc.7=1 sedan goto Preset1
readadc c.0, b5
Pausa b5
hög 0, 1
om pinc.6=1 och pinc.7=1 sedan goto Preset1
readadc c.0, b5
Pausa b5
hög 0, 1, 2
om pinc.6=1 och pinc.7=1 sedan goto Preset1
readadc c.0, b5
Pausa b5
hög 0, 1, 2, 3
om pinc.6=1 och pinc.7=1 sedan goto Preset1
readadc c.0, b5
Pausa b5
låga 0
om pinc.6=1 och pinc.7=1 sedan goto Preset1
readadc c.0, b5
Pausa b5
lågt 0, 1
om pinc.6=1 och pinc.7=1 sedan goto Preset1
readadc c.0, b5
Pausa b5
låg 0, 1, 2
om pinc.6=1 och pinc.7=1 sedan goto Preset1
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
om pinc.6=1 och pinc.7=1 sedan goto Preset1
readadc c.0, b5
Pausa b5
om pinc.6=1 och pinc.7=1 sedan goto Preset1
gå till Preset1Run
Preset2:
låg 0, 1, 2, 3
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Huvudmeny")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, (8, "förinställd 2", 9)
Pausa 200
gå till Preset2loop
Preset2loop:
om pinc.7=1 sedan goto Preset2L
om pinc.6=1 sedan goto Preset2R
gå till Preset2loop
Preset2R:
Pausa 100
om pinc.7=1 sedan goto Preset2RunText
gå till Preset3
Preset2L:
Pausa 100
om pinc.6=1 sedan goto Preset2RunText
gå till Preset1
Preset2RunText:
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Preset 2")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, ("Press", 8, "+", 9,"4 menyn")
Pausa 200
gå till Preset2Run
Preset2Run:
låg 0, 1, 2, 3
hög 0
om pinc.6=1 och pinc.7=1 sedan goto Preset2
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 1
om pinc.6=1 och pinc.7=1 sedan goto Preset2
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 2
om pinc.6=1 och pinc.7=1 sedan goto Preset2
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 3
om pinc.6=1 och pinc.7=1 sedan goto Preset2
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 2
om pinc.6=1 och pinc.7=1 sedan goto Preset2
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 1
om pinc.6=1 och pinc.7=1 sedan goto Preset2
readadc c.0, b5
Pausa b5
gå till Preset2Run
Preset3:
låg 0, 1, 2, 3
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Huvudmeny")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, (8, "Preset 3", 9)
Pausa 200
gå till Preset3loop
Preset3loop:
om pinc.7=1 sedan goto Preset3L
om pinc.6=1 sedan goto Preset3R
gå till Preset3loop
Preset3R:
Pausa 100
om pinc.7=1 sedan goto Preset3RunText
gå till Preset4
Preset3L:
Pausa 100
om pinc.6=1 sedan goto Preset3RunText
gå till Preset2
Preset3RunText:
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Preset 3")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, ("Press", 8, "+", 9,"4 menyn")
Pausa 200
gå till Preset3Run
Preset3Run:
låg 0, 1, 2, 3
hög 0
om pinc.6=1 och pinc.7=1 sedan goto Preset3
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 2
om pinc.6=1 och pinc.7=1 sedan goto Preset3
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 1
om pinc.6=1 och pinc.7=1 sedan goto Preset3
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 3
om pinc.6=1 och pinc.7=1 sedan goto Preset3
readadc c.0, b5
Pausa b5
gå till Preset3Run
Preset4:
låg 0, 1, 2, 3
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Huvudmeny")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, (8, "förinställd 4", 9)
Pausa 200
gå till Preset4loop
Preset4loop:
om pinc.7=1 sedan goto Preset4L
om pinc.6=1 sedan goto Preset4R
gå till Preset4loop
Preset4R:
Pausa 100
om pinc.7=1 sedan goto Preset4RunText
gå till PresetVU
Preset4L:
Pausa 100
om pinc.6=1 sedan goto Preset4RunText
gå till Preset3
Preset4RunText:
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Preset 4")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, ("Press", 8, "+", 9,"4 menyn")
Pausa 200
gå till Preset4Run
Preset4Run:
låg 0, 1, 2, 3
hög 0, 3
om pinc.6=1 och pinc.7=1 sedan goto Preset4
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 1, 2
om pinc.6=1 och pinc.7=1 sedan goto Preset4
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 0, 1, 2, 3
om pinc.6=1 och pinc.7=1 sedan goto Preset4
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 1, 2
om pinc.6=1 och pinc.7=1 sedan goto Preset4
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 0, 3
om pinc.6=1 och pinc.7=1 sedan goto Preset4
readadc c.0, b5
Pausa b5
låg 0, 1, 2, 3
hög 0, 1, 2, 3
om pinc.6=1 och pinc.7=1 sedan goto Preset4
readadc c.0, b5
Pausa b5
gå till Preset4Run
PresetVU:
låg 0, 1, 2, 3
serout b.5, n2400, (254, $80) "första raden i displayen
serout b.5, n2400, ("Huvudmeny")
serout b.5, n2400, (254, $C0) ' andra raden i displayen
serout b.5, n2400, (8,"Music2Lights", 9)
Pausa 200
gå till PresetVUloop
PresetVUloop:
om pinc.7=1 sedan goto PresetVUL
om pinc.6=1 sedan goto PresetVUR
gå till PresetVUloop:
PresetVUR:
Pausa 100
om pinc.7=1 sedan goto VUMeterText
gå till Preset1
PresetVUL:
Pausa 100
om pinc.6=1 sedan goto VUMeterText
gå till Preset4