Das Programm kennt meinen RFID Chip nicht

Hall zusammen, ich verwende eine Arduino Nano und habe versucht eine Alarmanlage für mein E-Bike zu bauen.
Leider mache ich anscheinend beim Auslesen der Karte was falsch, komme aber nicht drauf wo der Fehler liegt. Der Arduino wird Extern mit Strom versorgt.
Ich bitte euch um Hilfe
Danke für euere Hilfestellung

#include "SPI.h"
#include "Wire.h"
#include "MFRC522.h"
#define SS_PIN 10
#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);

const int MPU_addr=0x68;
const byte schalterbruecke=4;
const byte ledrot=6;
const byte ledgruen=5;
const byte ledblau=3;
const byte ledblitz=7;
const byte signalgeber=2;
const byte sirene=8;
const long maxalarmdauer=30000;
const float offsetmin=0.01;
const float offsetmax=1.99;
byte anhaenger_uid0=0;
byte anhaenger_uid1=0;
byte anhaenger_uid2=0;
byte anhaenger_uid3=0;
byte fehleingabe=0;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
unsigned long letzteledblitzmillis=0;
unsigned long ledblitzintervall=300;
unsigned long letztesirenemillis=0;
unsigned long sireneintervall=1500;
float durchschnitt_acx=0;    
float durchschnitt_acy=0;
float durchschnitt_acz=0;
float durchschnitt_tmp=0;
float durchschnitt_gyx=0;
float durchschnitt_gyy=0;
float durchschnitt_gyz=0;
float letzte_temperatur=0;
boolean erster_start=true;
boolean scharf=false;
boolean alarm_verlassen=false;
boolean alarmaktiv=false;
boolean ledblitzzustand=LOW;
boolean sirenezustand=LOW;


void setup()
{
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  pinMode(schalterbruecke,OUTPUT);
  pinMode(ledrot,OUTPUT);
  pinMode(ledgruen,OUTPUT);
  pinMode(ledblau,OUTPUT);
  pinMode(ledblitz,OUTPUT);
  pinMode(signalgeber,OUTPUT);
  pinMode(sirene,OUTPUT);
  Wire.begin();
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
}


void led_schalten(byte rotanteil, byte gruenanteil, byte blauanteil)
{
  analogWrite(ledrot,rotanteil);
  analogWrite(ledgruen,gruenanteil);
  analogWrite(ledblau,blauanteil);
}


void ausgangsbewegungsdaten_setzen()
{
  byte i=0;
  durchschnitt_acx=0;    
  durchschnitt_acy=0;
  durchschnitt_acz=0;
  durchschnitt_tmp=0;
  durchschnitt_gyx=0;
  durchschnitt_gyy=0;
  durchschnitt_gyz=0;
  for (i=0; i<10; i++) 
    {
      Wire.beginTransmission(MPU_addr);
      Wire.write(0x3B);
      Wire.endTransmission(false);
      Wire.requestFrom(MPU_addr,14,true);
      AcX=Wire.read()<<8|Wire.read(); 
      durchschnitt_acx=durchschnitt_acx+AcX;    
      AcY=Wire.read()<<8|Wire.read(); 
      durchschnitt_acy=durchschnitt_acy+AcY;
      AcZ=Wire.read()<<8|Wire.read();  
      durchschnitt_acz=durchschnitt_acz+AcZ;
      Tmp=Wire.read()<<8|Wire.read();  
      durchschnitt_tmp=durchschnitt_tmp+(Tmp/340.00+36.53);
      GyX=Wire.read()<<8|Wire.read();  
      durchschnitt_gyx=durchschnitt_gyx+GyX;
      GyY=Wire.read()<<8|Wire.read(); 
      durchschnitt_gyy=durchschnitt_gyy+GyY;
      GyZ=Wire.read()<<8|Wire.read();
      durchschnitt_gyz=durchschnitt_gyz+GyZ;
      delay(333);
    }
  durchschnitt_acx=durchschnitt_acx/10;
  durchschnitt_acy=durchschnitt_acy/10;
  durchschnitt_acz=durchschnitt_acz/10;
  durchschnitt_tmp=durchschnitt_tmp/10; 
  durchschnitt_gyx=durchschnitt_gyx/10;
  durchschnitt_gyy=durchschnitt_gyy/10;
  durchschnitt_gyz=durchschnitt_gyz/10;
  letzte_temperatur=durchschnitt_tmp;   
}


boolean alarm_notwendig()
{
  boolean accelerationx_ungleich=false;
  boolean accelerationy_ungleich=false;
  boolean accelerationz_ungleich=false;
  boolean gyrox_ungleich=false;
  boolean gyroy_ungleich=false;
  boolean gyroz_ungleich=false;
  boolean temperature_ungleich=false;
  
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,14,true);
  AcX=Wire.read()<<8|Wire.read();   
  AcY=Wire.read()<<8|Wire.read(); 
  AcZ=Wire.read()<<8|Wire.read();
  Tmp=Wire.read()<<8|Wire.read();
  GyX=Wire.read()<<8|Wire.read();  
  GyY=Wire.read()<<8|Wire.read(); 
  GyZ=Wire.read()<<8|Wire.read();
  if (GyX >= 0)
    {
      if ((GyX < (durchschnitt_gyx*offsetmin)) || (GyX > (durchschnitt_gyx*offsetmax)))
        {
          gyrox_ungleich=true;
        }
      else
        {
          gyrox_ungleich=false;
        }
    }
  else
    {
      if ((GyX > (durchschnitt_gyx*offsetmin)) || (GyX < (durchschnitt_gyx*offsetmax)))
        {
          gyrox_ungleich=true;
        }
      else
        {
          gyrox_ungleich=false;
        }        
    }
  if (GyY >= 0)
    {      
      if ((GyY < (durchschnitt_gyy*offsetmin)) || (GyY > (durchschnitt_gyy*offsetmax)))
        {
          gyroy_ungleich=true;
        }
      else
        {
          gyroy_ungleich=false;
        }
    }
  else
    {
      if ((GyY > (durchschnitt_gyy*offsetmin)) || (GyY < (durchschnitt_gyy*offsetmax)))
        {
          gyroy_ungleich=true;
        }
      else
        {
          gyroy_ungleich=false;
        } 
    }
  if (GyZ >= 0)
    {       
      if ((GyZ < (durchschnitt_gyz*offsetmin)) || (GyZ > (durchschnitt_gyz*offsetmax)))
        {
          gyroz_ungleich=true;
        }
      else
        {
          gyroz_ungleich=false;
        }
    }
  else
    {
      if ((GyZ > (durchschnitt_gyz*offsetmin)) || (GyZ < (durchschnitt_gyz*offsetmax)))
        {
          gyroz_ungleich=true;
        }
      else
        {
          gyroz_ungleich=false;
        }  
    }
  if ((Tmp/340.00+36.53) < (letzte_temperatur-3))
    {   
      letzte_temperatur=Tmp/340.00+36.53;
      temperature_ungleich=true;
    }
  else
    {
      letzte_temperatur=Tmp/340.00+36.53;
      temperature_ungleich=false;
    }

  if ((gyrox_ungleich) || (gyroy_ungleich) || (gyroz_ungleich))
    {
      return(true);
    }
  else
    {

      return(false);
    }
}


void loop()
{
  if (erster_start)
    {
      digitalWrite(schalterbruecke,HIGH);
      led_schalten(0,0,255);
      erster_start=false;
    }
 if (!mfrc522.PICC_IsNewCardPresent() )
 
    {
           if (scharf)
        {
          if (alarm_notwendig())
            {
              unsigned long alarmdauer=millis();
              while (((millis()-alarmdauer) < maxalarmdauer) && (!alarm_verlassen))
                {
                  if (mfrc522.PICC_IsNewCardPresent())
                    {
                      if (mfrc522.PICC_ReadCardSerial())
                        {
                          for (byte i=0; i=ledblitzintervall;) 
                    {
                      letzteledblitzmillis=millis();
                      ledblitzzustand=!ledblitzzustand;
                      digitalWrite(ledblitz,ledblitzzustand);
                    }  
                  if ((millis()-letztesirenemillis) > sireneintervall) 
                    {
                      letztesirenemillis=millis();
                      sirenezustand=!sirenezustand;
                      digitalWrite(sirene,sirenezustand);
                    }
                }
              if (alarm_verlassen)
                {    
                  alarm_verlassen=false;
                  ledblitzzustand=false;
                  digitalWrite(ledblitz,ledblitzzustand);
                  sirenezustand=false;
                  digitalWrite(sirene,sirenezustand);
                  scharf=false;
                  digitalWrite(schalterbruecke,HIGH);
                  led_schalten(0,0,255);
                  digitalWrite(signalgeber,HIGH);
                  delay(300);
                  digitalWrite(signalgeber,LOW);
                  delay(100);
                  digitalWrite(signalgeber,HIGH);
                  delay(300);
                  digitalWrite(signalgeber,LOW); 
                  ausgangsbewegungsdaten_setzen();
                } 
              else
                {
                  alarm_verlassen=false;
                  ledblitzzustand=false;
                  digitalWrite(ledblitz,ledblitzzustand);
                  sirenezustand=false;
                  digitalWrite(sirene,sirenezustand);
                  scharf=true;
                  digitalWrite(schalterbruecke,LOW);
                  led_schalten(0,255,0);
                  digitalWrite(signalgeber,HIGH);
                  delay(300);
                  digitalWrite(signalgeber,LOW);
                  delay(100);
                  digitalWrite(signalgeber,HIGH);
                  delay(300);
                  digitalWrite(signalgeber,LOW); 
                  ausgangsbewegungsdaten_setzen(); 
                  led_schalten(0,0,0);                 
                }
            } 
        }
      return;
    }
  if (!mfrc522.PICC_ReadCardSerial())
    {
      return;
    }
  for (byte i=0; i < mfrc522.uid.size; i++)
    {
      switch(i) 
        {
          case 0: anhaenger_uid0=mfrc522.uid.uidByte[i]; break;
          case 1: anhaenger_uid1=mfrc522.uid.uidByte[i]; break;
          case 2: anhaenger_uid2=mfrc522.uid.uidByte[i]; break;
          case 3: anhaenger_uid3=mfrc522.uid.uidByte[i]; break;
          default: break;
        }
    }
  if (fehleingabe<=5)
    {  
      if (anhaenger_uid0==2423090) 
        {
          fehleingabe=0;
          digitalWrite(signalgeber,HIGH);
          delay(300);
          digitalWrite(signalgeber,LOW);
          delay(100);
          digitalWrite(signalgeber,HIGH);
          delay(300);
          digitalWrite(signalgeber,LOW);    
          if (!scharf)
            {
              scharf=true;
              digitalWrite(schalterbruecke,LOW);
              led_schalten(0,255,0);
              ausgangsbewegungsdaten_setzen();
            }
          else
            {
              scharf=false;
              digitalWrite(schalterbruecke,HIGH);
              led_schalten(0,0,255);
              delay(3000);
            }
          led_schalten(0,0,0);
        }
      else
        {
          fehleingabe++;
          led_schalten(255,0,0);
          digitalWrite(signalgeber,HIGH);
          delay(1000);
          digitalWrite(signalgeber,LOW); 
          delay(3000);
          led_schalten(255,0,0);
        }
    } 
  else   
    {
      fehleingabe=0;
      led_schalten(255,0,0);
      digitalWrite(signalgeber,HIGH);
      delay(1000);
      digitalWrite(signalgeber,LOW);
      delay(1000);
      digitalWrite(signalgeber,HIGH);
      delay(1000);
      digitalWrite(signalgeber,LOW); 
      delay(15000);
      led_schalten(255,0,0);
    }
        }
    }
 }

Wie man dieses Forum benutzt - bitte lesen

viel besser mit dem Code, wir vermissen die Hardwareinformationen und wie Ihr Gerät verkabelt / mit Strom versorgt wird

Tipp:
DATEI - VOREINSTELLUNGEN - Ausführliche Ausgabe währen [x] Kompilierung
Darunter: Compilerwarnungen: ALLE

Danke für die Hilfe, ich habe jetzt ein paar Zeilen geändert, geht aber trotzdem nicht, kannst du mir bitte weiter helfen? for (byte i=0; i ledblitzintervall)
{
if (((anhaenger_uid0==164) && (anhaenger_uid1==103) && (anhaenger_uid2==158) && (anhaenger_uid3==187)) || ((anhaenger_uid0==67) && (anhaenger_uid1==144) && (anhaenger_uid2==215) && (anhaenger_uid3==0)))
{``
Was mache ich falsch?

Wenn hier nur ein byte rein passt:
byte anhaenger_uid0=0;
kannst Du hier:
if (anhaenger_uid0==2423090)

nicht auf einen unsigned long vergleichen.

Und was soll
for (byte i=0; i ledblitzintervall)
das machen?
for

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.