Darth Maul LED ljus sabel (4 / 5 steg)
Steg 4: Programmering PIC
Fina med programmering av Picaxe är minimal mängden pengar du behöver för att komma in med dem och enkelheten i språket. För mitt program jag använde ca 1/2 dussin grundläggande kommandon. Experter kan förmodligen göra mer för mindre men jag är en hacka och få ett resultat som passar mig! För att programmera chip själv behöver du ett chip (uppenbarligen) en nedladdning kabel - seriell eller parallell du kan även göra seriell dig själv nästan ingenting, också du behöver fri programmering programvara på webbplatsen Picaxe.Picaxe jag använde var en 18 X, detta chip har 9 utgångsstift och 5 ingång stift och kan rymma upp till 600 rader kod. Vid detta skede jag bara göra använda av 6 produktionen stift. 5 att köra lysdioder och 1 för att aktivera och inaktivera klanggeneratorns. I ett senare skede jag kunde bryta lampa upp till 8 block för en högre upplösning, minns min darlington föraren kan köra upp till 8 utgångar samtidigt. Eller alternativt jag kunde göra bladet 4 block (som ett annat märke) och kontrollera varje blad individuellt
Så sagt och gjort jag kan ganska mycket göra bladen ljus upp och ner med ca 20 rader kod. Så hur är de andra 580? Detta verkar slöseri så jag har lagt till några extra lägen 1. Normal-läge, 2. Normal-läge låter inte 3. Nattläge Rider 5. Gris-läge. Om du vill ändra lägen som du håller ned knappen i 5 sekunder saber blinkar två gånger för att beteckna program-läge och beroende på hur många gånger träffar du knappen med i 5 sekunder dikterar ditt nya läge. Om du inte trycker på knappen eller tryck på den återgår för många gånger det till normalt läge.
Här är koden som jag har börjat med ändå...
B5 = % 00000001' Intiallise saber läge variabel
B1 = 0' Intialise läge ändra variabel
B0 = 0' inte säker på varför jag gjorde detta
B2 = 1' Set standardläget till Saber normal
Låt stift = % 00100000' uppsättning stift 6 hög, låg vänder på ljudmodulen
Reset: "återställer alla stift efter en lägesändring
Låt stift = % 00100000
Pausa 100
goto loop
slinga: "viktigaste loop kontroll knappen
om pin2 = 0 då läget??? hoppa till flsh om pin0 är hög
goto loop
läge:
om b1 > 5 då mode_change ' om räknaren är på 5 goto lägesändring
Pausa 20
om pin2 = 1 då bestämma "om växeln upp goto Välj ett
om pin2 = 0 då count_t ' goto counter
count_t: "den här räknaren räknas till fem
Pausa 10
B1 = b1 + 1
goto-läge
mode_change: "blinkar saber två gånger för att ange att lägesändring
B2 = 0
Låt stift = % 00111111
Pausa 300
Låt stift = % 00100000
Pausa 300
Låt stift = % 00111111
Pausa 300
Låt stift = % 00100000
Pausa 300
count 2, 5000, b2 "räknar bush knappåtgärder med i 5 sekunder och lagrar detta i b2
Låt stift = % 00111111
Pausa 300
Låt stift = % 00100000
Pausa 300
B1 = 0
goto loop
Bestäm dig: ' beslut beroende på värdet i b2
B1 = 0
om b2 = 1 sedan sabel
om b2 = 2 sedan silent_saber
om b2 = 3 då Knight_rider
om b2 = 4 då svin
om b2 > 4 sedan saber
om b2 < 1 sedan saber
goto loop
Saber: "grundläggande saber läge
B1 = 0
om b5! = % 00000001 sedan p_down
om b5 = % 00000001 sedan p_up
goto loop
p_up:
Låt stift = % 00110000
Pausa 200
Låt stift = % 00010000
Pausa 100
Låt stift = % 00011000
Pausa 100
Låt stift = % 00011100
Pausa 100
Låt stift = % 00011110
Pausa 100
Låt stift = % 00011111
B5 = % 00000000
goto loop
p_down:
Låt stift = % 00111111
Pausa 200
Låt stift = % 00011111
Pausa 400
Låt stift = % 00011111
Pausa 100
Låt stift = % 00011110
Pausa 100
Låt stift = % 00011100
Pausa 100
Låt stift = % 00011000
Pausa 100
Låt stift = % 00010000
Pausa 100
Låt stift = % 00000000
B5 = % 00000001
goto loop
silent_saber: "säger allt egentligen
B1 = 0
om b5! = % 00000001 sedan p_down_s
om b5 = % 00000001 sedan p_up_s
goto loop
p_up_s:
Låt stift = % 00110000
Pausa 100
Låt stift = % 00111000
Pausa 100
Låt stift = % 00111100
Pausa 100
Låt stift = % 00111110
Pausa 100
Låt stift = % 00111111
B5 = % 00000000
goto loop
p_down_s:
Låt stift = % 00111111
Pausa 100
Låt stift = % 00111110
Pausa 100
Låt stift = % 00111100
Pausa 100
Låt stift = % 00111000
Pausa 100
Låt stift = % 00110000
Pausa 100
Låt stift = % 00100000
B5 = % 00000001
goto loop
Knight_rider:
om pin2 = 0 sedan återställa
Låt stift = % 00100000
Pausa 100
Låt stift = % 00110000
Pausa 100
Låt stift = % 00101000
Pausa 100
Låt stift = % 00100100
Pausa 100
om pin2 = 0 sedan återställa
Låt stift = % 00100010
Pausa 100
Låt stift = % 00100001
Pausa 100
Låt stift = % 00100010
om pin2 = 0 sedan återställa
Pausa 100
Låt stift = % 00100100
Pausa 100
Låt stift = % 00101000
Pausa 100
Låt stift = % 00110000
om pin2 = 0 sedan återställa
gå till Knight_rider
svin:
om pin2 = 0 sedan återställa
Låt stift = % 00100000
Pausa 100
Låt stift = % 00110000
Pausa 100
Låt stift = % 00101000
Pausa 100
Låt stift = % 00100100
Pausa 100
om pin2 = 0 sedan återställa
Låt stift = % 00100010
Pausa 100
Låt stift = % 00100001
om pin2 = 0 sedan återställa
gå till svin
Till slut jag tror det skulle vara häftigt att använda en mikrofon eller något och använda saber som en VU-meter - ta på tri colour lysdioder!