Digiti II
/
MPU_RFID_MAX_LAB
ptoo elq ue lo lea
Diff: main.cpp
- Revision:
- 3:06223ec42c88
- Parent:
- 2:a0c7513fb634
- Child:
- 4:fcfb02e6a11f
diff -r a0c7513fb634 -r 06223ec42c88 main.cpp --- a/main.cpp Fri Jun 06 03:04:48 2014 +0000 +++ b/main.cpp Tue Nov 03 20:24:55 2020 +0000 @@ -1,17 +1,44 @@ -//Test of cheap 13.56 Mhz RFID-RC522 module from eBay -//This code is based on Martin Olejar's MFRC522 library. Minimal changes -//Adapted for Nucleo STM32 F401RE. Should work on other Nucleos too + -//Connect as follows: -//RFID pins -> Nucleo header CN5 (Arduino-compatible header) -//---------------------------------------- -//RFID IRQ=pin5 -> Not used. Leave open -//RFID MISO=pin4 -> Nucleo SPI_MISO=PA_6=D12 -//RFID MOSI=pin3 -> Nucleo SPI_MOSI=PA_7=D11 -//RFID SCK=pin2 -> Nucleo SPI_SCK =PA_5=D13 -//RFID SDA=pin1 -> Nucleo SPI_CS =PB_6=D10 -//RFID RST=pin7 -> Nucleo =PA_9=D8 -//3.3V and Gnd to the respective pins +char whoAmI ; +#define MPU6050 0x68<<1 // Device address when ADO = 0 +#define RA_WHO_AM_I 0x75 +#define RA_CONFIG 0x1A +#define RA_USER_CTRL 0x6A +#define RA_PWR_ADDR 0x6B +#define RA_SMPLRT_DIV 0x19 +#define RA_GYRO_CONFIG 0x1B +#define RA_ACCEL_CONFIG 0x1C +#define RA_INT_PIN_CFG 0x37 +#define RA_ACCEL_XOUT_H 0x3B +#define RA_ACCEL_XOUT_L 0x3C +#define RA_ACCEL_YOUT_H 0x3D +#define RA_ACCEL_YOUT_L 0x3E +#define RA_ACCEL_ZOUT_H 0x3F +#define RA_ACCEL_ZOUT_L 0x40 +#define RA_TEMP_OUT_H 0x41 +#define RA_TEMP_OUT_L 0x42 +#define RA_GYRO_XOUT_H 0x43 +#define RA_GYRO_XOUT_L 0x44 +#define RA_GYRO_YOUT_H 0x45 +#define RA_GYRO_YOUT_L 0x46 +#define RA_GYRO_ZOUT_H 0x47 +#define RA_GYRO_ZOUT_L 0x48 +#define AF_SEL 0x00 +#define ACC_HPF 0x00 +#define FS_SEL 0x00 +#define RA_PWR_MGMT_1 0x00 +#define USER_CTRL 0x00 +#define ACC_SELF_TEST_X 0x00 +#define ACC_SELF_TEST_Y 0x00 +#define ACC_SELF_TEST_Z 0x00 +#define G_SELF_TEST_X 0x00 +#define G_SELF_TEST_Y 0x00 +#define G_SELF_TEST_Z 0x00 +#define PIN_CFG 2 +#define CONFIG 4 +#define SMPLRT_DIV 19 + #include "mbed.h" #include "MFRC522.h" @@ -19,49 +46,176 @@ // Nucleo Pin for MFRC522 reset (pick another D pin if you need D8) #define MF_RESET D8 -DigitalOut LedGreen(LED1); - +DigitalOut led(D4); +DigitalOut ledG(D3); +DigitalOut led3(D5); +DigitalIn boton(PC_13); // 0 - presionado +int aux = 0 ; +int aux2 = 0; +int signal = 0; //Serial connection to PC for output Serial pc(SERIAL_TX, SERIAL_RX); - +I2C i2c(D14, D15); MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET); - -int main(void) { - pc.printf("starting...\n"); - - // Init. RC522 Chip - RfChip.PCD_Init(); +void giroscope(); +void rfid(); +void InitMPU(); +//int ReadData(int adress_L, int adress_H); +char reg_value[2]; + void WriteData(uint8_t address, uint8_t subAddress, uint8_t data); +int ReadData(int adress_L, int adress_H); - while (true) { - LedGreen = 1; - - // Look for new cards - if ( ! RfChip.PICC_IsNewCardPresent()) - { - wait_ms(500); - continue; +void giroscope(){ + while(1) { + pc.printf(" "); +/* + pc.printf("*"); + pc.printf("%i\t",ReadData(RA_ACCEL_XOUT_L ,RA_ACCEL_XOUT_H)); + pc.printf("%i\t",ReadData(RA_ACCEL_YOUT_L ,RA_ACCEL_YOUT_H)); + pc.printf("%i\t",ReadData(RA_ACCEL_ZOUT_L ,RA_ACCEL_ZOUT_H)); + pc.printf("\n\r");*/ + // pc.printf("%i\t",ReadData(RA_GYRO_XOUT_L ,RA_GYRO_XOUT_H)); + pc.printf("%i\t",ReadData(RA_GYRO_YOUT_L ,RA_GYRO_YOUT_H)); + //pc.printf("%i\t",ReadData(RA_GYRO_ZOUT_L ,RA_GYRO_ZOUT_H)); + pc.printf("\n\r"); + //wait_us(2e6); + + } + + } - // Select one of the cards - if ( ! RfChip.PICC_ReadCardSerial()) - { - wait_ms(500); - continue; - } - - LedGreen = 0; - // Print Card UID - pc.printf("Card UID: "); - for (uint8_t i = 0; i < RfChip.uid.size; i++) - { - pc.printf(" %X02", RfChip.uid.uidByte[i]); +void rfid(){ + + while(true){ + if (boton == 0){ + led = !led; + pc.printf("boton presionado\n\r"); + pc.printf(" %X02",aux); + } + led=0; + // Look for new cards + if ( ! RfChip.PICC_IsNewCardPresent()) + { + wait_ms(200); + //pc.printf("1 "); + pc.printf("%i\t\n\r",ReadData(RA_GYRO_YOUT_L ,RA_GYRO_YOUT_H)); + continue; + } + + // Select one of the cards + if ( ! RfChip.PICC_ReadCardSerial()) + { + wait_ms(200); + continue; + } + + + led=1; + // Print Card UID + // pc.printf("Card UID: "); + for (uint8_t i = 0; i < RfChip.uid.size; i++) + { + /* pc.printf(" %X02", RfChip.uid.uidByte[i]); + pc.printf("-A1-\n\r");*/ + if (aux == 0) { + + aux = RfChip.uid.uidByte[i]; //registra la primera tarjeta que entre + led3 = 1; + aux2 = 2; + + }else if (aux2 ==2){ + + + aux2 = RfChip.uid.uidByte[i]; //registrar tarjeta + ledG = 1; + led3 = 0; + signal = 1; + + + }else if (RfChip.uid.uidByte[i] == aux){ + + ledG = 1; + led3 = 0; + signal = 1; + pc.printf("15000\n\r"); + /*------*/ + wait_us(5e6); + ledG = 0; + signal = 0; + pc.printf("-15000\n\r"); + led3 = 1; + + } + } + + pc.printf("\n\r"); + } - pc.printf("\n\r"); +} + +void leer (){ + if (boton == 1){ + led = !led; + pc.printf("boton presionado\n\r"); + } + +} +int ReadData(int adress_L, int adress_H){ + char data_L; + char data_H; + char adress_data_L[1] ; + char adress_data_H[1] ; + adress_data_L[0]= adress_L; + adress_data_H[0]= adress_H; + i2c.write(MPU6050, adress_data_L, 1,1); + i2c.read(MPU6050,&data_L, 1,0); + i2c.write(MPU6050, adress_data_H, 1,1); + i2c.read(MPU6050,&data_H, 1,0); + + return (int16_t)((data_H<<8) | data_L); + +} + void WriteData(uint8_t address, uint8_t subAddress, uint8_t data) +{ + char data_write[2]; + data_write[0] = subAddress; + data_write[1] = data; + i2c.write(address, data_write, 2, false); +} - // Print Card type - uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak); - pc.printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType)); - wait_ms(1000); +void InitMPU(){ + WriteData(MPU6050,RA_PWR_ADDR,RA_PWR_MGMT_1); + wait(0.1); + WriteData(MPU6050,RA_USER_CTRL,USER_CTRL); + WriteData(MPU6050, RA_INT_PIN_CFG,PIN_CFG); + WriteData(MPU6050,RA_SMPLRT_DIV,SMPLRT_DIV); + int GConfig = G_SELF_TEST_X | G_SELF_TEST_Y | G_SELF_TEST_Z | FS_SEL; + int AConfig = ACC_SELF_TEST_X | ACC_SELF_TEST_Y | ACC_SELF_TEST_Z | AF_SEL | ACC_HPF; + WriteData(MPU6050,RA_GYRO_CONFIG,GConfig); + WriteData(MPU6050,RA_ACCEL_CONFIG,AConfig); + +} + +int main(void) { + pc.baud(9600); + i2c.frequency(400000); + InitMPU(); + + pc.printf("starting...\n\r"); + + + // Init. RC522 Chip + RfChip.PCD_Init(); + + + + while (true) { + pc.printf("buscando\n\r"); + //pc.attach(&leer); + + rfid(); + //wait_ms(200); } } \ No newline at end of file