Buttons um Ordner direkt abzuspielen

So, ich habe jetzt den letzten Widerstand zwischen Taster 10 und GND entfernt und die einzelnen Werte angepasst. Die TRIGGER_TIME steht jetzt auf 180 und der Drehimpulsgeber ist direkt an +5V, GND und D5, D6 angeschlossen. Der USB Port liefert bei mir zwar nur ca. 4,8V - aber so hat es jetzt gut eine Stunde perfekt funktioniert. Beide Bedienelemente beeinflussen sich nicht mehr. Mal sehen ob das am StepUp Wandler so bleibt.

Echt der Wahnsinn dein Support! Vielen Dank!

2 „Gefällt mir“

Mega :+1:

Ja sehr gerne, ich freue mich über jeden funktionierenden TonUINO.

1 „Gefällt mir“

Hallo

Leider zu früh gefreut. Ich habe die TRIGGER TIME jetzt auf 200. Wenn ich alles am USB Port habe, sieht es so aus:

13:31:39.435 -> Fork by Marco Schulz DEVELOP
13:31:39.469 -> Version 2
13:31:39.469 -> Max Vol 25
13:31:39.469 -> Min Vol 1
13:31:39.469 -> Init Vol 18
13:31:39.469 -> EQ 1
13:31:39.469 -> Locked 0
13:31:39.469 -> Sleep Timer 0
13:31:39.469 -> Inverted Buttons 1
13:31:39.469 -> Admin Menu locked 11
13:31:39.469 -> Admin Menu Pin 1111
13:31:39.469 -> Saved Modifier 0
13:31:39.469 -> set standby timer
13:31:39.570 -> milis: 0
13:31:39.605 -> Firmware Version: 0x92 = v2.0
13:31:39.605 -> === mfrc522-> RxGain_avg === 

Bis hier alles wie es sein soll.

13:31:44.238 -> volume: 14`

dann folgt der Startsound und die Lautstärke springt auf 14. Ich finde aber keine 14 im Code? Irgend eine Idee? Fehler im EEPROM?
Beim ersten Tastendruck passiert ein paar Sekunden gar nichts, dann kommt eine Fehlermeldung. Hab die 6 gedrückt, geht aber mit jeder anderen Taste:

13:32:01.454 -> AnaIn active Pos 6
13:32:11.611 -> packet size error
13:32:19.106 -> set standby timer
13:32:19.207 -> milis: 0

Die MP3 Datei wird dann aber abgespielt und danach kann ich alle Tasten drücken.

13:32:22.292 -> AnaIn active Pos 5
13:32:29.274 -> AnaIn active Pos 7
13:32:31.136 -> AnaIn active Pos 8
13:32:33.757 -> AnaIn active Pos 9
13:32:33.860 -> packet header error

zwischendurch dann doch noch weitere fehler!?

    13:32:35.584 -> AnaIn active Pos 10
    13:32:39.829 -> AnaIn active Pos 9
    13:32:41.017 -> AnaIn active Pos 8
    13:32:42.105 -> AnaIn active Pos 7
    13:32:43.294 -> AnaIn active Pos 6
    13:32:44.417 -> AnaIn active Pos 5
    13:32:46.451 -> AnaIn active Pos 4
    13:32:47.981 -> AnaIn active Pos 3
    13:32:49.135 -> AnaIn active Pos 2
    13:32:50.254 -> AnaIn active Pos 1

Aber nicht immer. Und ich kann jede Taste nur einmal drücken. Zwei mal die gleiche Datei abspielen funktioniert nicht.

Wenn ich das Teil über Powerbank oder StepUp versorge, werden einfach wahllos Dateien angespielt und ich finde den Fehler nicht. Sobald ich das USB Kabel anschließe um die DEBUG Ausgabe zu sehen, läuft alles normal wie oben beschrieben. Sehr seltsam.

Gruß
papa

Zu der Problematik Step Up könntest du Probieren die Versorgung deiner Analogen Schalterkaskade über einen Digital Output zu versorgen.
Es gibt dazu ein define.
Der Step Up bringt keine glatte Spannung, die wird sicher sehr ungenau sein. Eventuell könnte ein Kondensator zur Glättung helfen.

Das mit der Lautstärke kann ich mir gerade auch nicht erklären. Eventuell ist auch hier die 5V Versorgung nicht gut.

Hast du eine andere Spannungsquelle die du testen kannst?

Kannst du mehr Details zu deiner Spannungsversorgung geben? Bilder Skizze der Schaltung?

Die ist in allen meinen Tonuinos identisch mit einem MT3608 aufgebaut. In diesem speziellen Fall hängt ein 5000mAh LiFePO4 Akku an einem Pololu Power Switch LV, der auf einem MT3608 klebt.

Oszi hab ich leider keins da. Habe die Ausgangsspannung schon etwas abgesenkt, bringt aber nichts. Zum testen habe ich hier noch Schaltnetzteile, Labornetzteil, die eine oder andere Powerbank und einen StepDown könnte ich auch noch testen. Meinst Du wirklich es liegt ausschließlich an der Versorgungsspannung? Werde auch den MT3608 austauschen und schauen ob sich was ändert.

Immer wenn man alles schön verbaut hat… :slight_smile:

Das passiert immer, auch wenn der Arduino über den PC versorgt wird… werde den Arduino tauschen und schauen ob das Problem sich beheben lässt.

Ja, hab ich gesehen. Soll/kann ich sowohl den Drehimpulsgeber als auch die Taster da dran hängen? Muss ich ausprobieren, beim Drehimpulsgeber hatte ich das Gefühl, dass es direkt an +5V besser läuft.

Hoffentlich liegt es wirklich „nur“ an der Versorgung. Wäre noch am einfachsten zu beheben…

Ich kann leider nur vermuten.

Das sollte man vieleicht systematisch ausprobieren.
Ein Labornetzteil ist doch super. Wenn es damut nicht geht, luegt es an was anderem.

Ich teste hier nochmal den Code gegen für den Rotary in Verbindung mit dem Analogen Eingang.
Eventuell ein Bug. Nutzt du den KY 040 Drehimpulsgeber?

So, eben ans Labornetzteil angeschlossen… die Tasten funktionieren. Hätte ich nicht erwartet. Das mit der Lautstärke bleibt aber. Ja, ist ein KY 040 auf Platine, die „nackten“ Drehimpulsgeber funktionieren aber auch.

Zum glätten der Ausgangspannung… irgend welche Vorschläge was ich da an Elkos dran hängen soll?

In Bauteilbemessung war ich noch nie gut.
@Thomas-Lehnert ist da besser drin. Hast du eine Idee Thomas, welchen Kondensatorwert man am besten zum Glätten eines Step Up nimmt?

Hast du denn Elkos da? So Standards wie 4,7uF vieleicht?
Vielleicht auch mal Google nach passenden Glättungsmethoden durchsuchen.

Den Rotary prüfe ich nochmal Softwareseiteig bei mir ab.

Das Volume 14 Problem habe ich auch.
Liegt also nicht am deinem Aufbau. Ich suche den Fehler

Mit 4,7 uF kommst du nicht weit. da sollten schon mindestens 47 uF oder mehr genommen werden. Dazu parallel noch einen 100 nF keramikkondensator schalten. Der nimmt noch eventuelle hochfrequente piks weg. Eine kleine Entstördrossel in der 5V Zuleitung kann auch wunder wirken. Sollte so 10 bis 20 uH haben und für mind 1 A ausgelegt sein. Falls die Bastelkiste das hergibt, mal einen kleinen Ferritring mit 30 - 40 Windungen Kupferlackdraht oder dünnen schaltdraht oder Litze bewickeln . Falls du eine alte Netzteilplatine hast (Schaltnetzteil), da sind meist direkt hinter der Netzsicherung Entstördrosseln drauf. Die wäre auch gut geeignet.

3 „Gefällt mir“

ich habe das Problem mit dem Rotary Switch gefunden und den neuen Sketch hoch geladen.
master & develop sind geupdated

1 „Gefällt mir“

Hab hier eine Kiste mit Elektroschrott, da sollten auch ein paar Netzteile dabei sein. Da finden sich sicher ein paar Elkos und Drosseln. Danke & Gute Nacht in die Runde!

Ich frage mich, warum ich ausgerechnet für den Einbau einen neuen StepUp auspacken musste! Auf dem Testboard hat ja alles funktioniert… hab die beiden MT3608 getauscht und fertig. Funktioniert alles.

1 „Gefällt mir“

Super :+1:

Ich nehm den Fehler mut der schwankenden Versorgung bei mir als Hinweis auf.

Läuft die neue Software auch soweit?

Noch eine Info am Rande:
Ich bin bei dem kommenden Update soweit, dass ich die analogen werte über das Adminmenü abfragen kann, sodass niemand mehr irgendwelche Codezeilen anpassen muss und auch der Aufbau am analogen Eingang völlig irrelevant ist.

Nur die Toleranzermittlung ist mir noch ein Dorn im Auge, aber vielleicht habe ich da eine Idee, wie man das auch über das Menü machen kann. Eine Messreihe aufnehmen, aus der die Toleranz berechnet wird. Dann ist man völlig frei von Codeanpassungen.

Hallo Marco,
hast du irgendwo eine Empfehlung nach welcher Schaltung und welchen Werten die Schalter ausgeführt werden sollten?

Leider hab ich keine Empfehlung, weil ich keine Erfahrung mit analogen Matrix Tastaturen habe.
Ich kann nur sagen, das mein 12 Stufiger drehschalter, mit zehn 1kOhm Widerständen, zwischen den Stufen, immer zuverlässig am Klassik TonUINO funktioniert hat.

Ich Spinne mal meine Idee runter.
Leider nur in Deutsch, nicht in C++.

Die Werte kommen in etwas array ähnlichem? Ich weiß nicht welche Möglichkeit es gibt um da flexibel zu sein.
Dann zählen wir die möglichen Werte, verdoppeln diese zu x.
(höchster Wert) / x gibt uns dann eine mögliche Schwankungen inkl. Sicherheit.
Und dann
For i++ bis Anzahlstellungen
If ( analog read <= array, i + Schwankungen und analog. Read >= array, i - Schwankungen) return (i )

Sry, ich habe es mit dem Handy verfasst, das ist für code nicht gedacht

Ja genau, man ermittelt aus x Werten einen Mittelwert und berrechnet dann den Prozentualen abstand zum größten oder kleinsten gemessenen Wert. Das ist dieToleranz.

Wie du schon geschrieben hast am besten in einer for schleife die x Werte in einem array sammeln.
Darin kann man auch gleich den Max oder Min Wert ermitteln.
Nach der Schleife ermittelt man den Mittelwert aller im Array enthaltenen Werte und zieht den vom Min/Max wert ab.

Mir ist hierzu noch eine bessere Idee eingefallen.
Anstatt eine eigen Messung der Toleranz vor zu nehmen, kqnn ich die Messung in der Anlernung der Eingangspegel integrieren, dort starte ich schon eine Messreihe und ermittel den Mittelwert.