Soundboard+ Relais

Guuten Morgen...mein Konto is aber eingestaubt..schande über mich.

Ich bastel grade an einem Soundboard mit 12 Buttons...funzt auch gut...eingentlich...nur das die Powerbank nach 39 Sekunden ausgeht weil zu wenig mA und der DFPlayer beim einschalten knackt...könnte ich theoretisch mit leben..wollte ich aber so erstma nicht.
Laut Beiträgen kann man auf dem DFPlayer was umlöten, dadurch würde das knacken verschwinden und er noch weniger mA verbrauchen...das würde jedoch nicht das 39 Sekunden Problem lösen...
Mit einem Relais das nach definierter Zeit anzieht nachdem der DFPlayer AN is und den Lautsprecher frei gäbe wäre...durch den Strom des Relais...auch das gelöst.

Soundboard Sketch läuft....Relais Sketch läuft...nur zusammen leider nicht...
Ich verstehe leider nicht warum...
Schubst mich einer mal in die Richtung?

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

const int Rel = 17;// Rel Pin
unsigned long currentMillis=0;
const long interval = 5000; //Einschaltverzögerung (milliseconds)

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

int buttonPins[12] = {2,3,4,5,6,7,8,9,12,13,14,15};   // Taster

void setup() {
  mySoftwareSerial.begin(9600);           // SoftwareSerial Kommunikation
  Serial.begin(115200);                   // Serial Monitor

  if (!myDFPlayer.begin(mySoftwareSerial)) {  // Verbindung der Software Serial Kommunikation mit dem DFPlayer
    Serial.println(F("Unable to begin:"));
    Serial.println(F("Verkabelung Falsch"));
    Serial.println(F("Keine SD Karte"));
    while(true){                          
      delay(0);                          
  }
    
  myDFPlayer.volume(25);                      // Lautstärke auf 10 ( Werte von 0 – 30 ist möglich)
  for (int i=0; i<12; i++){                   // wiederhole 16 Mal (für jeden Taster)
    pinMode(buttonPins[i], INPUT_PULLUP);     // Taster werden mit internen Pullup-Widerständen verwendet  
  }
    pinMode(Rel, OUTPUT);                     //Relais Pin
   // digitalWrite(Rel, LOW);                   //Setze auf Low
 }
}

void loop() {

    if (millis() - currentMillis > interval)
    {
    digitalWrite(Rel, HIGH);
    }
  
  for (int i=0; i<12; i++){                   // wiederhole 12 Mal (für jeden Taster)
    if (digitalRead(buttonPins[i]) == LOW){   // wenn ein Taster gedrückt wird
     Serial.println(i);
     myDFPlayer.playMp3Folder(i+1);                      // spiele das MP3 der Nummer des Tasters nach von der SD-Karte
     delay(0);
    }
  }
}

Was ist denn das Problem? Zieht das Relais nicht?

Oh..ja natürlich..Sorry
Das Problem ist tatsächlich dass das Relais nicht anzieht im kombinierten Sketch

drück mal STRG-T und formatiere deinen Sketch, dann siehst die Struktur und Einrückungen besser.

Statte deinen Sketch mit Serial.Print Ausgaben aus damit du siehst was dein Sketch macht.

Welcher Microcontroller soll da programmiert werden?

Hier mal zum testen.
Wenn das Relais bereits beim Start EIN ist, dann musst Du oben die Konstante an auf HIGH setzen.

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

const byte Rel = 17;// Rel Pin
const bool an = LOW;                     // constante ist LOWaktiv oder HIGHaktiv zu setzen

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

const byte buttonNums = 12;
const byte buttonPins[buttonNums] = {2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15}; // Taster

void setup()
{
  mySoftwareSerial.begin(9600);           // SoftwareSerial Kommunikation
  Serial.begin(115200);                   // Serial Monitor
  if (!myDFPlayer.begin(mySoftwareSerial))    // Verbindung der Software Serial Kommunikation mit dem DFPlayer
  {
    Serial.println(F("Unable to begin:"));
    Serial.println(F("Verkabelung Falsch"));
    Serial.println(F("Keine SD Karte"));
    while (true)
    {
      delay(0);
    }
  }
  myDFPlayer.volume(25);                      // Lautstärke auf 10 ( Werte von 0 – 30 ist möglich)
  for (int i = 0; i < buttonNums; i++)                // wiederhole 16 Mal (für jeden Taster)
  {
    pinMode(buttonPins[i], INPUT_PULLUP);     // Taster werden mit internen Pullup-Widerständen verwendet
  }
  pinMode(Rel, OUTPUT);                     //Relais Pin
  digitalWrite(Rel, !an);                   //Setze auf aus
}


void loop()
{
  if (digitalRead(Rel) == an &&
      millis() > 7000)
  {
    digitalWrite(Rel, HIGH);
  }
  for (int i = 0; i < buttonNums; i++)                // wiederhole 12 Mal (für jeden Taster)
  {
    if (digitalRead(buttonPins[i]) == LOW)    // wenn ein Taster gedrückt wird
    {
      Serial.println(i);
      myDFPlayer.playMp3Folder(i + 1);                    // spiele das MP3 der Nummer des Tasters nach von der SD-Karte
      delay(0);
    }
  }
}

Das Relais direkt am Pin, oder mit Transistor dazwieschen?

Helloo...also das Relais is direkt am Pin und mit dem Sketch:

const int Rel = 17;// Rel Pin
unsigned long currentMillis = 0;
const long interval = 5000; //Einschaltverzögerung (milliseconds)



void setup()
{
  pinMode(Rel, OUTPUT);
  digitalWrite(Rel, LOW);

}

void loop()
{
  if (millis() - currentMillis > interval)
  {
    digitalWrite(Rel, HIGH);
  }
}

...funktioniert es auch..also das Relais zieht einwandfrei an.

@ my_xy_projekt
Mit Deinem Sketch macht es leider auch nichts...

Das ganze läuft auf einem Nano
Ist iwas vielleich falsch geklammert, so dass es garnicht richtig deklariert ist?

Auweia

Was hat das Relais für einen Spulenwiderstand?

Nehmen wir an du benutzt einen 5V nano

Der IOpin soll mit maximal 20 mA belastet werden.
20 mA heisst Spulenwiderstand mindestens
5V / 0.02A = 250 Ohm.

Das 5V Relais hat höchstwahrscheinlich einen kleineren Spulenwiderstand
irgendwie muss bei schlappen 5V genug magnetische Kraft zustande kommen um die Relaismechanik gegen die Rückstellfeder anzuziehen.
Deshalb kleiner Spulenwiderstand ==> hoher Relaisstrom

Wenn du die Spannung abschaltest dann entsteht eine Spannungsspitze viel höher als 5V
die kann den µC zerstören. Deshalb muss da eine sogenannte Freilaufdiode dazu.

Oder ist das ganze ein Relais-Modul dass die entsprechenden Schaltungsdetails auf einer kleinen Platine hat?
Es zeigt sich mal wieder IMMER Datenbläter von den verwendeten Bauteilen posten
vgs

@ StefanL38
Ja das ist eine fertige Platine mit allem was dazu gehört...
Ich ändere jediglich den Sketch auf dem µC...
Bei dem einem Sketch läufts beim anderen nicht...
Relais

No JOY mit diesem "JOY-IT" "Datenblatt".

Da steht nur Operating Voltage 5V. Keine Angabe wie viel mA der Schalteingang zieht.
Das ist kein Datenblatt das ist Papier- bzw. Stromverschwendung ! Grrrr! :grimacing:

Den Spruch der als Werbespruch unten auf dem Datenblatt steht "Time for more"
haben Sie immer noch nicht umgesetzt.


Das ist
natürlich nur der Versuchsaufbau um das Relais zu testen..bei dem zusehenden Relais_Modul ist es anders rum ich weiss...High -> Low / Low -> High...aber das berücksichtige ich dabei.

Der orignal Aufbau ist aber vom Relaisteil gleich..lege ich den IN direkt auf 5 Volt...also simuliere ich das HIGH...zieht es auch an und der der Rest läuft ohne Probleme.

Der Relais-Sketch allein funktioniert.

:joy: Time for more...wie wahr...viel mehr Zeit braucht es da

schaut so als als hättest du da einen falschen Pin genommen zum Ansteuern.
Das schaut nicht nach 17 aus.
Eher 16. Schreib doch gleich A2 hin.

Zum Testen gehe ich momentan aus dem Nano für die 5V...im richtigen Aufbau gehe ich Sternförmig mit Vcc und GND direkt nach der PowerBank raus...auch für den DFPlayer

Btw für einen MidiController zum steuern von virtuellen Musikinstrumente auf dem PC
habe ich seit Jahren 2 Relais über die Nano 5V laufen...nichts passiert :slightly_smiling_face:

Und mit den Ausgängen habe ich schon hin und her versucht..dachte vielleicht das eine Lib einen Ausgang blockiert und dadurch evtl der A2 oder A1 nicht geht...vielleicht kann man keinen Analog Ausgang nutzen?
Wobei is ja auch nonsens...im RelaisSketch geht der ja auch....

Na ich probiere mal weiter...vielen Dank für eure Anregungen...
Wenn ihr noch Gedanken habt gerne her damit.

Schöne Feiertage euch allen..übertreibt es ein bisschen :love_you_gesture:

Die Soundbox ansich macht alles was sie soll....bin noch nicht im reinen mit den Kabeln...solange es nicht komplett ist...aber so ieht sie aus.
:see_no_evil:


Nimm mal den Blink Sketch aus den Beispielen, ändere den Pin und teste. Das MUSS funktionieren

Mein TestRelaisSketch geht ja auch

const int Rel = 16;// Rel Pin
unsigned long currentMillis = 0;
const long interval = 100; //Einschaltverzögerung (milliseconds)



void setup()
{
  pinMode(Rel, OUTPUT);
  digitalWrite(Rel, LOW);

}

void loop()
{
  if (millis() - currentMillis > interval)
  {
    digitalWrite(Rel, HIGH);
  }
}

Implementier ich das in den Soundboard Sketch...zieht das Relais aber nicht mehr an...weder auf meinem Testboard noch in der Soundbox

Is kein HIGH oder LOW Fehler und auch die Pin´s sind nicht die falschen..allesgetestet...

Und dass das funktionieren MUSS!!! Sag ich schon den ganzen Morgen :joy:

Du einen 1kOhm Widerstand in der RX Leitung (RX auf dem DFplayer)?
Grüße Uwe

Good morning...Jo den hab ich drin...das knacken kommt aber vom Amplifier...wenn der Spannung bekommt, gibt es das typische Ein/Aus Geräusch...is eingentlich auch nicht schlimm...aber mit dem Relais hätte ich einfach verzögert den Lautsprecher frei gegeben und man hätte das nicht wahrgenommen.

DFPlayer umbau

Ich habs nicht getestet.

LG