VIDEO
#include < SPI . h > // Dahili SPI kütüphanesi
#include < MFRC522 . h > // v1.4.9
#define reset 9 // Reset pini
#define ss 10 // SS pin
MFRC522 kartOkuyucu ( ss , reset ) ; // kartOkuyucu isimli nesne oluşturuldu.
byte i , j , k ;
byte kartSayisi = 2 ; //Kart sayısı doğru girilmelidir.
byte kartlar [ ] [ 4 ] = {
{ 0xA6 , 0x06 , 0x1E , 0xF9 } , // ilk kartın dört byte'lık ID'si HEX olarak tanımlandı.
{ 0xA6 , 0x06 , 0x1E , 0xF8 } , // ikinci kart...
} ;
void setup ( ) {
Serial . begin ( 9600 ) ; //Bilgisayarın seri ekranıyla UART iletişimi.
SPI . begin ( ) ; // MFRC522 kart okuyucusuyla SPI iletişimi.
kartOkuyucu . PCD_Init ( ) ; // MFRC522'yi başlat
Serial . println ( "Lütfen kartı okutunuz." ) ;
pinMode ( 4 , OUTPUT ) ; // Buzzer.
pinMode ( 6 , OUTPUT ) ; // Step motor pinleri.
pinMode ( 7 , OUTPUT ) ;
pinMode ( 8 , OUTPUT ) ;
pinMode ( 9 , OUTPUT ) ;
}
void loop ( ) {
if ( ! kartOkuyucu . PICC_IsNewCardPresent ( ) ) //Bir kart okunana kadar bekle.
return ;
if ( ! kartOkuyucu . PICC_ReadCardSerial ( ) ) // Kartı oku.
return ;
if ( kartKontrol ( ) ) { // Kart geçerliyse yapılacaklar...
Serial . println ( "Kart geçerli." ) ;
digitalWrite ( 4 , 1 ) ; // Buzzer bir saniye çalar.
delay ( 1000 ) ;
digitalWrite ( 4 , 0 ) ;
stepMotor ( ) ; // Step motor çalıştıran fonksiyonu çağır.
}
else { // Kart geçerli değilse yapılacaklar...
for ( i = 0 ; i < 4 ; i ++ ) {
Serial . print ( kartOkuyucu . uid . uidByte [ i ] , HEX ) ; //Geçersiz kartın ID'sini ekrana yazdır.
Serial . print ( " " ) ;
}
Serial . println ( " numaralı kartınız sisteme tanımlı değil!" ) ;
digitalWrite ( 4 , 1 ) ; // Geçersiz kart için buzzer sesi.
delay ( 200 ) ;
digitalWrite ( 4 , 0 ) ;
delay ( 200 ) ;
digitalWrite ( 4 , 1 ) ;
delay ( 200 ) ;
digitalWrite ( 4 , 0 ) ;
}
delay ( 500 ) ;
Serial . println ( "\n Lütfen kartı okutunuz." ) ;
}
boolean kartKontrol ( ) { // Kart geçerliye 1, değilse 0 döndürür.
k = 0 ;
for ( j = 0 ; j < kartSayisi ; j ++ ) { // Kayıtlı tüm kartlara bak.
for ( i = 0 ; i < 4 ; i ++ ) { // Her kartın ID'si dört byte.
if ( kartlar [ j ] [ i ] == kartOkuyucu . uid . uidByte [ i ] ) { //Okunan kartı kayıtlı olanlarla karşılaştır.
k ++ ;
if ( k == 4 ) { // Tüm byte'lar doğrulandıysa...
return 1 ; // 1 döndür.
}
}
}
}
return 0 ; // Okunan kart kayıtlı kartlarla eşleşmediyse 0 döndür.
}
void stepMotor ( ) { // Step motor Yaklaşık 90° döner.
int x , adimSayisi = 500 , sure = 2 ;
for ( x = 0 ; x < adimSayisi / 4 ; x ++ ) {
for ( byte i = 6 ; i <= 9 ; i ++ ) { //Sağa dön.
digitalWrite ( i , 1 ) ;
delay ( sure ) ;
digitalWrite ( i , 0 ) ;
}
}
delay ( 1000 ) ; // Kapı açık kalma süresi.
for ( x = 0 ; x < adimSayisi / 4 ; x ++ ) {
for ( byte i = 9 ; i >= 6 ; i -- ) { //Sola dön.
digitalWrite ( i , 1 ) ;
delay ( sure ) ;
digitalWrite ( i , 0 ) ;
}
}
}