I didn't check this Post anymore, but i solved the Problem with RFID already. I just put the RFID Code last, the if (code=xxxxxxx) part in the middle, and the PIR Part first. The DFPlayer Problem is still existing, but, the Deadline is already over, so i changed the Code that an Piezo Speaker "replaces" The DFPlayer.
It works like this, without the DFPlayer, but it seems the DFPlayer is broken somehow, because it won't work with any code excepting the Library Examples. Even with code which worked before it won't work.
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LCD_I2C.h> //importiert eine Bibliothek um das LCD simpel anzusteuern
#define SS_PIN 53
#define RST_PIN 5
MFRC522 mfrc522(SS_PIN, RST_PIN);
const int IR=40; //weist "IR" (für Infarot) den Wert "40" zu.
const int LED=12; //weist "LED" den Wert "12" zu.
const int Pieper=7;// weist "Pieper" den Wert "7" zu.
int Bewegung=0; //speichert vorrübergehend ob eine Bewegung erkannt wurde oder nicht.
int y=0;//weist "y" den wert "0" zu.
LCD_I2C lcd(0x3F);//legt den Typ des LCD's fest
//SoftwareSerial mySoftwareSerial(10, 11); // Legt Pin 10 und 11 als RX/TX Ports am DFPlayer fest
//DFRobotDFPlayerMini myDFPlayer;
void setup()
{
lcd.begin();
lcd.backlight(); //legt fest dass die LED Hintergrundbeleuchtung des LCD's nicht deaktiviert sein soll.
pinMode(IR, INPUT);//legt fest dass IR/ Pin 40 ein Input ist.
pinMode(LED, OUTPUT);//legt fest dass LED/ Pin 12 ein Output ist.
pinMode(Pieper, OUTPUT);//legt fest, dass Pieper/ Pin 7 ein Output ist.
//mySoftwareSerial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();//aktiviert den RFID Reader/das RC-522 Modul
lcd.setCursor(0, 0);//setzt den Cursor des LCDs.
lcd.print("AKTIV"); // legt den Text fest welcher im LCD gezeigt werden soll.
lcd.setCursor(0, 1);//setzt den Cursor des LCDs
lcd.print("ARMED"); // legt den Text fest welcher im LCD gezeigt werden soll.
//myDFPlayer.volume(3);
}
void loop()
{
if (y==0)//wenn y==0, dann:
{
Bewegung=digitalRead(IR);//"Bewegung" wird mit dem Output des Bewegungsmelders gleichgesetzt.
if (Bewegung == HIGH)//Wenn Bewegung erkannt wird, dann:
{
digitalWrite(12, HIGH);// lässt Strom durch Pin 12 fließen.
digitalWrite(7, HIGH);// lässt Strom durch Pin 7 fließen.
delay (500);
digitalWrite (12, LOW);//beendet den Stromfluss durch Pin 12.
digitalWrite (7, LOW);//beendet den Stromfluss durch Pin 7.
delay(500);
//myDFPlayer.play(1);
}
}
if ( ! mfrc522.PICC_IsNewCardPresent())//Überprüftob ein RFID Tag nach PICC-Standart vorhanden ist.
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
long code=0;//ermöglicht die Speicherung langer Zahlen.
for (byte i = 0; i < mfrc522.uid.size; i++)//Berechnet den Code des RFID Tags
{
code=((code+mfrc522.uid.uidByte[i])*10);
}
Serial.print("Die Kartennummer lautet:");
Serial.println(code);
if (code==1264240) // Wenn der Code 1254240 lautet, dann:
{
lcd.setCursor(0, 0);//setzt den Cursor des LCDs
lcd.print("INAKTIV"); // legt den Text fest welcher im LCD gezeigt werden soll.
lcd.setCursor(0, 1);//setzt den Cursor des LCDs
lcd.print("DISARMED"); // legt den Text fest welcher im LCD gezeigt werden soll.
digitalWrite(12, HIGH);// lässt Strom durch Pin 12 fließen.
y++;// erhöht den wert "y" um 1.
}
}