Hallo,
und zwar sitze ich hier vor meinem Code und komme da nicht sinnvoll weiter.
Den Code habe ich mir aus einem anderen Projekt genommen und möchte ihn jetzt gerne
für meine Zwecke umschreiben.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (2, OUTPUT); // Der Pin 2 ist jetzt ein Ausgang (Hier wird eine LED angeschlossen)
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
long code=0;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
code=((code+mfrc522.uid.uidByte[i])*10);
}
Serial.print("Die Kartennummer lautet:");
Serial.println(code);
// Ab hier erfolgt die erweiterung des Programms.
if (code==1032920) // Wenn der Zahlencode 1031720 lautet...
{ // Programmabschniss öffnen
digitalWrite (2, HIGH); // ...dann soll die LED an Pin 2 leuchten...
delay (5000); // für 5 Sekunden
digitalWrite (2, LOW); // … und danach wieder aus gehen.
} // Programmabschnitt schließen
} // Sketch abschließen
Der Code bewirkt, das wenn die Karte 1032920 erkannt wird eine LED angeht, dann bleibt sie für 5 Sekunden ann und geht aus.
Jetzt möchte ich den Code so umschreiben, das die LED angeht wenn ich mit der Karte über den Empfänger gehe und solange an bleibt, bis das ich sie wieder drüber ziehe.
Wie muss ich den Code umschreiben das er das bis zum nächsten erkennen hält???
MFG
Black Zero
Hallo,
du solltest dich ggf. erst einmal durch die Tutorials arbeiten. Vorallem der Punkt "BlinkWithousDelay" ist sehr wichtig. Codekopieren ist überhaupt nicht hilfreich!
Habe mit RFID + Arduino keinerlei erfahrung.
if (code==1032920) // Wenn der Zahlencode 1031720 lautet...
{ // Programmabschniss öffnen
digitalWrite (2, HIGH); // ...dann soll die LED an Pin 2 leuchten...
delay (5000); // für 5 Sekunden
digitalWrite (2, LOW); // … und danach wieder aus gehen.
} // Programmabschnitt schließen
Aber der Abschnitt kann anders gelöst werden.
// innerhalb der loop
static byte stateLed = 0;
if(code == 1032929) {
stateLed ^= 1; // toggelt den Wert von stateLed
digitalWrite(LEDPIN, stateLed);
}
Und setze deinen Sketch bitte in Code-Tags, damit dieser besser lesbar ist.
Schaltfläche </> verwenden, oben links im Editor.
Hot, der Text wurde jetzt editiert.
sschultewolter, das ist jetzt mein erstes Projekt was ich mit dem Arduino bewerkstelligen will.
Soll jetzt aussagen, das ich die Platine vor ein paar Tagen erst bekommen habe, und jetzt gerade
erst damit anfange und noch keine große Ahnung habe.
Dazu kommt, das englische Anleitungen leider noch ein Problem für mich darstellen.
Darum wäre es sehr nett wenn du mir erklären könntest wie ich den Code
ändern muss, damit die Led beim ersten Kontakt angeht und beim nächsten wieder aus.
MFG
Black Zero
Wenn du einen komplett fertigen Sketch bekommst ist der Lerneffekt nicht gerade groß und bei jedem weiteren Problem oder Erweiterung musst du wieder nachfragen.
Was du suchst ist die Funktion eines Stromstoßschalters, diese musst du nur noch mit deinem RFID Code aktivieren und fertig.
Stromstoßschalter Arduino
Gruß
Also wenn ich das richtig sehe, dann muss der Code wie folgt aussehen:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (2, OUTPUT); // Der Pin 2 ist jetzt ein Ausgang (Hier wird eine LED angeschlossen)
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
long code=0;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
code=((code+mfrc522.uid.uidByte[i])*10);
}
Serial.print("Die Kartennummer lautet:");
Serial.println(code);
// Ab hier erfolgt die erweiterung des Programms.
if (code==1032920) // Wenn der Zahlencode 1031720 lautet...
{ // Programmabschniss öffnen
if (2 == LOW) {
digitalWrite(2, HIGH);
}
if (2 == HIGH) {
digitalWrite(2, LOW);
}
} // Programmabschnitt schließen
// put your main code here, to run repeatedly:
}
Doch damit funktioniert das leider nicht.
Ich dachte mir schon das das ganze doch etwas zu einfach gewesen wäre.
Wenn ich das richtig verstanden habe, dann schaut er ja welchen Zustand
if (2 == LOW) {
digitalWrite(2, HIGH);
if = ist der Wert (2 == LOW) dann digitalWrite(2, HIGH),
ist der Wert (2 == HIGH) dann digitalWrite(2, LOW).
Wo ist jetzt hier der Haken???
MFG
Black Zero
Ich habe das ganze jetzt durch Unterstützung gelöst bekommen.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
int led1togglestate = LOW; //Blink LED State
int led2togglestate = LOW; //Blink LED State
int led3togglestate = LOW; //Blink LED State
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (2, OUTPUT); // Der Pin 2 ist jetzt ein Ausgang (Hier wird eine LED angeschlossen)
pinMode (3, OUTPUT); // Der Pin 2 ist jetzt ein Ausgang (Hier wird eine LED angeschlossen)
pinMode (4, OUTPUT); // Der Pin 2 ist jetzt ein Ausgang (Hier wird eine LED angeschlossen)
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
long code=0;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
code=((code+mfrc522.uid.uidByte[i])*10);
}
Serial.print("Die Kartennummer lautet:");
Serial.println(code);
// Ab hier erfolgt die erweiterung des Programms.
if (code==1232922) // Wenn der Zahlencode 1232922 lautet...
{
if (led1togglestate == LOW){
led1togglestate = HIGH;
}else{
led1togglestate = LOW;
}
}
digitalWrite(2, led1togglestate);
delay(1000);
// Ab hier erfolgt die erweiterung des Programms.
if (code==1232923) // Wenn der Zahlencode 1232922 lautet...
{
if (led2togglestate == LOW){
led2togglestate = HIGH;
}else{
led2togglestate = LOW;
}
}
digitalWrite(3, led2togglestate);
delay(1000);
// Ab hier erfolgt die erweiterung des Programms.
if (code==1232924) // Wenn der Zahlencode 1232922 lautet...
{
if (led3togglestate == LOW){
led3togglestate = HIGH;
}else{
led3togglestate = LOW;
}
}
digitalWrite(4, led3togglestate);
delay(1000);
} // Sketch abschließen
Hoffe das das dem ein oder anderen auch weiter hilft.
MFG
Black Zero