test

Dependencies:   mbed MMA8452Q

Fork of HelloWorld by Simon Ford

Committer:
vincentlabbe
Date:
Thu Aug 31 19:47:15 2017 +0000
Revision:
20:107380f7eeb9
Parent:
19:992f183385e8
Child:
21:74482f23c8fe
only int version 1 fonctionnal

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