Vincent Persad
/
mbed_blinky
Iniversity work
main.cpp@3:7db4d7f82176, 2017-09-03 (annotated)
- Committer:
- vinceP
- Date:
- Sun Sep 03 18:39:10 2017 +0000
- Revision:
- 3:7db4d7f82176
- Parent:
- 2:8d0e48d38611
Mise a niveau du code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vinceP | 2:8d0e48d38611 | 1 | #include "mbed.h" |
vinceP | 2:8d0e48d38611 | 2 | #include "MMA8452.h" |
vinceP | 2:8d0e48d38611 | 3 | #include <math.h> |
vinceP | 2:8d0e48d38611 | 4 | |
vinceP | 0:ca687da7d225 | 5 | Serial pc(USBTX, USBRX); |
vinceP | 2:8d0e48d38611 | 6 | SPI spiTest(p5, p6, p7,p8); |
vinceP | 2:8d0e48d38611 | 7 | MMA8452 acc(p9, p10, 100000); |
vinceP | 0:ca687da7d225 | 8 | |
vinceP | 1:0630912bb400 | 9 | PwmOut led1(LED1); |
vinceP | 1:0630912bb400 | 10 | PwmOut led2(LED2); |
vinceP | 1:0630912bb400 | 11 | PwmOut led3(LED3); |
vinceP | 1:0630912bb400 | 12 | |
vinceP | 1:0630912bb400 | 13 | void calculateAngle(); |
vinceP | 2:8d0e48d38611 | 14 | void display(int number); |
vinceP | 1:0630912bb400 | 15 | |
vinceP | 0:ca687da7d225 | 16 | int main() { |
vinceP | 2:8d0e48d38611 | 17 | int number = 10; |
vinceP | 2:8d0e48d38611 | 18 | char c[50]; |
vinceP | 3:7db4d7f82176 | 19 | int x = 0,y = 0,z = 0; |
vinceP | 2:8d0e48d38611 | 20 | while(1) { |
vinceP | 2:8d0e48d38611 | 21 | sprintf(c,"%f", number); |
vinceP | 2:8d0e48d38611 | 22 | pc.printf("x:%c \r\n",c[0]); |
vinceP | 2:8d0e48d38611 | 23 | pc.printf("x:%s \r\n",c); |
vinceP | 3:7db4d7f82176 | 24 | //Code de la librairie |
vinceP | 3:7db4d7f82176 | 25 | //Sort les valeur en int |
vinceP | 3:7db4d7f82176 | 26 | //acc.readXYZCounts(&x,&y,&z); //<-- to use |
vinceP | 3:7db4d7f82176 | 27 | //sort les valeur en double (c'est l'accélération |
vinceP | 3:7db4d7f82176 | 28 | //acc.readXYZGravity(&x,&y,&z); |
vinceP | 3:7db4d7f82176 | 29 | //calculateAngle(x,y,z); |
vinceP | 1:0630912bb400 | 30 | wait(1); |
vinceP | 2:8d0e48d38611 | 31 | number--; |
vinceP | 1:0630912bb400 | 32 | } |
vinceP | 1:0630912bb400 | 33 | } |
vinceP | 1:0630912bb400 | 34 | |
vinceP | 2:8d0e48d38611 | 35 | void calculateAngle(int x,int y, int z){ |
vinceP | 2:8d0e48d38611 | 36 | //double x, y, z; |
vinceP | 3:7db4d7f82176 | 37 | float val = 0.5 * 180.0 / 3.1416; |
vinceP | 2:8d0e48d38611 | 38 | double calcule = (1-2*((x*x+y*y)/(x*x+y*y+z*z))); |
vinceP | 3:7db4d7f82176 | 39 | //; |
vinceP | 2:8d0e48d38611 | 40 | /*x = -0.016; |
vinceP | 2:8d0e48d38611 | 41 | y = -0.877; |
vinceP | 2:8d0e48d38611 | 42 | z = 0.499;*/ |
vinceP | 1:0630912bb400 | 43 | led1 = abs(x); |
vinceP | 1:0630912bb400 | 44 | led2 = abs(y); |
vinceP | 1:0630912bb400 | 45 | led3 = abs(z); |
vinceP | 2:8d0e48d38611 | 46 | //float amplitude =sqrt(x*x+y*y+z*z); |
vinceP | 2:8d0e48d38611 | 47 | //float crossProductVector = sqrt(x*x+y*y); |
vinceP | 2:8d0e48d38611 | 48 | //float t = -1*asin(crossProductVector/amplitude)*val; //was z before |
vinceP | 2:8d0e48d38611 | 49 | //float e = 0.5*acos(1-2*((pow(x,2)+pow(y,2))/((pow(x,2)+pow(y,2)+pow(z,2)))))*val; |
vinceP | 3:7db4d7f82176 | 50 | float e2 = acos(calcule)*val; |
vinceP | 1:0630912bb400 | 51 | pc.printf("x:%lf y:%lf z:%lf\r\n",x,y,z); |
vinceP | 2:8d0e48d38611 | 52 | pc.printf("angle: %lf\r\n",e2); |
vinceP | 2:8d0e48d38611 | 53 | } |
vinceP | 3:7db4d7f82176 | 54 | //possibilité de changement du type de valeur en paramêtre |
vinceP | 2:8d0e48d38611 | 55 | void display(int number){ |
vinceP | 2:8d0e48d38611 | 56 | char c[6]; |
vinceP | 2:8d0e48d38611 | 57 | //Explication de la fonction sprintf https://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm |
vinceP | 2:8d0e48d38611 | 58 | int test = sprintf(c,"%*.4Lf", number); |
vinceP | 2:8d0e48d38611 | 59 | //sprintf(c,"%ld", number); |
vinceP | 2:8d0e48d38611 | 60 | spiTest.write(0x76); |
vinceP | 2:8d0e48d38611 | 61 | pc.printf("c = %u\r\n", c[3] == '\0'); |
vinceP | 2:8d0e48d38611 | 62 | pc.printf("test = %d\r\n", test); |
vinceP | 2:8d0e48d38611 | 63 | |
vinceP | 2:8d0e48d38611 | 64 | switch(test) { |
vinceP | 2:8d0e48d38611 | 65 | case 1: |
vinceP | 2:8d0e48d38611 | 66 | spiTest.write(0x7E); |
vinceP | 2:8d0e48d38611 | 67 | spiTest.write(c[0]); |
vinceP | 2:8d0e48d38611 | 68 | break; |
vinceP | 2:8d0e48d38611 | 69 | case 2: |
vinceP | 2:8d0e48d38611 | 70 | spiTest.write(0x7D|c[0]); |
vinceP | 2:8d0e48d38611 | 71 | spiTest.write(0x7E|c[1]); |
vinceP | 2:8d0e48d38611 | 72 | break; |
vinceP | 2:8d0e48d38611 | 73 | case 3: |
vinceP | 2:8d0e48d38611 | 74 | break; |
vinceP | 2:8d0e48d38611 | 75 | } |
vinceP | 2:8d0e48d38611 | 76 | |
vinceP | 2:8d0e48d38611 | 77 | int n = sizeof(c)/sizeof(c[0]); |
vinceP | 2:8d0e48d38611 | 78 | pc.printf("n = %i\r\n", n); |
vinceP | 2:8d0e48d38611 | 79 | //control pour le décimal |
vinceP | 2:8d0e48d38611 | 80 | spiTest.write(0x77); // Decimal control command |
vinceP | 2:8d0e48d38611 | 81 | //valeur possible |
vinceP | 2:8d0e48d38611 | 82 | //0b00000001 = 1.234 |
vinceP | 2:8d0e48d38611 | 83 | //0b00000010 = 12.34 |
vinceP | 2:8d0e48d38611 | 84 | //0b00000100 = 123.4 |
vinceP | 2:8d0e48d38611 | 85 | spiTest.write(0b00000001); |
vinceP | 2:8d0e48d38611 | 86 | /*for (int i=4; i>=0; i--){ |
vinceP | 2:8d0e48d38611 | 87 | cs = 0; |
vinceP | 2:8d0e48d38611 | 88 | spiTest.write(c[i]); |
vinceP | 2:8d0e48d38611 | 89 | cs = 1; |
vinceP | 2:8d0e48d38611 | 90 | }*/ |
vinceP | 2:8d0e48d38611 | 91 | /*spiTest.write(c); |
vinceP | 2:8d0e48d38611 | 92 | ; |
vinceP | 2:8d0e48d38611 | 93 | spiTest.write(c[0]);*/ |
vinceP | 1:0630912bb400 | 94 | } |
vinceP | 1:0630912bb400 | 95 | /* |
vinceP | 2:8d0e48d38611 | 96 | |
vinceP | 1:0630912bb400 | 97 | |
vinceP | 1:0630912bb400 | 98 | int main() { |
vinceP | 1:0630912bb400 | 99 | //https://developer.mbed.org/handbook/SerialPC |
vinceP | 1:0630912bb400 | 100 | //https://developer.mbed.org/handbook/mbed-NXP-LPC1768-Getting-Started |
vinceP | 1:0630912bb400 | 101 | //pc.printf("Echoes back to the screen anything you type\n"); |
vinceP | 1:0630912bb400 | 102 | int nombre = 0; |
vinceP | 1:0630912bb400 | 103 | cs = 1; |
vinceP | 1:0630912bb400 | 104 | spiTest.frequency(250000); |
vinceP | 1:0630912bb400 | 105 | cs = 0; |
vinceP | 1:0630912bb400 | 106 | spiTest.write(0x81); |
vinceP | 1:0630912bb400 | 107 | //int t = spiTest.write(nombre); |
vinceP | 1:0630912bb400 | 108 | //pc.printf("Nombre = %X\r\n", t); |
vinceP | 1:0630912bb400 | 109 | cs = 1; |
vinceP | 0:ca687da7d225 | 110 | while(1) { |
vinceP | 1:0630912bb400 | 111 | //uart.printf("%c",pc.getc()); |
vinceP | 1:0630912bb400 | 112 | wait(0.7); |
vinceP | 1:0630912bb400 | 113 | nombre++; |
vinceP | 1:0630912bb400 | 114 | display(nombre); |
vinceP | 1:0630912bb400 | 115 | pc.printf("Nombre = %X\r\n", nombre); |
vinceP | 1:0630912bb400 | 116 | if(nombre == 15){ |
vinceP | 1:0630912bb400 | 117 | return(0); |
vinceP | 1:0630912bb400 | 118 | } |
vinceP | 0:ca687da7d225 | 119 | } |
vinceP | 0:ca687da7d225 | 120 | } |
vinceP | 2:8d0e48d38611 | 121 | |
vinceP | 0:ca687da7d225 | 122 | |
vinceP | 1:0630912bb400 | 123 | /* Ignore cette partie c'Est le lab |
vinceP | 0:ca687da7d225 | 124 | int main() { |
vinceP | 0:ca687da7d225 | 125 | //https://developer.mbed.org/handbook/SerialPC |
vinceP | 0:ca687da7d225 | 126 | //https://developer.mbed.org/handbook/mbed-NXP-LPC1768-Getting-Started |
vinceP | 0:ca687da7d225 | 127 | //pc.printf("Echoes back to the screen anything you type\n"); |
vinceP | 0:ca687da7d225 | 128 | int nombre = 2; |
vinceP | 0:ca687da7d225 | 129 | cs = 1; |
vinceP | 0:ca687da7d225 | 130 | //uart.printf("%d",nombre); |
vinceP | 0:ca687da7d225 | 131 | // Setup the spi for 8 bit data, high steady state clock, |
vinceP | 0:ca687da7d225 | 132 | // second edge capture, with a 1MHz clock rate |
vinceP | 0:ca687da7d225 | 133 | // spiTest.format(8,3); |
vinceP | 0:ca687da7d225 | 134 | // spiTest.frequency(1000000); |
vinceP | 0:ca687da7d225 | 135 | cs = 0; |
vinceP | 0:ca687da7d225 | 136 | |
vinceP | 0:ca687da7d225 | 137 | // Send 0x8f, the command to read the WHOAMI register |
vinceP | 0:ca687da7d225 | 138 | int t = spiTest.write(0x8F); |
vinceP | 0:ca687da7d225 | 139 | pc.printf("WHOAMI register = %X\r\n", t); |
vinceP | 0:ca687da7d225 | 140 | |
vinceP | 0:ca687da7d225 | 141 | // Send a dummy byte to receive the contents of the WHOAMI register |
vinceP | 0:ca687da7d225 | 142 | //int whoami = spiTest.write(0x00); |
vinceP | 0:ca687da7d225 | 143 | //printf("WHOAMI register = 0x%X\n", whoami); |
vinceP | 0:ca687da7d225 | 144 | cs = 1; |
vinceP | 0:ca687da7d225 | 145 | while(1) { |
vinceP | 0:ca687da7d225 | 146 | //uart.printf("%c",pc.getc()); |
vinceP | 0:ca687da7d225 | 147 | cs = 0; |
vinceP | 0:ca687da7d225 | 148 | |
vinceP | 0:ca687da7d225 | 149 | // Send 0x8f, the command to read the WHOAMI register |
vinceP | 0:ca687da7d225 | 150 | pc.scanf("%d",&nombre); |
vinceP | 0:ca687da7d225 | 151 | t = spiTest.write(nombre); |
vinceP | 0:ca687da7d225 | 152 | pc.printf("WHOAMI register = %X\r\n", t); |
vinceP | 0:ca687da7d225 | 153 | cs = 0; |
vinceP | 0:ca687da7d225 | 154 | myled = 1; |
vinceP | 0:ca687da7d225 | 155 | wait(0.2); |
vinceP | 0:ca687da7d225 | 156 | myled = 0; |
vinceP | 0:ca687da7d225 | 157 | wait(0.2); |
vinceP | 0:ca687da7d225 | 158 | //pc.putc(pc.getc()); |
vinceP | 0:ca687da7d225 | 159 | } |
vinceP | 0:ca687da7d225 | 160 | } |
vinceP | 0:ca687da7d225 | 161 | */ |