Arduino rfid kart LED yakma

Katılım
17 Ekim 2020
Mesajlar
1.722
Çözümler
1
Daha fazla  
Sistem Özellikleri
ryzen 5 3500 işlemci rx580 ekran kartı asrock a320m hdvr4 anakart highpower 500w psu
Cinsiyet
Erkek
Kod bu.

Kod:
#include <SPI.h> //SPI kütüphanemizi tanımlıyoruz.

#include <MFRC522.h> //MFRC522 kütüphanemizi tanımlıyoruz.

#include <Servo.h>

//Servo kütüphanemizi tanımlıyoruz.

int RST_PIN = 9; //RC522 modülü reset pinini tanımlıyoruz.

int SS_PIN = 10; //RC522 modülü chip select pinini tanımlıyoruz.

int servoPin = 8; //Servo motor pinini tanımlıyoruz.

int buzzerPin = 7;

int notaSayisi = 8;

int D = 2000;

int notalar[] = {D};

Servo motor; //Servo motor için değişken oluşturuyoruz.

MFRC522 rfid(SS_PIN, RST_PIN); //RC522 modülü ayarlarını yapıyoruz.

byte ID[4] = {195,251,132,7}; //Yetkili kart ID'sini tanımlıyoruz.

void setup() {

 motor.attach(servoPin); //Servo motor pinini motor değişkeni ile ilişkilendiriyoruz.

 Serial.begin(9600); //Seri haberleşmeyi başlatıyoruz.

 SPI.begin(); //SPI iletişimini başlatıyoruz.

 rfid.PCD_Init(); //RC522 modülünü başlatıyoruz.

}

void loop() {

 if (!rfid.PICC_IsNewCardPresent()) //Yeni kartın okunmasını bekliyoruz.

 return;

 if (!rfid.PICC_ReadCardSerial()) //Kart okunmadığı zaman bekliyoruz.

 return;

 if (rfid.uid.uidByte[0] == ID[0] && //Okunan kart ID'si ile ID değişkenini karşılaştırıyoruz.

 rfid.uid.uidByte[1] == ID[1] &&

 rfid.uid.uidByte[2] == ID[2] &&

 rfid.uid.uidByte[3] == ID[3]) {

 Serial.println("Kapi acildi");

 ekranaYazdir();

 tone(buzzerPin,1000); digitalWrite(6, HIGH);

 delay(500);

 noTone(buzzerPin);

 delay(20);

 delay(500);

 digitalWrite(6, LOW);

 delay(100);

 motor.write(180); //Servo motoru 180 dereceye getiriyoruz.

 delay(3000);

 motor.write(0); //Servo motoru 0 dereceye getiriyoruz.

 delay(1000);

 } else { //Yetkisiz girişte içerideki komutlar çalıştırılır.

 Serial.println("Yetkisiz Kart");

 ekranaYazdir();

 tone(buzzerPin,1500); digitalWrite(5, HIGH);

 delay(500);

 noTone(buzzerPin);

 delay(20);

 delay(500);

 digitalWrite(5, LOW);

 delay(100);

 }

 rfid.PICC_HaltA();

}

void ekranaYazdir() {

 Serial.print("ID Numarasi: ");

 for (int sayac = 0; sayac < 4; sayac++) {

 Serial.print(rfid.uid.uidByte[sayac]);

 Serial.print(" ");

 }

 Serial.println("");

}

Bu kodu robotistandan alıp kendim özelleştirdim ama şimdi eğer doğru kartı okutursam yeşil LED yanıyor.
Ve buzzer beli bir notada çalışıyor ben şimdi bir kez okuttuğumda bir adet lamba bağlayıcağım (LED)
O diğer LED'den ayrık olacak şekilde o LED yanacak doğru kartı bir daha okutunca söncek şekilde nasıl ayarlayabilirim?
Bu kod üzerinde oynayarak.
 
Bir değişken ata ve her okuttuğunda değeri true yada false olsun. Yani switch mantığı. Şu şekilde yapabilirsiniz:

[CODE title="Bunu integerleri tanımladığınız yere yazın"]
bool state = false;
[/CODE]

[CODE title="Bunları doğru kart okutulunca çalışanlara yazın"]
state = !(state); // Değişken true ise false, false ise true'ya dönüyor
if(state)
{
// Ledi açtığınız kod buraya
}
else
{
// Ledi kapadığınız kod buraya
}
[/CODE]
 
Bir değişken ata ve her okuttuğunda değeri true ya da false olsun. Yani Switch mantığı. Şu şekilde yapabilirsiniz:

[CODE title="Bunu integerleri tanımladığınız yere yazın"]
bool state = false;
[/CODE]

[CODE title="Bunları doğru kart okutulunca çalışanlara yazın"]
state = !(state); // Değişken true ise false, false ise true'ya dönüyor.
if(state)
{
// Ledi açtığınız kod buraya.
}
else.
{
// Ledi kapadığınız kod buraya.
}
[/CODE]

Kodun içine LED'i 4. pin olarak atayarak yerleştirebilir misiniz bu kodu biraz ace miyimde.
 
Kodun içine LED'i 4. pin olarak atayarak yerleştirebilir misiniz bu kodu biraz ace miyimde.
[CODE title="Bunları doğru kart okutulunca çalışanlara yazın"]
state = !(state); // Değişken true ise false, false ise true'ya dönüyor
if(state)
{
digitalWrite(4, HIGH);
}
else
{
digitalWrite(4, LOW);
}
[/CODE]
 
[CODE title="Bunları doğru kart okutulunca çalışanlara yazın"]
state = !(state); // Değişken true ise false, false ise true'ya dönüyor.
if(state)
{
digitalWrite(4, HIGH);
}
else.
{
digitalWrite(4, LOW);
}
[/CODE]

Çok çok teşekkür ederim devre çalıştı.
 

Geri
Yukarı