Nach dem aufspielen, den Arduino für ein paar Sekunden das USB Kabel ausstecken und dann wieder anstecken.
Wenn das nicht geholfen hat, dann bitte die folgende Zeile mal in den Loop eintragen.
Serial.println(loopCountdown);
Im seriellen Monitor müsste dann eine Zahl immer wieder runtergezählt werden.
So ein Microcontroller läuft immer mit voller Leistung/Taktrate. Es ist also egal ob er viel zu tun hat oder ob er Däumchen dreht, auf die Lebensdauer hat das keinen Einfluss.
(Einzig wenn man die Stromspar Modi nutzt wird der Core abgeschaltet)
Überlasten kann man den Controller auch nicht, wenn man ihm mehr zu tun gibt als er erledigen kann, dann verzögert sich halt alles.
Deswegen kann es zum Beispiel bei ungünstigem Design dazu kommen, dass die Tasten verzögert sind oder die LEDs hängen.
Habe übrigens die ino Version von meiner Git Seite runtergeladen und getestet um sicher zu gehen. Bei mir läuft es sowohl auf dem Testaufbau als auch in einem fertigem TonUINO ohne Probleme.
Bin schon etwas neugierig warum es bei dir @ThomasK nicht funktioniert.
Edit: Habe gerade deine Ergänzung oben gesehen. Freut mich, dass es funktioniert.
@tON
Witzigerweise geht es auf meinen TestUino auch nicht.
Auf der aktiven Box, läuft es problemlos.
Auf der Testversion, bekomme ich nur meins ans laufen. Habe auch extra den Sketch neu zusammengebaut, deinen neu heruntergeladen, den vom Laptop geholt, an dem die funktionierende Version geflasht wurde., etc.
Bin ratlos.
Beim auflegen einer Karte dreht sich einmal grün im Kreis und dann gehen die LEDs aus.
Zweiten Arduino hab ich auch schon genommen, PIN passt…
Hast Du noch eine Idee?
Vielen Dank für das Teilen Der Anpassung mit dem Neopixel! Ich hatte noch einen China-Klon rumliegen und es funktioniert (beim zweiten Versuch, s.o.) wunderbar.
Eine Frage: #define LED_SR_Switch ist ja die Funktion, per Pause und up/down die LEDs auszuschalen, das funktioniert auch, aber wie verhält sich #define LED_SR_Powersafe, also was macht das? Sorry, falls ich es übersehen haben sollte!
Freut mich, dass meine LED Integration bei dem einen oder anderen zum Einsatz kommt.
@barni: Das hört sich echt komisch an, warum es bei dem einen Aufbau klappt und bei dem anderen nicht. Ich habe bei der Fehlersuche die Variablen (bspw. loopCountdown) in der Konsole auswerfen lassen. Da ist mir irgendwann aufgefallen, dass manche Änderungen erst nach dem „vom Strom nehmen“ umgesetzt wurden und dann funktioniert hat. Woran das aber liegt und das wichtigere, wie man das Ändern kann, habe ich leider keine Ahnung.
@HomerJayS: Die Funktion „#define LED_SR_Powersafe“ ist noch nicht umgesetzt. Meine Idee war es, dass die Animation nur für einen kurzen Moment aktiviert werden und dann wieder ausgeschaltet werden. Wenn der Tonuino beim Abspielen in der Gegend rumsteht, müssen die Animationen durchlaufen. Dies wäre garnicht so schwer umzusetzen, da man nur den animationCountdown begrenzen muss, bin aber aus Zeitgründen noch nicht dazu gekommen.
@MetalMonkey: Weil mein Code das Ziel hatte unabhängig von anderen Erweiterungen zu funktionieren und es damit schnell eingebunden werden kann, hast du mich neugierig gemacht. Was genau steuerst du mit dem RotaryEncoder? Welchen Einfluss hat es auf die LEDs?
@tON
Vielen Dank für deinen Code, die beiden Boxen meiner Mädels sehen super aus!
Bei mir hat alles auf Anhieb geklappt und ea funktioniert sogar leicht modifiziert mit Poti.
Hallo @tON
Ich habe deine LED-Animation auch bei mir integriert und bin echt begeistert. Die Animationen laufen auf einem LED-Ring mit 12 LED’s von A-Z-Delivery. Sieht echt super aus. Ich hatte jedoch einen eigenartigen Effekt. Wenn ich die Animation bei laufender MP3-Wiedergabe über langen Druck Down/Pause abgeschaltet habe, reagierte der Tonuino auf keine Taste und keine Karte mehr. Wieder Einschalten der Animation ging auch nicht. Nur eine Trennung von der Stromversorgung , oder Reset über die Resettaste des Arduino führten zum Neustart. Wenn keine wiedergabe lief konnte man Die LED-Animation aus und wieder einschalten.
Ich habe dann in den Code folgende Zeilen eingefügt, die den MP-3 Player bei Ein oder Abschalten der Animation in Pause setzen. Nun funktioniert es.
//********************************************************************************
// LOOP
//********************************************************************************
void loop() {
do {
//************************ LED Animation *****************************
#ifdef LED_SR
// LED Strip und Ring
#ifdef LED_SR_Switch // Einstieg Abfrage Tasten zur Aktivierung / Deaktivierung LED Animationen
// *********** Enable led strip *********** Vor Taste und Pause Taste langer Druck
if ( (upButton.pressedFor(LONG_PRESS) || pauseButton.pressedFor(LONG_PRESS) ) && upButton.isPressed() && pauseButton.isPressed()) {
lsrEnable = true ;
if (isPlaying()) { // Widergabe muss gestoppt werden, sonst hängt sich der Mp3-Player auf
mp3.pause();
setstandbyTimer();
}
}
// ***********Disable led strip ********** Zurück Taste und Pause Taste langer Druck
if ( (pauseButton.pressedFor(LONG_PRESS) || downButton.pressedFor(LONG_PRESS) ) && pauseButton.isPressed() && downButton.isPressed()) {
lsrEnable = false ;
strip.clear();
strip.show();
if (isPlaying()) { // Widergabe muss gestoppt werden, sonst hängt sich der Mp3-Player auf
mp3.pause();
setstandbyTimer();
}
}
#endif // Ende Abfrage Tasten zur Aktivierung LED Animationen #ifdef LED_SR_Switch
#ifdef LED_SR_Switch // Ergebnis Tastenabfrage
if (lsrEnable == true) { // Wenn wahr, Animationen durchführen
#endif
///////////////// Prüfung der einmaligen Animationen /////////////////
// ---------- Liedänderung erkennen und Animation aktivieren ---------- //
Und am Ende
// ---------- Countdown Zähler über den loop als Ersatz zur delay Funktion ----------
if (loopCountdown != 0 ){ loopCountdown--;}
// ---------- Dadurch wird die Änderung der Lautstärke bzw. Track nur ein mal registiert ----------
lastDetectedVolume = currentDetectedVolume;
lastDetectedTrack = currentDetectedTrack;
#ifdef LED_SR_Switch
}
#endif
#endif // Ende Abfrage Aktivierung LED Animation #ifdef LED_SR
//*************************** Ende LED Animation *************************
//******************** Weiter im Loop *************************
Man muss allerdings die wiedergabe dann über die Play Taste wieder starten.
Danke für deine Hilfe. Funktioniert leider nicht richtig. Ich sehe den einzelnen Punkt nur ganz kurz dann wechselt die Animation zum gefüllten Rainbow Ring.
Da ist noch irgendwas faul bei dir. Bei mir funktioniert das so einwandfrei. Lies dir doch mal die Beiträge am Anfang dieses treads durch. Da wurde das mit strip.clear() schon mal gepostet.
Das klingt danach als ob die Bedingung für die Warteanimationen nach einem Durchlauf nicht mehr erfüllt ist? Probier vielleicht mal eine Debugmeldung und den „Warteaninationsloop“ einzubauen die das prüft?