Idee (Frage) für Lautstärke Begrenzung Zwei Poti an A7

FRAGE :
Mit diesen beiden Potis an A7 sollte doch die Max Lautstärke im Gehäuse begrenzt und vom Benutzer außen eingestellt werden können.
Da durch die Widerstände ja immer ein Strom fliest müssen sie doch nur ausreichend groß gemacht werden damit die Powerbank weiter automatisch abschaltet.
z.b 5MOhm für MaxVol

Möchtest du das explizit via Drehknopf so haben oder suchst du nur überhaupt eine Möglichkeit die maximale Lautstärke zu begrenzen? Weil das geht ja schon über das Adminmenü. Das stellt man in der Regel 1x ein und dann fasst man das eigentlich eher selten wieder an.

Hallo Stephan, ich habe hier im Forum mehrere Lösungen gesehen bezüglich Begrenzung der Lautstärke aber auch einen Externen Drehregler.
-Software ist ja schon drin, wie du gesagt hast (kein Poti extern)
-Mini Amp. ohne Hardware Begrenzung(Poti)
-Potis aber an Zwei Eingängen. Kidsbox

Deshalb frage ich nach dieser Lösung nur an A7, der ja nur ein Analog Input ist und beide Steller im (Admin) und am Gehäuse (Benutzer). Will A6 frei lassen für weis was. Habe hier leider gerade keine Potis herum liegen zum testen sonst hätte ich das schon gemacht, deshalb Frage ich!!!

Und dann noch eine Frage bezüglich Pin D9 RESET_RFID muss das ein PWM sein, oder würde auch D8 gehen. Sollte doch nur High oder Low auf der Leitung sein?

Die Belegung rührt von der empfohlenen Belegung her:

 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS      SDA(SS)      10            53        D10        10               10
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15

Einige Pins davon sind fest (MOSI/MISO z.B.), RST sollte theoretisch auch mit 8 gehen. Müsstest du einfach mal testen.

D8 scheint zu klappen.

Die Schaltung mit den Potis 5MOhm sind verbaut klappt auch und die Abschaltung funktioniert.

20190307_033452

Das Setup mit den beiden Potis ist einfach, ich wurde im Forum aber davor gewarnt permanent im Loop die Lautstärke zu setzen. Was ich auch schnell festgestellt habe.
Fehler waren Error 06, Error 255, plötziches stoppen der Musik oder was mich etwas verrückt gemacht hat das in der Konsole das nächste Lied geladen wurde aber nichts mehr kam.
Vielleicht hilft es ja dem ein oder anderen.
Die Umsetzung, der Drehung am Poti, in Lautstärke finde ich relativ direkt. Getestet wurde mit den Sounds 001-020 aus dem mp3 Ordner, da diese schnell hintereinander laden.
Das Poti konnte ich schnell von Laut auf Leise hin und her drehen ohne Probleme und Aufhänger des Players.

Die Lösung war am Ende die Lautstärke nur zu ändern wenn das Lied spielt, aber auch minimal das Poti alle 200ms abgefragt wird.

Ich bin erstmal zufrieden, aber für Vorschläge immer zu haben.

if (Poti==true && (Volume_MERK != Volume_Poti_Set) && isPlaying()==true)

nur dann wird

 mp3.setVolume(Volume_Poti_Set); // Lautstärke über POTI

gesetzt.

 // Variablen Volume
    bool Poti = true;           // Hat der Player ein Externes Poti an A7 (true) somit wird auch die Maximale Lautstärke über ein Poti im Gehäuse eingestellt,
                                // sonst wird die Lautstärke über die Button UP/Down verändert.
    int Pin_USER_Volume = A7;   // Analog INPUT A7 für das Poti

uint8_t maxVolume = 15;     // Maximale Lautstärke wenn kein Poti verwendet wird      
uint8_t Volume_Button_Set;  // Lautstärke USER über Button UP/Down 
uint8_t Volume_Poti_Set;    //Lautstärke USER über POTI
uint8_t Volume_MERK;
unsigned long T_Volume;     //Zeit Merker Volume Reset (millis())
unsigned long T_Volume_Refresh = 200; // Refresh alle min 0,2 Sekunden.

SETUP()
 //Lautstärke
  pinMode(Pin_USER_Volume, INPUT); // Pin POTI
  if (Poti==true)
    mp3.setVolume(Volume_Poti_Set = maxVolume); // Maximale LAutstärke über Admin Menue
  else
    mp3.setVolume(Volume_Button_Set = maxVolume); // Maximale LAutstärke über Admin Menue
  
  T_Volume = millis();
  
  //Sicherheitsabfrage, damit Serial nicht zu viele Anfragen bekommt. 
  if (T_Volume_Refresh<200){   
      T_Volume_Refresh = 200;} 


LOOP()

    if (millis()>T_Volume + T_Volume_Refresh){
    
    //Lautstärke Begrenzung Abfrage für Poti 1MOhm MAX_Volume Gehäuse und 5MOhm=Lautstärke USER_Volume 
    int val = analogRead(Pin_USER_Volume);  // Lesen Input PIN Poti (A7)
    Volume_Poti_Set = map(val, 0, 1023, 1, 30);
    Serial.println("Volume_Poti_Set");        // debug value
    Serial.println(Volume_Poti_Set);          // debug value

    
     if (Poti==true && (Volume_MERK !=  Volume_Poti_Set) && isPlaying()==true){
          mp3.setVolume(Volume_Poti_Set); // Maximale Lautstärke über POTI
          Volume_MERK = Volume_Poti_Set;
          Serial.println(F("RESET_VOLUME_POTI_SET"));
        }
    T_Volume = millis(); 
    }