muss aktuell mit "dynamischen Arrays" arbeiten und wollte dafür Vectoren nutzen. Hierfür habe ich die ArduinoSTL.h heruntergeladen und eingebunden. Leider funktioniert etwas nicht. Auch mit originalen Beispielen von GitHub nicht.
Fehlermeldung:
new.cpp.o (symbol from plugin): In function operator new(unsigned int)': (.text+0x0): multiple definition of std::nothrow'
C:\Users\Benutzer1\AppData\Local\Temp\arduino\sketches\BD8D9BE6C55A8A20A0D2FB98CE3C19A3\libraries\Arduino_AVRSTL\new_handler.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Compilation error: exit status 1
Scheinbar ist da irgendwie eine Mehrfachverwendung. Was kann ich tun?
Hast du eine andere Idee, wie ich in eine Variable X, Elemente aus unterschiedlichen Arrays laden kann? Diese müssen dort zwischengespeichert und verglichen werden. Die Größe(Anzahl der Elemente) variiert, je nach dem welche Arrays benutzt wurden.
Es wären ca. 3 Vectoren, mit bis zu ca. 20 Elementen.
je nach Situation werden unterschiedliche Kombinationen von Arrays ausgegeben. Derzeit wird immer die komplette Ausgabe aktualisiert, was unschön ist. Ich möchte erreichen, dass nur die Elemente, die neu sind, geladen, und nur der Teil der alten ist, gelöscht wird. Also muss die Ausgabe, vor jedem Laden, in einem Array(oder ähnlichem), zum vergleich, zwischengespeichert werden. In einem zweiten Array werden die neuen Elemente geladen und mit dem ersten, auf neu und alt, verglichen.
In diesem Fall geht es um den LED-Strip WS2812b. Vor jeder neuen Ausgabe werden die LED´s gelöscht - pixels.clear()(pixels.fill() ist nicht besser) und die neue Kombination angesteuert. Die Idee wäre, wenn das herausfiltern klappt, die nicht mehr gebrauchten LED´s raus- und die neuen reinzudimmen.
es geht um byte Datentyp und immer im Wechsel neue Werte speichern und danach wieder auslesen?
Wenn du immer die zuletzt nicht gelesenen Werte nutzt, sollte das mit Ringbuffer funktionieren. Gelesen werden immer alle Werte die vorher noch nicht gelesen wurden. Die letzte Schreibposition und die letzte Leseposition rückt immer nach.
Oder mit Array, du weißt ja bestimmt wieviel Werte du neu reingeschrieben hast. Soviel liest du auch wieder aus. Merkst dir also die höchste Indexposition beim schreiben.
So häufig wie du den Begriff Array verwendest, drängt sich der Verdacht auf, dass du eventuell etwas anderes suchst
ArduinoSTL zum Laufen kriegen ist evtl. eine andere Aufgabe als einen WS2812b-Strip anzusteuern.
So ein Strip hat eine feste Anzahl von Pixeln, die immer alle ( auch die aktuell unbenutzten ) angesteuert werden. Und dazu wird ein traditionelles Array benutzt.
Muss ich den Befehl pixels.claer() aber nicht vor der nächsten Ausgabe schicken? Sonst leuchten doch, wenn ich nicht irre, auch die alten LED´s weiter.
Taste 1, 2, 3,´4 ,5.... -> unterscheidliche Kombinationen. Überschneiden sich Arrays auf den jeweiligen Tasten, sollen die LED´s, die wieder geladen werden würden, nicht ausgehen, die, die nicht in der neuen Kombination sind, sollen runtergedimmt werden und die neuen sollen aufdimmen.