Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SC_accelerometer by
main.cpp
- Committer:
- gcorderop
- Date:
- 2015-09-06
- Revision:
- 2:31492faba62d
- Parent:
- 1:2d5e4ef32912
File content as of revision 2:31492faba62d:
#include "mbed.h" #include "MMA8451Q.h" #include "math.h" #define MMA8451_I2C_ADDRESS (0x1d<<1) Serial pc(USBTX, USBRX); char val; uint8_t t; int8_t t_total; uint16_t n; uint16_t i=0; float signal; //senal que representa la funcion float dt,signo; float L=4.0; float lambda, alfa; float z0=0; float z1=0; int main(void) { pc.baud(115200); /******************* Inicializacion *********************/ t =0; //inicializo variable de tiempo en 0 msec t_total=9; dt=0.015; //10 milisegundos n=(uint16_t)(t_total/dt); //numero de muestras lambda=1.1*sqrt(L); //en z0 lambda=1.5L^(1/2) alfa=0.5*L; //en z1 alfa=1.1L /******************* Acelerometro ************************/ MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); PwmOut rled(LED_RED); PwmOut gled(LED_GREEN); PwmOut bled(LED_BLUE); pc.printf("%c \r\n",'a'); //palabra que indica que comienze la recepcion for(i=0; i<n; i++) { rled = 1.0 - abs(acc.getAccX());//gled = 1.0 - abs(acc.getAccY()); //bled = 1.0 - abs(acc.getAccZ()); signal = acc.getAccX(); //senal del eje x del acelerometro if ((z0-signal)>0){ signo=1.0; } else{ signo=-1.0; } z0= z0+ dt*(z1-(lambda*sqrt(abs(z0-signal)))*signo) ; //z0n=z0+dt*z1-dt*lambda*sqrt(abs(z0-f))*sign(z0-f); z1= z1 - dt*(alfa*signo); //z1n=z1-dt*alfa*sign(z0-f); wait(dt); t = t+dt; //al tiempo le doy incremento de 100 msec /************* El programa enviara datos cada 10 mili segundos **************/ pc.printf("%i \r\n",(int8_t)(signal*100)); //imprime el valor de la funcion pc.printf("%i \r\n",(int8_t)(z0*100)); //imprime el valor de la funcion pc.printf("%i \r\n\n",(int8_t)(z1*100)); //imprime el valor de la funcion // pc.printf("%.2f \r\n ",signal); //imprime el valor de la funcion // pc.printf("%.2f \r\n ",z0); //imprime el valor de la funcion // pc.printf("%.2f \r\n\n",z1); //imprime el valor de la funcion } }