Stap 5: Hoe het werkt
PROGMEM
Eerst, ik denk dat ik nodig om te pakken wat PROGMEM is voor beginners. PROGMEM is een manier voor het opslaan van variabelen in het programmageheugen in tegenstelling tot de dynamische geheugen of SRAM. Als een schets teveel globale variabelen heeft, kan men de hoeveelheid SRAM overtreffen. Wanneer dat gebeurt, wordt de schets zal niet werken en zal verpletteren. Dus men mag alle variabelen naar het programmageheugen aan vrije omhooggaande ruimte binnen SRAM overbrengen. Speciale functies moeten echter worden opgeroepen om op te halen van de variabelen van programma geheugenruimte. Het is een lastige zaak en kan zeer frustrerend soms, maar het is het beste ding om te doen wanneer u werkt met zeer lange arrays om (SRAM) ruimte te besparen. Zie hier voor meer details en voorbeelden.
De werking van het liedje:
Om te spelen meerdere tinten, verdeel ik elke hartslag in vier kleinere beats - die ik genoemd mini beats. Elke mini hartslag is dus gelijk aan een 16e opmerking. Deze mini beats fungeren als de teller voor wanneer een opmerking moet worden gespeeld en wanneer het zou eindigen - simpel. In werkelijkheid moet de mini beat net de kleinste opmerking binnen het hele stuk. Ik koos voor een 16e opmerking omdat zeer weinig stukken 32e notities hebt. Ja, sommige stukken orkest 32e notities hebt, maar wil je echt te spelen die op een arduino? In ieder geval zou het heel gemakkelijk om het te veranderen naar 32e Opmerking mini beats als u zo wenst.
Hoe werkt de animatie:
In plaats van schrijven alle van mijn aangepaste character char arrays in binair, octaal of hex, alles is geschreven in decimale notatie. In feite kunt u aangepaste char met decimale waarden tussen 0-31.
Nu de computer nog steeds ziet het gehele getal als binaire waarde in de back-end, zodat met behulp van de bit operaties u kunt verschuiven die waarde om gewoon pak een lengte vijf substring van het te gebruiken voor het creëren van aangepaste char. (Opmerking: verschillende deelvensters op de 16 x 2 LCD is vijf pixels breed).
Bijvoorbeeld: kijken naar mijn excel-spreadsheet, zeggen: ik wil de eerste vijf pixels op kk schuifregelaar op rij 0 uit kolommen 12-8. De decimale waarde voor de gehele rij is 896 - 0001110000000 in binary. Dus als ik 896 achtmaal naar links verschuiven, krijgt ik 3 - oftewel 00011 binair.
Doen de bovenstaande op acht totaalrijen om genoeg gegevens om het maken van een aangepaste char. Dat is de kern van het.
Dus Hoezo decimale waarden? U eigenlijk niet moet, het is puur voor esthetiek. Te typen van een bos van 0 en 1's kon rijden je gek en er is veel meer ruimte voor fouten. Bovendien, ik houd niet met een aangepaste char nemen zoveel rijen, dus dat is waarom ik proppen slechts één afbeelding in één rij. Als u binaire waarden is elke rij zou super lange om door te bladeren. Dus het is wat je liever. Tot mijn verbazing werkt mijn schets eigenlijk bakboord (ik getest).