Hey liebes Forum,
ich habe eine Frage zu meinem Programm, in dem ich folgendes realisieren will.
Ich benutze einen Arduino Nano 3 Streifen und 2 Button.
Mit einem Button will ich den Streifen 1 einschalten und Programme wechseln.
Mit dem zweiten Button möchte ich gerne den Streifen 2 einschalten und Programme wechseln. Aktuell sind diese Programme zwar gleich, jedoch möchte ich das mit der Zeit ändern und das Prinzip verstehen.
Wenn beiden Button gleichzeitig gedrückt werden möchte ich gerne den 3 Streifen, der nur aus 2 einzelnen Pixeln besteht, einschalten bzw auch hier die Programme ändern.
Die Einstellung der Helligkeit erfolgt über das Programm, falls das jedoch auch möglich ist, wäre es super wenn man die Helligkeit durch langes drücken (3-5s) der Button verändern könnte.
Ich habe keine wahnsinnige Erfahrung mit Programmieren und habe hierfür mich durch verschieden Tutorials, Videos und Internetseiten mal durchgeschlagen und habe folgendes erschaffen. Mir ist aufgefallen das ich manches doppelt bzw Zuviel habe und auch unnötiger weise die Namensgebung geändert habe. Allerdings lasse ich das mal so zur Übersicht damit ich weiß was wofür ist. Ich denke das ich in den Button, Case Funktionen einen Fehler habe.
Wäre super wenn mir da jemand weiterhelfen könnte. Vielen lieben Dank.
Warum packst Du nicht alle Stripes zusammen, erstellst nur eine Instanz und setzt eben nur die Pixel, Die Du gerade sehen willst?
Ggf. musst Du Da mit Offsets arbeiten, da Dein jetziger 2.ter Stripe eben nicht bei LED 0 anfängt, sondern erst bei LED 2
Stripe 1 Augen (0 & 1)
Stripe 2 Innen (2-84)
Stripe 3 Außen (85-136) - wenn ich mich nicht verrechnet habe
Warum hast Du die drei Bereiche in setup() eingeklammert?
Wenn Du in loop() bei jedem Durchlauf neue Daten in den EEprom schreibst, wird Dieser nicht sonderlich lange halten (Schreibzyklen siehe Datenblatt des verwendeten AVR).
Wenn Du so was vorhast, suche Mal nach FRAM - beliebig schnell beschreibbar, Datenerhalt bei Spannungsverlust, I²C-Version pinkompatibel zum I²C-EEprom (z.B. auf diversen RTC) - als DIP immerhin mit 512 BYTE (4kb = Kilo-BIT ... durch 8 = 0,5KB oder 512 Byte).
Als SOP8 mit 256kb = 32kB (da stümpere ich aber noch an meinen Adapter-Platinen rum - SMD ist Nichts für mich).
Drücke Mal STRG+T in der IDE - Das rückt den Code sinnig ein - lässt sich dann besser lesen und man findet einfacher Klammer-Fehler.
uxomm:
Könnte schwierig sein - der Code hat deutlich mehr als 1000 Zeilen und fast 30 000 Zeichen...
Wovon aber die unnötigen Leerzeilen schon alleine 756 ausmachen
Hab mir gerade mal den Spaß gemacht, und die entfernt (allerdings waren das nicht alle, um die Lesbarkeit nicht zu zerstören, also ca 50 Stück warem zu Schluss noch drin)
Hey zunächst einmal vielen Lieben Dank an alle die ihre Ideen und Vorschläge geschrieben haben bzw die sich die Mühe gemacht haben mein Programm anzuschauen. Leider habe ich das immer noch nicht zum laufen gebracht, ich habe mir nun auch ein Buch bestellt das mir hoffentlich die Lösung verrät. Bin weiterhin am probieren und werde mich wieder melden, wenn ich es hinbekommen habe.