Blue Pill Test MPU6050 Test LCD
Dependencies: mbed mbed-STM32F103C8T6 MPU6050 TextLCD
main.cpp
00001 #include "stm32f103c8t6.h" 00002 #include "mbed.h" 00003 #include "MPU6050.h" 00004 #include "TextLCD.h" 00005 00006 00007 SPI spi_lcd(PB_15, NC, PB_13); 00008 MPU6050 mpu(PB_7, PB_6); // SDA, SCL pines de la comunicacion I2C 00009 TextLCD_SPI lcd(&spi_lcd, PB_12, TextLCD::LCD16x2,TextLCD::HD44780); // SPI bus, CS pin, LCD Type ok 00010 DigitalOut ledr(PB_5); //Led de conexion fallida 00011 DigitalOut ledg(PB_4); //Led de conexion OK 00012 DigitalOut ledb(PB_3); //Led de envio de datos serial 00013 00014 float AX,AY,AZ; // variables para la conversion a aceleracion en m/s^2 00015 int estado=1; // variable que hacer repetir el ciclo de conexion con el MPU hasta que haya una conexion I2C satisfactoria 00016 int ax,ay,az; /// variables a imprimir 00017 int contador=0; 00018 00019 int main() { 00020 lcd.cls(); 00021 wait(0.50); 00022 //Posicionar al LCD en el espacio 0,0 ORIGEN 00023 lcd.locate(0,0); 00024 lcd.printf("Start PowerTip"); 00025 wait(1.0); 00026 lcd.cls(); 00027 00028 ledr=0; //inicializacion de led (conexion fallida) off 00029 ledg=0; //inicializacion de led (conexion OK) off 00030 ledb=0; //inicializacion de led (envio de datos) off 00031 00032 int accdata[3]; //se aparta el arreglo para la adquisiscion de datos de la aceleración 00033 int gyrodata[3]; //se aparta el arreglo para la adquisicion de datos del giroscopio 00034 00035 while(estado){ // inicia bucle para reconocimiento del estado 00036 wait_ms(100); // retardo para el inicio de las variables 00037 if (mpu.testConnection()){ // lectura del estado de conexion del MPU 6050 00038 lcd.printf("MPU connection succeeded\n\r"); //imprime en patalla que la conexion fue OK 00039 00040 //lcd.cls(); 00041 estado=0; // cambio de estado de la variable se sale del ciclo una vez que la conexion esta OK 00042 ledg=1; // si la (conexion OK) led green enciende 00043 00044 } 00045 else{ 00046 lcd.printf("MPU connection failed\n\r");// Imprime en pantalla que la conexión fue fallida 00047 //lcd.cls(); 00048 estado=1; //Estado permanence en uno repitiendo el ciclo while(estado) 00049 ledr=1; ///si la (conexion fallida) led rojo enciende 00050 00051 } 00052 // retardo para preguntar sobre la conexion del MPU 00053 wait_ms(1000); /// Se hace cada segundo si es que la conexion fue fallida 00054 } 00055 ledr=0; // Se apaga led red una vez que la conexion fue OK 00056 while(1) { 00057 contador++; 00058 //MPU6050_ACCEL_XOUT_H_REG se piden los datos de esta direcion 00059 // definición de los registros para pedir datos de acelerometro 00060 //MPU6050_ACCEL_XOUT_H_REG 0x3B 00061 //MPU6050_ACCEL_YOUT_H_REG 0x3D 00062 //MPU6050_ACCEL_ZOUT_H_REG 0x3F 00063 00064 mpu.getAcceleroRaw(accdata); //Funcion para mandar llamar los datos del acelerometro 00065 00066 mpu.getGyroRaw(gyrodata); // funcion para mandar llamar los datos del giroscopio 00067 00068 ax=(accdata[0])+(4175); ///compenzación del offset del sensor 00069 ay=(accdata[1])-(12759); ///compenzación del offset del sensor 00070 az=(accdata[2])-(14029); ///compenzación del offset del sensor 00071 00072 ///impresion de pantalla de lo datos puros de aceleracion 00073 //pc.printf("Accelero data: X: %d - Y: %d - Z: %d\n\r", accdata[0], accdata[1], accdata[2]); 00074 00075 lcd.printf("X"); //Identificador para el software LABVIEW 00076 lcd.printf("%d ",ax); //Imprime los datos de aceleracion en 'X' 00077 lcd.printf("Y"); //Identificador para el software LABVIEW 00078 lcd.printf("%d ",ay); //Imprime los datos de aceleracion en 'Y' 00079 lcd.printf("Z"); //Identificador para el software LABVIEW 00080 lcd.printf("%d ",az); //Imprime los datos de aceleracion en 'Z' 00081 // lcd.cls(); 00082 /// Impresion de panatalla de los datos del giroscopio 00083 /// pc.printf("Gyro data: X: %d - Y: %d - Z: %d\n\r\n\r", gyrodata[0], gyrodata[1], gyrodata[2]); 00084 if(contador==10) 00085 { 00086 ledb=!ledb; //Cambio de estado del led blue (da un tono azul) al encender blue con green 00087 //indica un envio de datos serial correcto 00088 contador=0; 00089 } 00090 00091 00092 wait_ms(100); // Retardo sincronizado con la interfaz grafica para el envio de datos 00093 } 00094 00095 00096 }
Generated on Fri Jul 15 2022 00:59:05 by
1.7.2