Its a program
Dependencies: mbed beep ds3231 RC522
main.cpp
- Committer:
- attila0970
- Date:
- 2020-04-05
- Revision:
- 0:9f3afc173a43
File content as of revision 0:9f3afc173a43:
#include "mbed.h" #include "MFRC522.h" #include "beep.h" #include "ds3231.h" //KL25Z Pins for MFRC522 SPI3 interface #define SPI_MOSI PB_5 #define SPI_MISO PB_4 #define SPI_SCLK PB_3 #define SPI_CS PA_10 #define address 0xd1 // KL25Z Pin for MFRC522 reset #define MF_RESET PB_1 DigitalOut LedRed (PC_5); DigitalOut LedGreen (PC_6); DigitalOut led (LED1); uint16_t cards[2][4] = { {0x51, 0xf2, 0x05, 0x20}, {0x01, 0x02, 0x03, 0x04} }; Beep buzzer(PC_8); Serial pc(USBTX, USBRX); MFRC522 RfChip (PB_5, PB_4, PB_3, PB_10, PA_8); I2C rtc(PB_9, PB_8); void guttentag(); int get_hour(); int get_min(); int set_time(int hour, int min); int main(void) { // Set debug UART speed pc.baud(115200); // Init. RC522 Chip RfChip.PCD_Init(); rtc.frequency(100000); //set_time(0x23,0x58); int joez = 0; while (1) { // Look for new cards if ( ! RfChip.PICC_IsNewCardPresent()) { wait_ms(100); led = !led; LedGreen = LedRed; LedRed = !LedRed; //pc.printf("%d:%d\n", get_hour(), get_min()); continue; } LedRed = 0; // Select one of the cards if ( ! RfChip.PICC_ReadCardSerial()) { wait_ms(500); continue; } //wait(0.5); LedRed = 0; LedGreen = 1; buzzer.beep(5000,0.2); // Print Card UID pc.printf("Card UID: "); for (uint8_t i = 0; i < RfChip.uid.size; i++) { pc.printf(" %X ", RfChip.uid.uidByte[i]); if (RfChip.uid.uidByte[i] == cards[0][i]) joez++; } pc.printf("\n\r"); if(joez == 4) { wait(0.8); buzzer.beep(4900, 3); pc.printf("\nbelephet\n"); wait(3); } else{ LedGreen= 0; for(int i = 0; i < 6; i++){ buzzer.beep(5000, 0.5); LedRed = !LedRed; wait(1); } } joez = 0; LedRed = 1; char buf[3]; char data[10]; buf[0] = 0x0; rtc.write(address, buf, 1, true); rtc.read(address, data, 8, false); for ( int i = 0; i < 8; i++){ pc.printf(" %02X", data[i]); } //wait_ms(3000); } } void guttentag(){ } int set_time(int hour, int min){ char buf[3]; buf[0] = 0x01; buf[1] = min; rtc.write(0xd0, buf, 2, false); buf[0] = 0x02; buf[1] = hour; rtc.write(0xd0, buf, 2, false); return 1; } int get_min() { char buf[3]; char data[10]; int min_val; int min_hex; buf[0] = 0x0; rtc.write(address, buf, 1, true); rtc.read(address, data, 8, false); min_hex = data[1]; //------------------------------------- //----transfer hexa data to decimal---- //------------------------------------- if ( min_hex >= 0x00 & min_hex < 0x10) { min_val = min_hex; } if ( min_hex >= 0x10 & min_hex < 0x20) { min_val = min_hex - 6; } if ( min_hex >=0x20 & min_hex <= 0x29) { min_val = min_hex - 12; } if ( min_hex >=0x30 & min_hex <= 0x39) { min_val = min_hex - 18; } if ( min_hex >=0x40 & min_hex <= 0x49) { min_val = min_hex - 24; } if ( min_hex >=0x50 & min_hex <= 0x59) { min_val = min_hex - 30; } return min_val; } int get_hour() { char buf[3]; char data[10]; int hour_val; int hour_hex; buf[0] = 0x00; rtc.write(address, buf, 1, true); rtc.read(address, data, 8, false); hour_hex = data[2]; //------------------------------------- //----transfer hexa data to decimal---- //------------------------------------- if ( hour_hex >= 0x00 & hour_hex < 0x10) { hour_val = hour_hex; } if ( hour_hex >= 0x10 & hour_hex < 0x20) { hour_val = hour_hex - 6; } if ( hour_hex >=0x20 & hour_hex <= 0x24) { hour_val = hour_hex - 12; } return hour_val; }