Schritt 5: Wie funktioniert es
PROGMEM
Erstens glaube ich, muss was PROGMEM für Anfänger ist. PROGMEM lässt sich die Variablen in den Programmspeicher im Gegensatz zu den dynamischen Speicher oder SRAM zu speichern. Wenn eine Skizze zu viele globale Variablen hat, kann man die Menge von SRAM übertreffen. Wenn das passiert, wird die Skizze wird nicht funktionieren und stürzt ab. Also man kann alle Variablen in den Programmspeicher freien Speicherplatz im SRAM bewegen. Allerdings müssen spezielle Funktionen aufgerufen werden, um die Variablen von Programm-Speicher abrufen. Es ist heikle Angelegenheit und kann manchmal sehr frustrierend sein, aber es ist das beste, was zu tun bei der Arbeit mit sehr langen Arrays um (SRAM) Platz zu sparen. Siehe hier für weitere Details und Beispiele.
Wie funktioniert das Lied:
Um mehrere Töne spielen zu können, Teile ich jedem Schlag in vier kleinere Schläge - die ich genannt habe Mini-Beats. So entspricht jedes Mini Beat aus dem 16. beachten. Diese Mini-Beats fungieren als Zähler für wenn eine Note gespielt werden sollte und wann es - einfach enden sollte. In Wirklichkeit muss der Mini Beat nur den kleinsten Hinweis in das gesamte Stück. Ich entschied mich für ein 16. beachten Sie, da sehr wenige Stücke 32. Noten haben. Ja, haben einige Orchesterstücke 32. Notizen, aber wollen Sie wirklich, die auf einem Arduino zu spielen? In jedem Fall wäre es sehr einfach, es zu 32. Hinweis Mini Beats zu ändern, wenn Sie dies wünschen.
Wie funktioniert die Animation:
Anstatt zu schreiben alle meine benutzerdefinierte Char Arrays in Binär, Oktal oder hex, ist alles im Dezimalformat geschrieben. In der Tat können Sie benutzerdefinierte Zeichen mit Dezimalwerte zwischen 0 und 31 erstellen.
Jetzt sieht der Computer noch die Ganzzahl als Binärwert im Back-End, so mithilfe von Bit-Operationen, die Sie verschieben, können dieser Wert nur greifen eine Teilzeichenfolge Länge fünf davon für die Erstellung von benutzerdefinierten Zeichen verwenden. (Hinweis: jeder Bereich auf dem 16 x 2 LCD ist fünf Pixel breit).
Zum Beispiel: Blick auf meine excel-Tabelle, sagen: ich will die ersten fünf Pixel auf Kk Schieberegler Zeile 0 aus Spalten 12-8. Der Dezimalwert der gesamten Zeile ist 896 - 0001110000000 im binären System. Also wenn ich 896 achtmal nach links verschoben, bekomme 3 - ich 00011 Binär ist.
Haben Sie die oben genannten auf acht Zeilen man genug Daten, um eine benutzerdefinierte Zeichen erstellen. Das ist der Kern von ihm.
Also warum verwenden dezimale Werte? Sie haben nicht wirklich zu, es ist rein für Ästhetik. Eine Reihe von 0 und 1 die Eingabe könnte fahren Sie verrückt und es gibt viel mehr Raum für Fehler. Darüber hinaus nicht ich mag es, eine benutzerdefiniertes Zeichen nehmen so viele Zeilen, also, warum ich nur ein Bild in eine einzelne Zeile zu stopfen. Wenn Sie binäre Werte benutzten wäre jede Zeile super lange zu blättern. So ist es, was auch immer Sie bevorzugen. Zu meiner Überraschung funktioniert meine Skizze tatsächlich so oder so (getestet habe ich es).