LED Rave Solar Shopping Cart trehjuling (12 / 35 steg)
Steg 12: Mappa lysdioderna
Detta steg visar hur man skapar en tabell med fysiska positioner för LED-kluster. Om du följde min layout perfekt två steg sedan kan du hoppa över detta eftersom tabellen enligt dig kommer att vara korrekt.
Först hämta filen PhysicalLoc.h och ta en titt på den. Det finns en rad som heter PhysLoc som tar form: [Channel] [ClusterNumber] = {X, Y}. Kanalen är utkanalen från mikrokontroller styrelsens demultiplexed SPI utdata. ClusterNumber är den ordning som de RGB LED kluster är ordnade i kedjan av WS2803s. Först av RGB kluster i styrelsen närmast mikrokontroller är 0.
X, Y är koordinaterna för RGB klustret på hex nätet.
Det finns faktiskt tre versioner av matrisen PhysLoc i PhysicalLoc.h men de är åtskilda av förkompilator makron #if sidan == vänster, #if sidan == höger, #if sidan == FRONT. Du kommer att behöva fylla i alla tre matriser. Vänster och höger är ur en ryttare som sitter i ryggen.
Hexagonalt nät kan ta tag att vänja sig om du bara bekant med kartesiska rutnät. Jag använder ett spetsiga toppad axiella hex koordinatsystem. Det är som kartesiska nätet, utom Y-axeln är lutad i 60 grader vinkel. Här är en utmärkt förklaring av hur det fungerar: redblobgames.com/grids/hexagons/#coordinates.
Använd en torr radera markör och etikett av hexagoner på kundvagn enligt de två diagram som tillhandahålls. Använda samma mönster för både vänster och höger sida.
Ladda ner RaveCart_MappingHelper.zip. Detta innehåller C-kod och MPLABX projektfiler. Kompilera koden och programmet en av dina PIC18F4550s. Koden kommer att göra ett LED kluster tur vitt i taget. Resten kommer att vara avstängd. Det börjar vid channel0 cluster0 sedan går upp till klustret 119 (det sista RGB klustret av 20 styrelsen). Efter detta startar processen igen på channel1 och så vidare. Du har förmodligen inte 20 styrelser i en kedja, så det blir inga kluster aktiveras ett tag i slutet av varje kanal skanning. Det finns en tio sekunders fördröjning mellan flyttar till nästa klustret. Använda denna tid att spela in de koordinater du skrev på det belysta klustret i matrisen PhysLoc.
Till exempel om de tre första RGB kluster som lyser upp på vänster sida är [1,14] [1,13], [2,13] arrayen PhysLoc skulle börja så här:
#if sidan == vänster
{{{1, 14},
{1, 13},
{2,13},
Om ett kluster inte lysa upp eftersom det inte kunde placeras bakom ett hål satte {tom, Tom} i sitt område. Detta säger belysning mönster koden att hålla klustret av. Ange {slutet, slutet} på sista klustret för varje kanal. dvs om en kanal har åtta brädor du sätta {slutet, slutet} vid index 48 eftersom 6 * 8 = 48.
Också fylla i matrisen ChanLength. Det här är åtta siffror som anger hur många kluster är i varje av de åtta kanalerna.