ich möchte eine "Kindersicherung" bauen. Ich habe geplant, dass man zwei verschiedene Chips hat, einen für das Kind und den anderen für den Erwachsenen. Wenn nur das Kind im Haus ist, also den Chip an die Tür gehalten hat, kann es eine Lampe nicht über einen Knopf anschalten. Wenn jedoch der Erwachsene im Haus ist, soll sich der Knopf betätigen lassen und die Lampe geht an. Wenn der Erwachsene jedoch das Haus verlässt soll der Knopf nicht mehr zu betätigen sein. Ich habe also die Überlegung, dass man pro "Dranhalten" des Chips einen Zustand ändert und somit wenn Zustand XY erfüllt ist, sich die Lampe anschalten lässt. Ist es möglich den Zustand einer Variablen durch "Dranhalten" zu ändern?
Ich hoffe der ein oder andere versteht mein Problem, wenn Fragen auftreten, wie ich was meine, beantworte ich diese gerne.
dedijan:
.... Ist es möglich den Zustand einer Variablen durch "Dranhalten" zu ändern?
.....
Na klar ist das möglich.
Jetzt mal eine Frage an dich:
Wie steht es denn mit deinen Programmierkenntnissen ?
Das zu programmieren, ist für einen Anfänger nicht ganz trivial.
noiasca:
Ja.
Aber das scheint mir nicht die ganze Frage zu sein...
Die erste Frage schon. Doch die zweite Frage lautet: mit welchem Befehl?
HotSystems:
Na klar ist das möglich.
Jetzt mal eine Frage an dich:
Wie steht es denn mit deinen Programmierkenntnissen ?
Das zu programmieren, ist für einen Anfänger nicht ganz trivial.
Ein blutiger Anfänger bin ich nicht, aber auch kein Profi.
Ich möchte es lernen und nicht einfach irgendwo kopieren und fertig, ich möchte es auch verstehen und anderswo einsetzen können, weshalb ich mich an dieses Forum wende.
dedijan:
Ein blutiger Anfänger bin ich nicht, aber auch kein Profi.
Ich möchte es lernen und nicht einfach irgendwo kopieren und fertig, ich möchte es auch verstehen und anderswo einsetzen können, weshalb ich mich an dieses Forum wende.
Für Lösungsansätze bin ich offen.
Dann besorge dir die Library zu deinem RFID und sieh in den beigefügten Beispielen nach.
Da findest du schon mal einiges, was du brauchst.
Wenn dann noch Fragen offen sind, darfst du die hier gern stellen.
Im übrigen "einen bestimmten Befehl" dazu gibt es nicht.
Es sind sicher eine große Menge Anweisungen, die du dazu benötigst.
Was für einen RFID-Reader benutzt Du denn?
Wenn Du noch keinen hast, dann kaufe Dir einen, zu dem es eine passende Arduino-Lib gibt.
Dort sind im Normalfall Beispiele drin.
Lies erst mal die ID Deiner Karten aus. Achtung die Karten müssen zum Leser passen.
Wenn Das funktioniert, kommt der nächste Schritt.
Tommy56:
Gut. Wie sehen Deine ID aus? Von wievielen verschiedenen Karten sprechen wir?
Gruß Tommy
Wir sprechen von einem Chip mit einer 6-stelligen ID.
HotSystems:
Ohhh....super, dann bist du doch schon ganz schön weit.
Was hast du denn noch probiert ?
hast du die Beispiele mal angesehen ?
Ich habe probiert mehrere if-Bedingungen zu erstellen, was leider zu keinem Erfolg führte. Beispiele habe ich mir noch nicht angesehen, werde ich machen.
dedijan:
Ich habe probiert mehrere if-Bedingungen zu erstellen, was leider zu keinem Erfolg führte. Beispiele habe ich mir noch nicht angesehen, werde ich machen.
Das ist immer das Erste, was man machen sollt.
Wozu sind sonst die Beispiele drin ?
Und warum zeigst du uns die Sketche, die du probiert hast, nicht ?
Woher sollen wir sonst wissen, was du kannst und was nicht.
Und mit einem Chip (heißen übrigens Tags) kommst du nicht weiter.
schau dir bei den einfachen Digital Beispielen noch das "Debounce" an. Das trifft es imho gut, wie du eine Variable durch einen Event (im Beispiel halt durch einen Taster) setzt bzw. löscht .
Zum Verständnis soll es reichen.
Das debounce beispiel zeigt wie man Variablen als Status verwendet und verändert. Und wenn es Schwierigkeiten im Verständnis gibt, wie man eine Variable als Speicher verwendet, dann soll dieses Klick Beispiel wunderbar zum Verständnis beitragen. Deshalb soll er sich das ansehen.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
int taster=4;
int tasterstatus=0;
int rfid; //Zustand, verändert durch richtige ID
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (2, OUTPUT);
pinMode(taster, INPUT);
}
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);
tasterstatus=digitalRead(taster);
if (code==658790) { //wenn die ID richtig ist, dann rfid=1
int rfid=1;
}
else {
int rfid=0;
}
if (rfid=1) { // wenn die Bedingung erfüllt ist, dass die richtige ID verwendet wurde, wird auf den Taster gewartet, um die LED zum Leuchten zu bringen
if (tasterstatus == HIGH) {
digitalWrite (2, HIGH);
delay (5000); // für 5 Sekunden
}
else if (tasterstatus == LOW) {
digitalWrite (2, LOW);
}
else if (rfid=0){
digitalWrite (2, LOW);
}
}
}