Go Down

Topic: Arduino Nano als Türklingel (Read 4919 times) previous topic - next topic

modellbahner67

Hallo qualidat,


ich komme erst jetzt dazu mich wieder damit zu befassen.

Wo muss ich denn "true" genau eintragen und wo muss ich "false" genau eintragen.
Anbei mein Sketch.

Danke für Deine Antwort.
Gruß
Günter

Tommy56

Stelle Deinen Sketch bitte in Codetags (</> oben links im Forumseditor) direkt hier ein. Das erhöht die Chance, dass ihn jemand liest.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HotSystems

ich komme erst jetzt dazu mich wieder damit zu befassen.

Ist es dir bisher nicht gelungen, die Störungen zu beseitigen ?
Was hast du denn bisher unternommen ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

postmaster-ino

@Modellbahner

Bevor Du was Störendes auslöst, setzt Du die globale Variable 'work' (typ boolean) auf true.
In den ISR hast Du ganz am Anfang eine Abfrage drin, ob 'work' true ist.
Wenn, wird diese ISR DIREKT wieder verlassen - also nicht ausgeführt.
Direkt nach der störenden Aktion setzt Du 'work' wieder auf false.
Wenn jetzt ein Interrupt zuschlägt, wird Dieser abgearbeitet.

MfG

modellbahner67

Hallo Arduinogemeinde,

@ Toomy: Danke für den Hinweis. Ich hoffe, ich mach das richtig. :smiley-confuse:
@ Hotsystems: Ich habe die Leitungen geprüft ob die eventuell einen Fehler haben. Kurzschluss oder so. Nichts. Ich habe versucht über eine andere Steckdoese anschzuschließen. Hat auch nichts geholfen. Einen Snubber eingebaut. Hat auch nicht geholfen.


#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
int taster=7;
int tasterstatus=0;

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  pinMode(taster, INPUT);
 
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));
 
  //----Set volume----
  myDFPlayer.volume(20);  //Set volume value (0~30).
  myDFPlayer.volumeUp(); //Volume Up
  myDFPlayer.volumeDown(); //Volume Down
 
  //----Set different EQ----
  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
//  myDFPlayer.EQ(DFPLAYER_EQ_POP);
//  myDFPlayer.EQ(DFPLAYER_EQ_ROCK);
//  myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);
//  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
//  myDFPlayer.EQ(DFPLAYER_EQ_BASS);
 
  //----Set device we use SD as default----
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH);
 
  //----Mp3 control----
//  myDFPlayer.sleep();     //sleep
//  myDFPlayer.reset();     //Reset the module
//  myDFPlayer.enableDAC();  //Enable On-chip DAC
//  myDFPlayer.disableDAC();  //Disable On-chip DAC
//  myDFPlayer.outputSetting(true, 15); //output setting, enable the output and set the gain to 15
 
  //----Mp3 play----

  myDFPlayer.play(0001);

  //----Read imformation----
  Serial.println(myDFPlayer.readState()); //read mp3 state
  Serial.println(myDFPlayer.readVolume()); //read current volume
  Serial.println(myDFPlayer.readEQ()); //read EQ setting
  Serial.println(myDFPlayer.readFileCounts()); //read all file counts in SD card
  Serial.println(myDFPlayer.readCurrentFileNumber()); //read current play file number
  Serial.println(myDFPlayer.readFileCountsInFolder(3)); //read fill counts in folder SD:/03
}


void loop ()


{
tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH)
{
myDFPlayer.play(0001);
}
}

Tommy56

Da ist nix von Codetags zu sehen.
Wenn das mit den Symbolen nichts wird, dann schreibe vor Deinen Code [_code] und danach [_/code] ohne die _

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HotSystems

@modellbahner67
Bitte setze deinen Sketch in Code-Tags, ich kann den so auf dem Smartphone nicht lesen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

HotSystems


@modellbahner67
Ich weiß jetzt nicht, ob du an deinem Taster auch einen Pulldown-Widerstand dran hast, da ich nicht nochmal alles durchlesen wollte.
Wenn nicht, solltest du das unbedingt nachholen.
Besser wäre es sogar, wenn du den Eingang auf LOW abfragen würdest und mit einem Pullup arbeitest.
Einen weiteren Test solltest du noch machen.
Tritt das Problem auch auf, wenn du keinen Taster, also keine Kabel am Eingang angeschlossen hast ?

Wenn nicht, könntest du dein Problem mit einem zusätzlichen Relais lösen, welches du vor den Eingangspin schaltest.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

modellbahner67

Hallo Arduinogemeinde,

Ja, einen Pulldown Widerstand habe ich am Taster. 100 Ohm.
Wenn ich den Taster abklemme, ändert sich nichts.

Ich versuch nochmal den Codx hochzuladen.

Danke an Euch schon Mal.

Gruß
modellbahne67


Code: [Select]
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
int taster=7;
int tasterstatus=0;

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  pinMode(taster, INPUT);
 
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));
 
  //----Set volume----
  myDFPlayer.volume(20);  //Set volume value (0~30).
  myDFPlayer.volumeUp(); //Volume Up
  myDFPlayer.volumeDown(); //Volume Down
 
  //----Set different EQ----
  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
//  myDFPlayer.EQ(DFPLAYER_EQ_POP);
//  myDFPlayer.EQ(DFPLAYER_EQ_ROCK);
//  myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);
//  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
//  myDFPlayer.EQ(DFPLAYER_EQ_BASS);
 
  //----Set device we use SD as default----
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH);
 
  //----Mp3 control----
//  myDFPlayer.sleep();     //sleep
//  myDFPlayer.reset();     //Reset the module
//  myDFPlayer.enableDAC();  //Enable On-chip DAC
//  myDFPlayer.disableDAC();  //Disable On-chip DAC
//  myDFPlayer.outputSetting(true, 15); //output setting, enable the output and set the gain to 15
 
  //----Mp3 play----

  myDFPlayer.play(0001);

  //----Read imformation----
  Serial.println(myDFPlayer.readState()); //read mp3 state
  Serial.println(myDFPlayer.readVolume()); //read current volume
  Serial.println(myDFPlayer.readEQ()); //read EQ setting
  Serial.println(myDFPlayer.readFileCounts()); //read all file counts in SD card
  Serial.println(myDFPlayer.readCurrentFileNumber()); //read current play file number
  Serial.println(myDFPlayer.readFileCountsInFolder(3)); //read fill counts in folder SD:/03
}


void loop ()


{
tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH)
{
myDFPlayer.play(0001);
}
}






HotSystems

#69
Feb 13, 2018, 04:27 pm Last Edit: Feb 13, 2018, 04:42 pm by HotSystems
Ja, einen Pulldown Widerstand habe ich am Taster. 100 Ohm.
Wenn ich den Taster abklemme, ändert sich nichts.
Am Taster oder direkt am Arduino-Pin ?

Pin wäre hier besser.

Edit:
Betreibst du den Arduino immer noch aus dem Netzteil für die Lampensteuerung ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

modellbahner67

Hallo HotSystems,
Der Pulldownwiderstand ist am Arduino-Pin.
Ja, ich betreibe den Arduino immer noch mit Netzteil für die Lampensteuerung.
VG
modellbahner67

HotSystems

Hallo HotSystems,
Der Pulldownwiderstand ist am Arduino-Pin.
Ja, ich betreibe den Arduino immer noch mit Netzteil für die Lampensteuerung.
VG
modellbahner67
Dann solltest du mal die Spannung am Arduino messen, wenn du Licht einschaltest.
Am besten mit einem Oszi.
Ich vermute, die bricht kurzzeitig zusammen und dein Arduino startet neu.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

modellbahner67

Hallo HotSystems,
ich habe einen Schalter zum Ein-und Ausschalten der Klingel dran. Wenn ich Aus- und wieder Einschalte, müsste doch der Aduino auch losgehen, oder?
VG

HotSystems

#73
Feb 14, 2018, 06:40 pm Last Edit: Feb 15, 2018, 08:16 am by HotSystems
Hallo HotSystems,
ich habe einen Schalter zum Ein-und Ausschalten der Klingel dran. Wenn ich Aus- und wieder Einschalte, müsste doch der Aduino auch losgehen, oder?
VG
Wenn du den oben geposteten (#68) Sketch verwendest, dann ja.
Im Setup wird einmal der DFPlayer gestartet.
Das passiert dann immer bei einem Neustart.

Wenn das nicht der Fall ist, habe ich keine Idee mehr.

Diese eine Zeile solltest du mal auskommentieren.

Habe mir den Thread nochmal durchgelesen.
Hast du meinen Vorschlag aus Post #51 mal getestet.
Du schriebst ja, wenn du den Klingeldraht abnimmst, ist es ok.
Dann sollte ein kleines Relais dazwischen auch dein Problem lösen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

modellbahner67

Guten Morgen Hotsystems,
das hatte ich noch nicht probiert. Ich habe gehofft, das Problem ohne zusätzliches Bauteil lösen zu können.
Du meinst, ich sollte ein Relais zwischen Taster und Arduino einbauen?
VG

Go Up