Ich mache einen POV-RGB-LED-Globus, der Animationen auf seiner Oberfläche abspielt. Derzeit verwende ich einen Arduino Mega 2560 mit 256 KB Flash-Speicher. Mein Programm und der Bootloader belegen 20 KB Speicher, sodass ich 236 KB habe.
Es gibt 64 RGB-LEDs mit 8 Bit Helligkeit, die 64 Mal pro Umdrehung die Farbe ändern. $\left( 64 \cdot 64 \cdot 3 \cdot 8 \right) \div 1024 = 12\mbox{ kB}$ == 12288 BYTES
Jeder Animationsframe benötigt 12288 BYTES (12k) Speicher. Damit bleiben mir nur 19 Animationsframes. Gut, aber nicht großartig, bei 10 Bildern pro Sekunde sind das nur 2 Sekunden Animation. Ich hatte auf ~64 Animationsframes oder 768k RAM gehofft. (768+20=788k insgesamt)
Ich habe einige Lade- und Dampfmethoden (SD, Wireless) ausprobiert, aber sie können nicht mit den erforderlichen Daten Schritt halten, während die Daten zu den LEDs gestreamt werden. Ich werde als nächstes versuchen, eine einfache Komprimierungsmethode zu verwenden, aber ich habe keine großen Hoffnungen, dass das System in der Lage sein wird, die Daten zu dekomprimieren, während die Farbinformationen zu den LEDs gedämpft werden.
Ich habe derzeit 10 Animationsframes mit dem Arduino Mega 2560 getestet und es funktioniert. Irgendwie gibt es noch ein paar Bugs. Aber ich möchte ein Arduino-Board nicht wirklich ausschalten, wenn ich es vermeiden kann.
Meine Fragen sind:
Vielen Dank für Ihre Zeit.
Bearbeiten: Ich verwende das Schlüsselwort "PROGMEM", um meine Animationen im Flash-Speicher und nicht im SRAM zu speichern. http://www.arduino.cc/playground/Learning/Memory
Versuchen Sie es mit einem I2C-SRAM-Chip.
Vielleicht passt ein 256 kbit N256S0830HDA @ 3V von AMI: http://www.modtronix.com/products/components/ram/n256s0830hda.pdf
Siehe http://arduino_related.livejournal.com/1414.html für ein Tutorial.
Datenkomprimierung kann eine Option sein. Sie benötigen wahrscheinlich nicht jede Iteration des Datensatzes 255/255/255. Selbst das Festhalten an 256 Farben wäre mehr als genug für das, was Sie versuchen.
Dann benötigt jede LED nur 1 Byte an Informationen, um ihre Helligkeitseinstellung zu speichern, wodurch sich die Anzahl der verfügbaren Frames auf 57 erhöht, was ziemlich nahe an den 64 liegt, nach denen Sie gesucht haben.
Wenn genügend E/A-Pins übrig sind, können Sie versuchen, den SRAM-Chip anzuschließen und manuell zu steuern. Sie könnten versuchen, zusätzliche Latches zum Speichern der Adresse zu verwenden, um denselben Satz von Pins für Daten- und Adressbusse wiederzuverwenden (z. B. MCS-51-basierte Systeme verwendeten 74HCT373, um den unteren Teil des Adressbusses zu speichern, siehe hier ) . Dieser Ansatz sollte im Vergleich zu I2C-SRAM-Chips schnellere Datenübertragungen ermöglichen.
Beachten Sie, dass der Speicher in der von Ihnen benötigten Größe höchstwahrscheinlich in einem TSOP-Paket oder ähnlichem geliefert wird.
Sie können den adressierbaren RAM nicht wirklich erweitern; Der Chip hat alles, was er in sich hat, und weist keinen Speicherbus nach außen auf. Sie könnten ein SD-Schild wie dieses hinzufügen und es als Solid-State-Festplatte verwenden, ähnlich wie Sie es jetzt mit dem integrierten Flash tun.
Einige Leute verwenden mehrere Arduinos (oder andere Prozessoren), von denen jeder einen kleinen Abschnitt einer LED-Anzeige betreibt.
Zum Beispiel könnten Sie vielleicht 8 Arduinos verwenden, von denen jeder für 8 RGB-LEDs Ihrer insgesamt 64 RGB-LEDs verantwortlich ist. (Während mehr Arduino Megas funktionieren würden, eröffnet dies auch die Möglichkeit, kleinere, leichtere und kostengünstigere Arduinos zu verwenden, wie z. B. den Arduino Pro Mini, der weitaus weniger Pins als der Arduino Mega hat).
Auf diese Weise können Sie Ihr Display auf eine beliebige Anzahl von LEDs skalieren, weit mehr, als ein Arduino handhaben könnte.
Kevin Vermeer
Kevin Vermeer
Steven Smethurst
Kevin Vermeer
$
Zeichen, um die LaTeX-Formatierung aufzurufen. Mir fehlt jedoch der Punkt, an dem Sie mit drei multiplizieren müssen - Haben Sie 8 Bit für jede Farbe der RGB-LEDs?Steven Smethurst
posit
davidcary