hui

jetzt ist mir kurz dezent der Kopf geplatzt... also alles mal der reihe nach versuchen zu erklären..
uint8,16,32 sind alles teile der adafruit liberary, was mich Wochenende auch schon interessierte.
Das sind nur bestimmte Varianten des Integer Datentyps. Das normale int speichert ja einen 16-bit Wert, also von -32,768 to 32,767. Ein unsigned integer (uint) ist auch 16-Bit, lässt aber die negativen Zahlen weg, also mögliche Werte von 0 bis 65,535 (2^16) - 1).
Die Zahlen danach geben die Bittiefe an und das _t am Ende dient nur dazu, dass man es nicht mit Variablen verwechselt.
Diese Dinger sind also einfach nur Datentypen, und der Sinn davon ist die Variablen vom Speicherplatzbedarf anzupassen und nix zu verschwenden.
Bibliotheken lesen:
Im Instalations Ordner der Arduino IDE gibts einen libraries Ordner. Hier findest du alle installierten Bibliotheken. In den Ordnern gibt es dann mindestens 3 Dateien. Einmal die Keywords, die kannst du ignorieren. Die Datei mit der Endung .h beschreibt erst mal grob den Funktionsumfang, und die Datei mit .cpp an Ende die Funktionen im Detail. Jetzt mal am Beispiel der Stepper.h
Mit einem Text Editor, ich empfehle da sehr notepad++ (damit kann man auch super programmieren, bei Sprache einfach C++ einstellen und in der Arduino IDE bei den Einstellungen"externen Editor benutzen" anmachen), erst mal die .h Datei öffnen.
Neben viel Erklärung ist es hier ab Zeile 49 interessant. Hier wird die Klasse Stepper beschrieben. Den Public Teil kannst du nutzen, der Private Teil gehört der Bibliothek und an den kommst du auch nicht ran. In Zeile 52 steht wie der Construktor auszusehen hat (also wie man das Ding initialisiert). Dann kommen danach die Funktionen die der Klasse zur Verfügung stehen. In dem Fall sind das zwei, "setspeed" und "step".
Mit diesem Wissen öffnen wir jetzt die .cpp Datei und suchen danach.
In Zeile 122 finden wir die stepp Funktion wieder. Hier wird jetzt wunderbar mit millis() rumgewurschtelt und Zeitpunkte gespeichert, um herauszufinden ob schon wieder ein Schritt zu tun ist. Hier konnte ich die Delay Funktion nicht finden.
Das wärs damit dann auch schon...
Mal schaun ob dir das weiterhilft, wenn du die Neopixel Bobliothek anschaust.
Okay super das ich nicht vollkommen in die falsche Richtung arbeite.
Ich weiß nicht ob du es gesehen hattest aber ich hab den irrecv.resume(); Befehl unten bei den einzelnen Effekte eingefügt um es oben ebend übersichtlicher zu halten.
Somit sollte irrecv.resume(); ja nach jedem LED Effekt wieder aktiviert werden.
Genauso bin ich auch mit dem Orangenem Theaterchase für Motorlaufen verfahren. Ich habe es gar nicht mehr oben bei den Eingaben zu stehen sondern direkt beim void motorLaufen eingefügt.
Da das Orange ja nur für das öffnen/schließen da ist, startet es auch automatisch sobald motorlaufen aktiviert wird.
Jup, hab immer wieder welche entdeckt

Aber... wie du schon schreibst, nach jedem LED Effekt soll das aufgerufen werden. Darauf würd ich noch bissl achten, dass diese Code Zeile auch wirklich immer erreicht wird. Will nur sagen, mach dir ein System, nachdem du arbeitetest, so dass du sicher sein kannst das nicht doch mal zu übersehen.
Das mit dem Theater im Motorlaufen Teil find ich auch ne ganz gute Idee, hält den Loop übersichtlich und gehört ja eh zusammen...
Theaterchase mit motorlaufen geht er danach aus, wenn ich ein theaterchase auf IR lege bleibt es an.
Ich möchte eigentlich beides für bestimmte Aufgabe, sollte nur wissen wie ich das genau steuer.
hmm, dafür kenn ich mit den Neopixel zu schlecht aus. Da hilft vielleicht tatsächlich ein Blick in die Biliothek (oder jemand der n Plan davon hat...)
Ja habs probiert aber während der Motor läuft(ohne LED, nur rein der Motor) geht nix, IR nimmt keine Befehle an, erst nachdem der Motor wieder still steht. Am KP selbiges.
Hab die IR mal komplett raus um nur über KP LED zu starten während der Motor läuft aber er blockiert definitiv.
Verdaaaaaaaaaaamt !!!!
!!
Da war ich mir recht sicher, dass das geht....
Mit Auskommentieren meine ich // in die Zeile am Anfang zu zu schreiben, damit es eben nicht berücksichtigt wird. So musst du den Teil nicht löschen, sondern kannst ihn nur auf "Pause" setzen. Wenn du das mit mehreren Zeilen machen möchtest, kannst du einen Kommentar mit /* starten und mit */ wieder schließen. Is auch recht praktisch.
Also erst mal hab den Code eingefügt aber ohne große Änderung.
%10 und <10 geht der Alarm trotzdem nach jedem LED Effekt an(nur bei den die manuell gestartet werden,bzw eigentlich nur bei dem weißen colorwipe( IR taste 0, KP Taste 1) bei einem grünen colorwipe auf IR 4 oder Öffnen schließen geht kein Alarm an.
Schadeee, das es nix gebracht hat. Ich würd mich jetzt aber erst mal noch auf einzelne Teile konzentrieren, dass die sauber laufen. Insgesamt ist das Projekt ja schon recht komplex, und einen Fehler gerade zu finden ist denke ich sehr schwer. Vor allem wenn sich an der Art wie Motor und LED laufen noch was ändern wird.
Okay also die Hausaufgabe ist heftig.
Hab schon etwas experimentiert aber das ist auch genau der Beispielsketch der nichtmal mit Delay bei mir läuft.
Und schon wieder ein verdammt

Dies ist das einzige Beispiel bisher das ich ohne Delay gefunden habe, und das auf verschiedenen Seiten...
Nach genauerer Code analyse gebe ich dir recht.... das Ding macht noch nix, bzw eventl. genau einmal und auch nur in diesem Skript... Dies ist halt das einfachste Lauflicht, dass sich recht einfach auf delay frei umschreiben lässt. Schade, dass es nicht mal mit delay läuft.... kann man also vergessen...
Die anderen Lauflichter sind durch die verschachtelten for Schleifen ziemlich schwer umzuschreiben. Ich würd mir das erst mal nicht (ohne großem Zeitlichen Aufwand) zutrauen.
Einen Versuch hätte ich noch mit dem colorwipe....
Code:
void loop(){
laufColorWipe();
}
void laufColorWipe(){
if ((unsigned long)(millis() - previousMillis) >= interval) {
previousMillis = millis();
colorWipe2();
}
}
void colorWipe2(){
strip.setPixelColor(currentPixel,currentColor);
strip.show();
currentPixel++;
if(currentPixel == NUM_PIXELS){
currentPixel = 0;
}
Das mal einarbeiten. Den Part vor dem Loop aus dem Link übernehmen. Und die Zeile im loop in deinem Programm an die entsprechende Stelle packen.
Die beiden Funktionen nach dem Loop wieder nach dem Loop einfügen.
So müsste das Ding zumindest etwas machen.
Abschließend.... Mir raucht der Schädel....