test

Dependencies:   mbed MMA8452Q

Fork of HelloWorld by Simon Ford

Committer:
vincentlabbe
Date:
Thu Aug 31 17:37:12 2017 +0000
Revision:
17:c463c5a434ec
Parent:
16:0b58c14b639d
Child:
18:171cb8d2f243
Accel fonc bien: display bien avec decimal: manque optimiser formule

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kkalsi 6:62e39c103d12 1 #include "mbed.h"
kkalsi 9:f36f1506a840 2 #include "MMA8452Q.h"
kkalsi 7:32229ffff57e 3
kkalsi 2:42408ce8f4ae 4 Serial pc(USBTX, USBRX); // tx, rx
kkalsi 10:386a3a12f3cf 5 SPI accel(p11,p12,p13);
kkalsi 10:386a3a12f3cf 6 DigitalOut cs(p14);
kkalsi 10:386a3a12f3cf 7 // Communication I2C
kkalsi 9:f36f1506a840 8 //I2C comI2C(p9,p10); // sda, scl
kkalsi 10:386a3a12f3cf 9
kkalsi 3:8494c3f7108d 10 int main() {
kkalsi 6:62e39c103d12 11
vincentlabbe 17:c463c5a434ec 12 float x, y, z ;
kkalsi 9:f36f1506a840 13
kkalsi 15:b4b2e73faefb 14 MMA8452Q acc(p9,p10,0x1d); // acceleration object
kkalsi 9:f36f1506a840 15
vincentlabbe 17:c463c5a434ec 16 while (true) {
vincentlabbe 17:c463c5a434ec 17 x = acc.getAccX() ;
vincentlabbe 17:c463c5a434ec 18 y = acc.getAccY() ;
vincentlabbe 17:c463c5a434ec 19 z = acc.getAccZ() ;
vincentlabbe 13:64137db317ab 20 // printf("X[%.2f] Y[%.2f] Z[%.2f]\n",x, y, z) ;
kkalsi 9:f36f1506a840 21 wait(0.1);
vincentlabbe 13:64137db317ab 22
vincentlabbe 17:c463c5a434ec 23 float angle = 1-(((2*x*x+2*y*y)/(x*x+y*y+z*z)));
vincentlabbe 17:c463c5a434ec 24 pc.printf("avant acos = %f", angle);
vincentlabbe 17:c463c5a434ec 25 //float resultat = ((3.14/2.0) -( angle + (angle *angle * angle)/6.0 + (3*angle*angle*angle*angle*angle)/40.0))/2;
vincentlabbe 17:c463c5a434ec 26 float resultat = acos(angle)/2.0;
vincentlabbe 17:c463c5a434ec 27 pc.printf("valeur rad new= %f", resultat);
kkalsi 15:b4b2e73faefb 28 float degree = resultat * 18000.0/314.0;
vincentlabbe 17:c463c5a434ec 29 pc.printf("valeur deg new = %f", degree);
kkalsi 15:b4b2e73faefb 30 degree = degree * 10;
kkalsi 15:b4b2e73faefb 31 int degreInt = (int)degree;
vincentlabbe 17:c463c5a434ec 32 pc.printf("valeur deg new = %d", degreInt);
vincentlabbe 17:c463c5a434ec 33
vincentlabbe 17:c463c5a434ec 34
vincentlabbe 17:c463c5a434ec 35 float resultat2 = (3.14/2.0) -( z + (z *z * z)/6.0 + (3*z*z*z*z*z)/40.0);
vincentlabbe 17:c463c5a434ec 36 pc.printf("valeur rad old = %f", resultat2);
vincentlabbe 17:c463c5a434ec 37 float degree2 = resultat2 * 18000.0/314.0;
vincentlabbe 17:c463c5a434ec 38 pc.printf("valeur deg old = %f", degree2);
vincentlabbe 17:c463c5a434ec 39 degree2 = degree2 * 10;
vincentlabbe 17:c463c5a434ec 40 int degreInt2 = (int)degree;
vincentlabbe 17:c463c5a434ec 41 pc.printf("valeur deg old = %d", degreInt2);
kkalsi 15:b4b2e73faefb 42
vincentlabbe 16:0b58c14b639d 43 int rep;
kkalsi 15:b4b2e73faefb 44 // extracting digits
vincentlabbe 16:0b58c14b639d 45 int digits[4] = {0,0,0,0};
kkalsi 15:b4b2e73faefb 46 int i = 0;
kkalsi 15:b4b2e73faefb 47 while(degreInt > 0) {
vincentlabbe 16:0b58c14b639d 48 rep = degreInt % 10; //to get the right most digit
vincentlabbe 16:0b58c14b639d 49 digits[i]=rep;
vincentlabbe 16:0b58c14b639d 50 pc.printf("digit %d = %d, degree int: %d", i, digits[i], degreInt);
kkalsi 15:b4b2e73faefb 51 degreInt /= 10; //reduce the number by one digit
kkalsi 15:b4b2e73faefb 52 ++i;
kkalsi 15:b4b2e73faefb 53 }
kkalsi 15:b4b2e73faefb 54
vincentlabbe 17:c463c5a434ec 55 cs = 0;
vincentlabbe 17:c463c5a434ec 56 accel.write(0x76); // Clear display
vincentlabbe 17:c463c5a434ec 57 cs = 1;
vincentlabbe 17:c463c5a434ec 58 wait(0.1);
vincentlabbe 17:c463c5a434ec 59 cs = 0;
vincentlabbe 17:c463c5a434ec 60 accel.write(0x77); // Decimal control command
vincentlabbe 17:c463c5a434ec 61 accel.write(0x04);// Turn on decimal
vincentlabbe 17:c463c5a434ec 62 cs = 1;
vincentlabbe 17:c463c5a434ec 63 wait(0.01);
kkalsi 10:386a3a12f3cf 64 cs = 0;
vincentlabbe 16:0b58c14b639d 65 accel.write(digits[3]);
vincentlabbe 16:0b58c14b639d 66 cs = 1;
vincentlabbe 17:c463c5a434ec 67 wait(0.01);
vincentlabbe 16:0b58c14b639d 68 cs = 0;
vincentlabbe 16:0b58c14b639d 69 accel.write(digits[2]);
kkalsi 10:386a3a12f3cf 70 cs = 1;
vincentlabbe 17:c463c5a434ec 71 wait(0.01);
vincentlabbe 16:0b58c14b639d 72 cs = 0;
vincentlabbe 16:0b58c14b639d 73 accel.write(digits[1]);
vincentlabbe 16:0b58c14b639d 74 cs = 1;
vincentlabbe 17:c463c5a434ec 75 wait(0.01);
vincentlabbe 16:0b58c14b639d 76 cs = 0;
vincentlabbe 16:0b58c14b639d 77 accel.write(digits[0]);
vincentlabbe 16:0b58c14b639d 78 cs = 1;
vincentlabbe 17:c463c5a434ec 79 wait(0.1);
vincentlabbe 17:c463c5a434ec 80 }
kkalsi 3:8494c3f7108d 81 }
kkalsi 3:8494c3f7108d 82
kkalsi 3:8494c3f7108d 83
kkalsi 3:8494c3f7108d 84 /* communication SPI
kkalsi 3:8494c3f7108d 85 Serial pc(USBTX, USBRX); // tx, rx
kkalsi 2:42408ce8f4ae 86 SPI acc(p11,p12,p13);
kkalsi 2:42408ce8f4ae 87 DigitalOut cs(p14);
kkalsi 2:42408ce8f4ae 88 int main() {
kkalsi 2:42408ce8f4ae 89 while(1){
kkalsi 2:42408ce8f4ae 90 int nombre = 0;
kkalsi 2:42408ce8f4ae 91 pc.printf("Entrez un nombre de 4 chiffres : ");
kkalsi 2:42408ce8f4ae 92 pc.scanf("%d", &nombre);
kkalsi 2:42408ce8f4ae 93 pc.printf("Votre numero entrez est le : %d", nombre);
kkalsi 2:42408ce8f4ae 94
kkalsi 2:42408ce8f4ae 95 cs = 0;
kkalsi 3:8494c3f7108d 96 acc.write(nombre);
kkalsi 2:42408ce8f4ae 97 cs = 1;
kkalsi 2:42408ce8f4ae 98 wait(0.2);
kkalsi 2:42408ce8f4ae 99 cs = 0;
kkalsi 2:42408ce8f4ae 100 wait(1);
kkalsi 2:42408ce8f4ae 101 }
kkalsi 3:8494c3f7108d 102 }*/
kkalsi 2:42408ce8f4ae 103 /*
kkalsi 2:42408ce8f4ae 104 Serial pc(USBTX, USBRX); // tx, rx
kkalsi 2:42408ce8f4ae 105 Serial mc(p13,p14);
kkalsi 2:42408ce8f4ae 106 int main() {
kkalsi 2:42408ce8f4ae 107
kkalsi 2:42408ce8f4ae 108 int nombre = 0;
kkalsi 2:42408ce8f4ae 109 pc.printf("Entrez un nombre de 4 chiffres : ");
kkalsi 2:42408ce8f4ae 110 pc.scanf("%d", &nombre);
kkalsi 2:42408ce8f4ae 111 pc.printf("Votre numero entrez est le : %d", nombre);
kkalsi 2:42408ce8f4ae 112 mc.printf(nombre);
kkalsi 2:42408ce8f4ae 113 }
kkalsi 2:42408ce8f4ae 114 */
simon 0:fb6bbc10ffa0 115
kkalsi 2:42408ce8f4ae 116
kkalsi 2:42408ce8f4ae 117 /*
kkalsi 2:42408ce8f4ae 118 DigitalOut myled(LED2);
simon 0:fb6bbc10ffa0 119
simon 0:fb6bbc10ffa0 120 int main() {
simon 0:fb6bbc10ffa0 121 while(1) {
simon 0:fb6bbc10ffa0 122 myled = 1;
simon 0:fb6bbc10ffa0 123 wait(0.2);
simon 0:fb6bbc10ffa0 124 myled = 0;
simon 0:fb6bbc10ffa0 125 wait(0.2);
simon 0:fb6bbc10ffa0 126 }
simon 0:fb6bbc10ffa0 127 }
kkalsi 2:42408ce8f4ae 128 */