Aktuell wird der PLAY-Button auch zum Einschalten genutzt. Also eine Mehrfachbelegung Ein / Play / Pause / …
Es wäre jedoch einfacher dem Kind zu erklären, dass „Schalter 1“ für AN/AUS ist und „Knopf 2“ für Play/Pause.
Daher möchte ich gerne einen Schalter nachrüsten. Ich habe einen 4-poligen Schalter, der wie ein Knopf aussieht, einrastet und eine LED eingebaut hat. Muss ich den zwischen Akku und Board bauen, oder kann ich einen der PINs auf dem Board ansprechen? Dann wäre ja auch ein Akku-Laden bei ausgeschaltetem Schalter möglich.
Wird dazu der D7 genutzt von dem ich schon gelesen habe, oder ist das nur ein virtueller I/O für die Softwaresteuerung?
Ich bin noch Anfänger was die Hardwareseite betrifft.
Der Play/Pause Button ist hardware mässig für beide Funktionen zuständig, sprich Play/Pause & Einschalten. Du kannst dir natürlich z.B. an D6 (ebenfalls auf dem Button Board vorhanden) einen weiteren Taster anschließen und den in der Firmware zum Play/Pause Button machen. Das ändert aber nichts daran, daß der andere Button weiterhin mindestens das einschalten übernehmen muss, Play/pause kannst du ihm natürlich in der Firmware abgewöhnen. Was das ausschalten angeht ist natürlich eine andere Geschichte. Der Controller hält D7 high, damit die Platine an bleibt. Wenn der low geht, geht die Platine aus. Du kannst die Firmware natürlich so erweitern, daß man das durch lang drücken auf einer Taste triggern kann oder irgendwie sowas. Gedacht ist eigentlich daß sich die Box nach einer einstellbaren Zeit einfach selber abschaltet…
Wenn es ein richtiger Schalter bzw. einrastenden Button sein soll, dann muss (nur ein bisschen) mehr gemacht werden.
Hardware
Ein Schalter an A0 (PBP/PBN am Button-Adapter)
Ein Button an D5 für Play/Pause (D5/GND an Hauptplatine - Info: Liegen nicht nebeneinander)
Software
Im Oberen Bereich an dem die Buttons definiert werden
#define ButtonPower A0 // Schalter Ein / Aus
#define ButtonPause D5 // Taste Play / Pause
Etwas später im Bereich „Buttons“
//*********************** Buttons ************************
#define LONG_PRESS 1000
Button powerButton(ButtonPower); // DAS HIER IST DIE NEUE ZEILE
Button pauseButton(ButtonPause);
Sehr weit unten im Bereich der Button-Behandlung zwischen dem Ende der Leiser-Taste und der 4ten/5ten Taste den neuen Bereich Shutdown durch Power-Schalter hinzufügen.
// *********** Ende Vol - Taste ********************************************
// ********** Shutdown durch Power-Schalter ***********************************
if (powerButton.wasReleased())
{
// Hier könnte noch eine Verabschiedung abgespielt werden
delay(1000);
ShutDown();
}
// ********** 5 Tasten-Modus ***********************************************
Ich hoffe ich habe nichts vergessen. Falls doch, dann schreibt mir gerne
Hat zwar nicht direkt etwas mit dem Power-Schalter zu tun…aber falls der Schalter eine LED eingebaut hat, dann kann von der Hauptplatine einfach 3V3 oder 5V (Je nach Bedarf) und GND genutzt werden damit der Betriebs-Zustand direkt sichtbar ist.
Moin, ich hab das mal versucht im AIO Code aber irgendwie funktioniert es nicht, ich kann mit dem powerButton den AIO einschalten, aber nicht wieder ausschalten, der pauseButton funktionert korrekt.
Hat wer nen Tipp für mich was noch fehlt? Danke
Hallo allen,
ich merke: ich werde alt.
Und wo ich mich früher einfach eingelesen habe, entstehen nun große Löcher.
Ich habe gerade eine AiO (nicht + ) verbaut, in eine BluetoothBox mit 4 Tasten. Über die IDE dann erstmal die 3 Button Variante zum Laufen bekommen. Den ButtonPause noch auf A3 und nun sacke ich vor Erschöpfung zusammen.
Ach nein, das darf ich nicht. Wird ja ein Geschenk, ganz plötzlich ist das halbe Jahr rum und Montag soll es auf dem Tisch stehen.
Nun aber noch mein Anliegen, ich hätte gerne eine Änderung, dass ich die Kiste (neben dem StandByTimer) auch per Doppel (oder Dreier) druck auf dem nun freien A0 ausschalten kann.
In der Box des großen Bruders ist eine eigene Ladeelektronik, die mit DoppelDruck abgeschalten wird, hier möchte ich es gefühlt nachbauen.
Ich hab dich mal in ein Thema in die AiO-Kategorie verschoben. Das grundsätzliche an und aus ist hier ja schon beschrieben. Das mit dem Doppeldruck fehlt noch, das ist nicht ganz so einfach, weil die Bibliothek kein Doppeldruck anbietet. Du kannst dich vermutlich hieran orientieren
Tja, zu früh gefreut…
Ich habe getestet, ob es funktioniert, dass er nach einem langen press abschaltet. Ja, es funktioniert.
Ich habe aber nicht getestet, ob er nach einem kurzen Druck nicht abschaltet. Dies funktioniert nicht, auch nach kurzen Druck wird abgeschalten.
So wie es hier ja steht, wird der Taster losgelassen, schalte ab.
Wie sage ich ihm, dass er nach einem LongPressWasRelease abschaltet?
… indem ich einfach bei den anderen LongPress im Code abgucke, danke @raznz_snasna …
if (powerButton.pressedFor(2000))
{
digitalWrite(shutdownPin, LOW);
}
// Ende der Buttons
Wie es so oft passiert. „hey das ist ja toll, so etwas möchte ich auch. ja genau mit diesem Gehäuse“.
Also mache ich einfach nochmal genau das gleiche, gleiche Box, gleiche Lötarbeiten, gleicher Akku, gleicher…ach nein, eine AiO PLUS. Nagut, wird schon.
Gleiche Codeanpassung, gleicher Funktionstest, Ätsch…
Das wurde dann wohl nichts.
/*
_____ _____ _____ _____ _____
|_ _|___ ___| | | | | | |
| | | . | | | |- -| | | | | |
|_| |___|_|_|_____|_____|_|___|_____| All-in-One Plus
TonUINO Version 2.2
created by Thorsten Voß and licensed under GNU/GPL.
Information and contribution at https://tonuino.de.
*/
// uncomment the below line to enable five button support
// #define FIVEBUTTONS
#endif
if (powerButton.pressedFor(2000))
{
digitalWrite(shutdownPin, LOW);
}
// Ende der Buttons
Über einen Druck auf Power schalte ich die Box an, die elektrische Verbindung funktioniert also.
Ein LongPress schaltet aber nicht ab. Im Monitor kommt (natürlich) keine Rückmeldung, da ja nichts dazu programmiert ist.