ptoo elq ue lo lea

Dependencies:   mbed MAX7219

Committer:
afroid
Date:
Sun Feb 28 02:33:47 2021 +0000
Revision:
5:8d56c59a45a8
Parent:
4:fcfb02e6a11f
kjlkjlk

Who changed what in which revision?

UserRevisionLine numberNew contents of line
afroid 3:06223ec42c88 1 char whoAmI ;
afroid 3:06223ec42c88 2 #define MPU6050 0x68<<1 // Device address when ADO = 0
afroid 3:06223ec42c88 3 #define RA_WHO_AM_I 0x75
afroid 3:06223ec42c88 4 #define RA_CONFIG 0x1A
afroid 3:06223ec42c88 5 #define RA_USER_CTRL 0x6A
afroid 3:06223ec42c88 6 #define RA_PWR_ADDR 0x6B
afroid 3:06223ec42c88 7 #define RA_SMPLRT_DIV 0x19
afroid 3:06223ec42c88 8 #define RA_GYRO_CONFIG 0x1B
afroid 3:06223ec42c88 9 #define RA_ACCEL_CONFIG 0x1C
afroid 3:06223ec42c88 10 #define RA_INT_PIN_CFG 0x37
afroid 3:06223ec42c88 11 #define RA_ACCEL_XOUT_H 0x3B
afroid 3:06223ec42c88 12 #define RA_ACCEL_XOUT_L 0x3C
afroid 3:06223ec42c88 13 #define RA_ACCEL_YOUT_H 0x3D
afroid 3:06223ec42c88 14 #define RA_ACCEL_YOUT_L 0x3E
afroid 3:06223ec42c88 15 #define RA_ACCEL_ZOUT_H 0x3F
afroid 3:06223ec42c88 16 #define RA_ACCEL_ZOUT_L 0x40
afroid 3:06223ec42c88 17 #define RA_TEMP_OUT_H 0x41
afroid 3:06223ec42c88 18 #define RA_TEMP_OUT_L 0x42
afroid 3:06223ec42c88 19 #define RA_GYRO_XOUT_H 0x43
afroid 3:06223ec42c88 20 #define RA_GYRO_XOUT_L 0x44
afroid 3:06223ec42c88 21 #define RA_GYRO_YOUT_H 0x45
afroid 3:06223ec42c88 22 #define RA_GYRO_YOUT_L 0x46
afroid 3:06223ec42c88 23 #define RA_GYRO_ZOUT_H 0x47
afroid 3:06223ec42c88 24 #define RA_GYRO_ZOUT_L 0x48
afroid 3:06223ec42c88 25 #define AF_SEL 0x00
afroid 3:06223ec42c88 26 #define ACC_HPF 0x00
afroid 3:06223ec42c88 27 #define FS_SEL 0x00
afroid 3:06223ec42c88 28 #define RA_PWR_MGMT_1 0x00
afroid 3:06223ec42c88 29 #define USER_CTRL 0x00
afroid 3:06223ec42c88 30 #define ACC_SELF_TEST_X 0x00
afroid 3:06223ec42c88 31 #define ACC_SELF_TEST_Y 0x00
afroid 3:06223ec42c88 32 #define ACC_SELF_TEST_Z 0x00
afroid 3:06223ec42c88 33 #define G_SELF_TEST_X 0x00
afroid 3:06223ec42c88 34 #define G_SELF_TEST_Y 0x00
afroid 3:06223ec42c88 35 #define G_SELF_TEST_Z 0x00
afroid 3:06223ec42c88 36 #define PIN_CFG 2
afroid 3:06223ec42c88 37 #define CONFIG 4
afroid 3:06223ec42c88 38 #define SMPLRT_DIV 19
afroid 3:06223ec42c88 39
kirchnet 2:a0c7513fb634 40
kirchnet 2:a0c7513fb634 41 #include "mbed.h"
kirchnet 2:a0c7513fb634 42 #include "MFRC522.h"
michaelrodriguezg 4:fcfb02e6a11f 43 #include "main.h"
michaelrodriguezg 4:fcfb02e6a11f 44 #include "max7219.h"
kirchnet 2:a0c7513fb634 45 // Nucleo Pin for MFRC522 reset (pick another D pin if you need D8)
kirchnet 2:a0c7513fb634 46 #define MF_RESET D8
michaelrodriguezg 4:fcfb02e6a11f 47 Max7219 pantalla(D11, D12, D13, D10);//MOSI-MISO-CLK-SSEL
michaelrodriguezg 4:fcfb02e6a11f 48 void Print_pantalla_tabla(unsigned char *pValor);
afroid 3:06223ec42c88 49 DigitalOut led(D4);
afroid 3:06223ec42c88 50 DigitalOut ledG(D3);
afroid 3:06223ec42c88 51 DigitalOut led3(D5);
afroid 3:06223ec42c88 52 DigitalIn boton(PC_13); // 0 - presionado
afroid 3:06223ec42c88 53 int aux = 0 ;
afroid 3:06223ec42c88 54 int aux2 = 0;
afroid 5:8d56c59a45a8 55 int mistake = 0;
afroid 3:06223ec42c88 56 int signal = 0;
michaelrodriguezg 4:fcfb02e6a11f 57 unsigned char personal[8]= {0x0,0x0,0,0,0,0,0,0};
michaelrodriguezg 4:fcfb02e6a11f 58 unsigned char filas[8]= {1,3,7,0x0f,0x1f,0x3f,0x7f,0xff};
kirchnet 2:a0c7513fb634 59 //Serial connection to PC for output
kirchnet 2:a0c7513fb634 60 Serial pc(SERIAL_TX, SERIAL_RX);
afroid 3:06223ec42c88 61 I2C i2c(D14, D15);
kirchnet 2:a0c7513fb634 62 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
afroid 3:06223ec42c88 63 void giroscope();
afroid 5:8d56c59a45a8 64 void muestreo();
afroid 3:06223ec42c88 65 void rfid();
afroid 3:06223ec42c88 66 void InitMPU();
afroid 3:06223ec42c88 67 //int ReadData(int adress_L, int adress_H);
afroid 3:06223ec42c88 68 char reg_value[2];
afroid 3:06223ec42c88 69 void WriteData(uint8_t address, uint8_t subAddress, uint8_t data);
afroid 3:06223ec42c88 70 int ReadData(int adress_L, int adress_H);
afroid 5:8d56c59a45a8 71
afroid 5:8d56c59a45a8 72 void muestreo() {
afroid 5:8d56c59a45a8 73
afroid 5:8d56c59a45a8 74
afroid 5:8d56c59a45a8 75 }
afroid 5:8d56c59a45a8 76
afroid 5:8d56c59a45a8 77
afroid 3:06223ec42c88 78 void giroscope(){
afroid 3:06223ec42c88 79 while(1) {
afroid 3:06223ec42c88 80 pc.printf(" ");
afroid 3:06223ec42c88 81 /*
afroid 3:06223ec42c88 82 pc.printf("*");
afroid 3:06223ec42c88 83 pc.printf("%i\t",ReadData(RA_ACCEL_XOUT_L ,RA_ACCEL_XOUT_H));
afroid 3:06223ec42c88 84 pc.printf("%i\t",ReadData(RA_ACCEL_YOUT_L ,RA_ACCEL_YOUT_H));
afroid 3:06223ec42c88 85 pc.printf("%i\t",ReadData(RA_ACCEL_ZOUT_L ,RA_ACCEL_ZOUT_H));
afroid 3:06223ec42c88 86 pc.printf("\n\r");*/
afroid 3:06223ec42c88 87 // pc.printf("%i\t",ReadData(RA_GYRO_XOUT_L ,RA_GYRO_XOUT_H));
afroid 3:06223ec42c88 88 pc.printf("%i\t",ReadData(RA_GYRO_YOUT_L ,RA_GYRO_YOUT_H));
afroid 3:06223ec42c88 89 //pc.printf("%i\t",ReadData(RA_GYRO_ZOUT_L ,RA_GYRO_ZOUT_H));
afroid 3:06223ec42c88 90 pc.printf("\n\r");
michaelrodriguezg 4:fcfb02e6a11f 91 //wait_us(2e6);
afroid 3:06223ec42c88 92 }
michaelrodriguezg 4:fcfb02e6a11f 93 }
michaelrodriguezg 4:fcfb02e6a11f 94 void Print_pantalla_tabla(unsigned char *pValor){
michaelrodriguezg 4:fcfb02e6a11f 95 for (int i =0;i<8;i++)
michaelrodriguezg 4:fcfb02e6a11f 96 pantalla.write_digit(1,i+1,pValor[i]);
michaelrodriguezg 4:fcfb02e6a11f 97 }
michaelrodriguezg 4:fcfb02e6a11f 98 void matrix(){
michaelrodriguezg 4:fcfb02e6a11f 99 max7219_configuration_t cfg = {
michaelrodriguezg 4:fcfb02e6a11f 100 .device_number = 1,
michaelrodriguezg 4:fcfb02e6a11f 101 .decode_mode = 0,
michaelrodriguezg 4:fcfb02e6a11f 102 .intensity = Max7219::MAX7219_INTENSITY_5,
michaelrodriguezg 4:fcfb02e6a11f 103 .scan_limit = Max7219::MAX7219_SCAN_8
michaelrodriguezg 4:fcfb02e6a11f 104 };
michaelrodriguezg 4:fcfb02e6a11f 105 pantalla.init_device(cfg);
michaelrodriguezg 4:fcfb02e6a11f 106 pantalla.enable_device(1);
michaelrodriguezg 4:fcfb02e6a11f 107 pantalla.set_display_test();
michaelrodriguezg 4:fcfb02e6a11f 108 wait_ms(1000);
michaelrodriguezg 4:fcfb02e6a11f 109 pantalla.clear_display_test();
michaelrodriguezg 4:fcfb02e6a11f 110 while(ledG==1){
michaelrodriguezg 4:fcfb02e6a11f 111 for(int i=0;i<3;i++){
michaelrodriguezg 4:fcfb02e6a11f 112 i=i;
michaelrodriguezg 4:fcfb02e6a11f 113 Print_pantalla_tabla(led2);
michaelrodriguezg 4:fcfb02e6a11f 114 wait_ms(200);
michaelrodriguezg 4:fcfb02e6a11f 115 Print_pantalla_tabla(led1);
michaelrodriguezg 4:fcfb02e6a11f 116 wait_ms(200);
michaelrodriguezg 4:fcfb02e6a11f 117 }
michaelrodriguezg 4:fcfb02e6a11f 118 ledG=0;
michaelrodriguezg 4:fcfb02e6a11f 119 Print_pantalla_tabla(personal);
michaelrodriguezg 4:fcfb02e6a11f 120 wait_ms(100);
michaelrodriguezg 4:fcfb02e6a11f 121 }
kirchnet 2:a0c7513fb634 122 }
afroid 3:06223ec42c88 123 void rfid(){
afroid 3:06223ec42c88 124 while(true){
afroid 3:06223ec42c88 125 if (boton == 0){
afroid 3:06223ec42c88 126 led = !led;
afroid 3:06223ec42c88 127 pc.printf("boton presionado\n\r");
afroid 3:06223ec42c88 128 pc.printf(" %X02",aux);
afroid 3:06223ec42c88 129 }
afroid 3:06223ec42c88 130 led=0;
afroid 3:06223ec42c88 131 // Look for new cards
michaelrodriguezg 4:fcfb02e6a11f 132 if ( ! RfChip.PICC_IsNewCardPresent()){
afroid 3:06223ec42c88 133 wait_ms(200);
afroid 3:06223ec42c88 134 //pc.printf("1 ");
afroid 5:8d56c59a45a8 135 pc.printf("%i\t\n\r",ReadData(RA_GYRO_YOUT_L ,RA_GYRO_YOUT_H));
afroid 5:8d56c59a45a8 136 // mistake = ReadData(RA_GYRO_YOUT_L ,RA_GYRO_YOUT_H);
afroid 3:06223ec42c88 137 continue;
afroid 3:06223ec42c88 138 }
afroid 3:06223ec42c88 139 // Select one of the cards
afroid 3:06223ec42c88 140 if ( ! RfChip.PICC_ReadCardSerial())
afroid 3:06223ec42c88 141 {
afroid 3:06223ec42c88 142 wait_ms(200);
afroid 3:06223ec42c88 143 continue;
afroid 3:06223ec42c88 144 }
afroid 3:06223ec42c88 145 led=1;
afroid 5:8d56c59a45a8 146
michaelrodriguezg 4:fcfb02e6a11f 147 for (uint8_t i = 0; i < RfChip.uid.size; i++){
afroid 5:8d56c59a45a8 148
michaelrodriguezg 4:fcfb02e6a11f 149 if (aux == 0) {
afroid 3:06223ec42c88 150 aux = RfChip.uid.uidByte[i]; //registra la primera tarjeta que entre
afroid 3:06223ec42c88 151 led3 = 1;
michaelrodriguezg 4:fcfb02e6a11f 152 aux2 = 2;
afroid 3:06223ec42c88 153 }else if (aux2 ==2){
afroid 3:06223ec42c88 154 aux2 = RfChip.uid.uidByte[i]; //registrar tarjeta
michaelrodriguezg 4:fcfb02e6a11f 155 ledG = 1;
afroid 3:06223ec42c88 156 led3 = 0;
afroid 3:06223ec42c88 157 signal = 1;
michaelrodriguezg 4:fcfb02e6a11f 158 }else if (RfChip.uid.uidByte[i] == aux){
afroid 3:06223ec42c88 159 ledG = 1;
afroid 3:06223ec42c88 160 led3 = 0;
afroid 3:06223ec42c88 161 signal = 1;
afroid 3:06223ec42c88 162 pc.printf("15000\n\r");
afroid 3:06223ec42c88 163 /*------*/
afroid 5:8d56c59a45a8 164 wait_us(2e6);
afroid 5:8d56c59a45a8 165 //matrix();
afroid 3:06223ec42c88 166 ledG = 0;
afroid 3:06223ec42c88 167 signal = 0;
afroid 3:06223ec42c88 168 pc.printf("-15000\n\r");
michaelrodriguezg 4:fcfb02e6a11f 169 led3 = 1;
afroid 3:06223ec42c88 170 }
michaelrodriguezg 4:fcfb02e6a11f 171 }
michaelrodriguezg 4:fcfb02e6a11f 172 pc.printf("\n\r");
kirchnet 2:a0c7513fb634 173 }
afroid 3:06223ec42c88 174 }
michaelrodriguezg 4:fcfb02e6a11f 175 /*void leer (){
afroid 3:06223ec42c88 176 if (boton == 1){
afroid 3:06223ec42c88 177 led = !led;
afroid 3:06223ec42c88 178 pc.printf("boton presionado\n\r");
afroid 3:06223ec42c88 179 }
michaelrodriguezg 4:fcfb02e6a11f 180 }*/
afroid 3:06223ec42c88 181 int ReadData(int adress_L, int adress_H){
michaelrodriguezg 4:fcfb02e6a11f 182 char data_L;
afroid 3:06223ec42c88 183 char data_H;
afroid 3:06223ec42c88 184 char adress_data_L[1] ;
afroid 3:06223ec42c88 185 char adress_data_H[1] ;
afroid 3:06223ec42c88 186 adress_data_L[0]= adress_L;
afroid 3:06223ec42c88 187 adress_data_H[0]= adress_H;
afroid 3:06223ec42c88 188 i2c.write(MPU6050, adress_data_L, 1,1);
afroid 3:06223ec42c88 189 i2c.read(MPU6050,&data_L, 1,0);
afroid 3:06223ec42c88 190 i2c.write(MPU6050, adress_data_H, 1,1);
afroid 3:06223ec42c88 191 i2c.read(MPU6050,&data_H, 1,0);
afroid 3:06223ec42c88 192 return (int16_t)((data_H<<8) | data_L);
afroid 3:06223ec42c88 193 }
michaelrodriguezg 4:fcfb02e6a11f 194 void WriteData(uint8_t address, uint8_t subAddress, uint8_t data){
afroid 3:06223ec42c88 195 char data_write[2];
afroid 3:06223ec42c88 196 data_write[0] = subAddress;
afroid 3:06223ec42c88 197 data_write[1] = data;
afroid 3:06223ec42c88 198 i2c.write(address, data_write, 2, false);
afroid 3:06223ec42c88 199 }
afroid 3:06223ec42c88 200 void InitMPU(){
afroid 3:06223ec42c88 201 WriteData(MPU6050,RA_PWR_ADDR,RA_PWR_MGMT_1);
afroid 3:06223ec42c88 202 wait(0.1);
afroid 3:06223ec42c88 203 WriteData(MPU6050,RA_USER_CTRL,USER_CTRL);
afroid 3:06223ec42c88 204 WriteData(MPU6050, RA_INT_PIN_CFG,PIN_CFG);
afroid 3:06223ec42c88 205 WriteData(MPU6050,RA_SMPLRT_DIV,SMPLRT_DIV);
afroid 3:06223ec42c88 206 int GConfig = G_SELF_TEST_X | G_SELF_TEST_Y | G_SELF_TEST_Z | FS_SEL;
afroid 3:06223ec42c88 207 int AConfig = ACC_SELF_TEST_X | ACC_SELF_TEST_Y | ACC_SELF_TEST_Z | AF_SEL | ACC_HPF;
afroid 3:06223ec42c88 208 WriteData(MPU6050,RA_GYRO_CONFIG,GConfig);
afroid 3:06223ec42c88 209 WriteData(MPU6050,RA_ACCEL_CONFIG,AConfig);
afroid 3:06223ec42c88 210 }
michaelrodriguezg 4:fcfb02e6a11f 211 int main(void) { //MENSAJE INICIAL
afroid 3:06223ec42c88 212 pc.baud(9600);
afroid 3:06223ec42c88 213 i2c.frequency(400000);
michaelrodriguezg 4:fcfb02e6a11f 214 InitMPU();
michaelrodriguezg 4:fcfb02e6a11f 215 pc.printf(".............STARTING.............\n\r");
afroid 3:06223ec42c88 216 // Init. RC522 Chip
michaelrodriguezg 4:fcfb02e6a11f 217 RfChip.PCD_Init();
afroid 3:06223ec42c88 218
afroid 3:06223ec42c88 219 while (true) {
michaelrodriguezg 4:fcfb02e6a11f 220 pc.printf(".............BUSCANDO.............\n\r");
afroid 3:06223ec42c88 221 rfid();
kirchnet 2:a0c7513fb634 222 }
kirchnet 2:a0c7513fb634 223 }