Stap 12: Kaart van de LED 's
Deze stap toont hoe te genereren van een lijst met de fysieke posities voor de LED-clusters. Als u mijn indeling perfect twee stappen geleden hebt gevolgd, kunt u dit overslaan omdat de tabel voorziet u juiste zitten zal.
Eerst download het bestand PhysicalLoc.h en neem een kijkje op het. Er is een serie genaamd PhysLoc die de vorm aanneemt: [Channel] [ClusterNumber] = {X, Y}. Kanaal is het uitvoerkanaal van de microcontroller board demultiplexed SPI output. ClusterNumber is de volgorde waarin de RGB LED clusters in de keten van WS2803s zijn gerangschikt. De eerste van RGB-cluster op het bord die zich het dichtst bij de microcontroller is 0.
X, Y is de coördinaten van het RGB-cluster op de hex grid.
Er zijn eigenlijk drie versies van de PhysLoc matrix in PhysicalLoc.h maar ze worden gescheiden door de precompiler macro's #if zijde links, #if kant == == recht, #if kant == FRONT. Je moet alle drie arrays invullen. Links en rechts zijn vanuit het perspectief van een renner in de rug zitten.
Zeshoekige rasters kunnen nemen even wennen als je alleen vertrouwd met Cartesiaanse rasters. Ik ben met behulp van een puntige bekroond axiale hex coördinatensysteem. Het is alsof de Cartesische grid, behalve de Y-as is schuin in de hoek van 60 graden. Hier is een uitstekende uitleg van hoe dat werkt: redblobgames.com/grids/hexagons/#coordinates.
Gebruik een droge wissen marker en label elke van de zeshoeken op het winkelwagentje volgens de twee diagrammen geboden. Gebruik hetzelfde patroon voor zowel de linker- en rechterkant.
Download RaveCart_MappingHelper.zip. Dit bevat C-code en de dossiers van het project van de MPLABX. Het compileren van de code en het programma één van uw PIC18F4550s. De code zal een LED-cluster zet witte tegelijk maken. De rest zal zijn uitgeschakeld. Het begint bij channel0 cluster0 dan klimt naar cluster 119 (de laatste RGB-cluster van de 20e bestuur). Hierna begint het proces weer op Kanaal1, enzovoort. U hebben waarschijnlijk niet 20 platen in een keten, dus er geen clusters geactiveerd voor een tijdje aan het einde van elke scan kanaal zullen. Er is een tien seconden vertraging tussen het verplaatsen naar de volgende cluster. Gebruik deze tijd om te registreren de coördinaten die u schreef op het verlichte cluster in de PhysLoc array.
Bijvoorbeeld als de eerste drie RGB-clusters die op de linkerzijde oplichten [1,14] [1,13], [2,13] de PhysLoc array zou beginnen als volgt:
#if kant == links
{{{1, 14},
{1, 13},
{2,13},
Als een cluster niet oplichten omdat het niet kon worden geplaatst achter een gat zetten {leeg, lege} in zijn veld. Dit vertelt de verlichting patroon code om te weren van dat cluster. Geef op de laatste cluster van elk kanaal {END, einde}. dwz als een kanaal acht platen heeft je {END, einde} bij index 48 omdat 6 * 8 = 48.
Vul ook de ChanLength array. Dit is acht cijfers die aangeeft hoeveel clusters zijn in elk van de acht kanalen.