test

Dependencies:   mbed MMA8452Q

Fork of HelloWorld by Simon Ford

Committer:
kkalsi
Date:
Thu Aug 31 17:54:54 2017 +0000
Revision:
18:171cb8d2f243
Parent:
17:c463c5a434ec
Child:
19:992f183385e8
Updated code optimization

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