ich habe eine Idee die ich gerne umsetzen will und wollte fragen ob das jemand schon gemacht hat, bzw. mir etwas helfen kann.
Aktuelle Situation ist, dass mein TonUNINO keinen separaten Ein Aus Schalter hat.
Ich wollte alle unnötigen öffnungen und extra Knöpfen vermeiden (weshalb ich auch induktiv lade).
Deshalb habe ich einen Pololou Switch eingebaut, der mit dem Pause Button eingeschalten und über den Time out ausgeschalten wird.
Das möchte ich erweitern und zwar um ein manuelles Ausschalten über einen langen Druck beider Lautstärke Taster.
Der Arduino hat ja schon den D7 Ausgang am OF des Pololu angeschlossen um über den time out den Pololu zu deaktivieren. D7 soll jetzt extra noch über die Lautstärke Tasten angetriggert werden.
Hat das schon mal jemand so oder so ähnlich umgesetzt?
Hi zusammen,
ich hatte nach einer Lösung (Pololu OFF an D7) gesucht, neben der Timeout-Funktion, den TonUINO auch über Langes Drücken der PAUSE Taste auszuschalten.
Mit eurem Code oben bin ich leider nicht wirklich weiterkommen.
Folgend meine Lösung. Vielleicht kann die ja jemand gebrauchen.
Die aktuelle DEV Version von Thorsten wurde nur minimal geändert.
// uncomment the below line to enable five button support
//#define FIVEBUTTONS
// mod by ManfredFFM
// uncomment the below line to enable shutdown via pauseButton when not playing (e.g. by Pololu-Switch or Mosfet)
#define LONGPAUSESHUT
if (pauseButton.wasReleased()) {
if (activeModifier != NULL)
if (activeModifier->handlePause() == true)
return;
if (ignorePauseButton == false)
if (isPlaying()) {
mp3.pause();
setstandbyTimer();
}
else if (knownCard) {
mp3.start();
disablestandbyTimer();
}
ignorePauseButton = false;
} else if (pauseButton.pressedFor(LONG_PRESS) &&
ignorePauseButton == false) {
if (activeModifier != NULL)
if (activeModifier->handlePause() == true)
return;
if (isPlaying()) {
uint8_t advertTrack;
if (myFolder->mode == 3 || myFolder->mode == 9) {
advertTrack = (queue[currentTrack - 1]);
}
else {
advertTrack = currentTrack;
}
// Spezialmodus Von-Bis für Album und Party gibt die Dateinummer relativ zur Startposition wieder
if (myFolder->mode == 8 || myFolder->mode == 9) {
advertTrack = advertTrack - myFolder->special + 1;
}
mp3.playAdvertisement(advertTrack);
}
else {
// mod by ManfredFFM
#ifdef LONGPAUSESHUT
sleepAtMillis = 1;
#endif
// endmod
playShortCut(0);
}
Hi zusammen,
um manchmal einen Konflkt mit dem Adminmenü zu vermeiden (wenn zuerst die Pause Taste und dann UP und Down lange gedrückt werden) folgend noch eine Änderung:
// mod by ManfredFFM
#ifdef LONGPAUSESHUT
if (!(upButton.pressedFor(LONG_PRESS)) && !(downButton.pressedFor(LONG_PRESS))) {
sleepAtMillis = 1;
}
#endif
// endmod
Gruß an Alle und Danke für das Super Projekt,
Manfred
Hallo zusammen,
ich habe auch den Pololu verbaut und bin auf der Suche nach einer softwareseitigen Lösung, um den Pololu mittels langem Pausen Tasten Drucks auszuschalten.
Programmiertechnisch bin ich noch ein Noob. Deshalb hoffe ich auf eure Unterstützung. @marco-117 & @ManfredFFM wie habt ihr eure Code Elemente in Thorstens DEV eingebaut? Wenn ich Manfreds Code schlicht hinein kopiere erhalte ich folgende Fehlermeldung:
Arduino: 1.8.16, Board: "Arduino Nano, ATmega328P (Old Bootloader)"
Tonuino:28:5: error: expected unqualified-id before 'if'
if (pauseButton.wasReleased()) {
^~
Tonuino:42:7: error: expected unqualified-id before 'else'
} else if (pauseButton.pressedFor(LONG_PRESS) &&
^~~~
exit status 1
expected unqualified-id before 'if'
Wie möchtest du es denn genau haben, denn der Longpress der Playtaste hat ja schon Funktionen draufprogrammiert.
Während der Wiedergabe wird die Tracknummer angesagt und während Pause wird darüber der Shortcut gestartet.
Deshalb verwenden viele eine Kombination aus 2 Tasten
Wow! Super schnelle Antworten. Danke erstmal dafür.
@marco-117 ich werde mir mal dein Fork genauer anschauen und überprüfen, ob das für mein Vorhaben passen könnte.
@Gute_Laune Für mich wäre ideal, würde der Longpress der Playtaste die Stromversorgung über den Pololu kappen.
Tracknummeransage brauche ich nicht. Den Shortcut, um ins Admin-Menü zu gelangen, würde ich mir am liebsten über eine programmierte RFID Karte herstellen. So weit bin ich aber noch nicht. (Ich versuche - soweit es geht - die Probleme in kleinen Häppchen abzuarbeiten.)
Dafür brauchst du nichts programmieren. Du legest eine neue Karte auf, wählst irgendeinen Ordner und dann als Wiedergabemodus das mit Admin. Im Adminmenü gibt es den Punkt „das Adminmenü absichern“ da kannst du einstellen, dass es nur mit Karte geöffnet werden kann.
Der Shortcut der Playtaste hat damit nichts zu tun, das ist ja eine „virtuelle Karte“. Ich mache hier mal ein paar Vorschläge. So kannst du entweder nur das eine oder nur das andere ersetzen. Ich ersetze immer nur den Shortcut, weil man dann nicht so leicht aus, statt pause macht.
else if (pauseButton.pressedFor(LONG_PRESS) &&
ignorePauseButton == false) {
if (activeModifier != NULL)
if (activeModifier->handlePause() == true)
return;
if (isPlaying()) {
- uint8_t advertTrack;
- if (myFolder->mode == 3 || myFolder->mode == 9) {
- advertTrack = (queue[currentTrack - 1]);
- }
- else {
- advertTrack = currentTrack;
- }
- // Spezialmodus Von-Bis für Album und Party gibt die Dateinummer relativ zur Startposition wieder
- if (myFolder->mode == 8 || myFolder->mode == 9) {
- advertTrack = advertTrack - myFolder->special + 1;
- }
- mp3.playAdvertisement(advertTrack);
+ sleepAtMillis = 1; // für Abschalten während der Wiedergabe
}
else {
- playShortCut(0);
+ sleepAtMillis = 1; // für ausschalten wenn Pause ist
}
ignorePauseButton = true;
}
In dem Beispiel blockiert die Tastensperre (Krabblermodus) auch das Abschalten. Wenn du willst dass die Box immer aus geht, wenn play lange gedrückt wird, dann kannst du alles in der else if Abfrage durch sleepAtMillis = 1; ersetzen. Wichtig ist mit den Klammern aufzupassen. Arduino macht einem manchmal irgendwo direkt auch eine Klammer zu hin. Wenn man die übersieht, gibt es Fehlermeldungen an Orten, wo das Problem eigentlich gar nicht ist.
@Gute_Laune vielen Dank für deine schnelle und sehr hilfreiche Unterstützung. Ich habe jetzt alles zusammen, was ich brauche, und wieder eine Menge dazu gelernt!
Mein Kleiner ist froh und Weihnachten ist gerettet.