Warum hast du das in zwei verschiedenen Reihenfolgen? Um dich und die Leser zu verwirren?
digitalWrite(dirr,HIGH);
digitalWrite(dirl,HIGH);
digitalWrite(stepr,HIGH);
digitalWrite(stepl,LOW);
digitalWrite(stepr,LOW);
digitalWrite(stepl,LOW);
digitalWrite(dirr,HIGH);
digitalWrite(dirl,HIGH);
Warum verwendest du für diese häufige Sequenz keine Funktion?
Ein Programm in dem das Folgende sinnvollen Output erzeugt wird dir keine Freude bereiten.
laufzeit = millis() - laufzeit;
Serial.print("\nLaufzeit loop: ");
Serial.print(laufzeit);
Serial.print("\n\tEnde loop\n"); //Ausgabe für Log
Die Laufzeit von loop bestimmt jede Reaktionszeit, bei mehr als ein paar ms würde ich mir da Sorgen machen.
Bei geplanten Laufzeiten von über drei Sekunden... puh.
noInterrupts();
//NFC Routine starten
interrupts();
digitalWrite(8,HIGH); //LED für NFC leuchten lassen
delay(3000); //Durch Routine ersetzen.
digitalWrite(8,LOW);
Warum soll die NFC Routine ohne Interrupts starten?
Mit Interrupts solltest du dich mehr auseinandersetzen, da hast du offensichtlich Nachholbedarf.
https://www.gammon.com.au/interrupts
// noInterrupts(); //ausprobieren, bei bedenken wieder entfernen 141
Durch Verwenden des F() Macros kannst Unmengen RAM sparen.
http://playground.arduino.cc/Learning/Memory