z
Dependencies: BSP_DISCO_L476VG LCD_DISCO_L476VG
main.cpp@7:01c904fd8ae3, 2020-06-05 (annotated)
- Committer:
- Leonnn
- Date:
- Fri Jun 05 19:25:05 2020 +0000
- Revision:
- 7:01c904fd8ae3
- Parent:
- 6:41d6f5a24ff0
VI
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Leonnn | 0:5ae3e965267b | 1 | #include "mbed.h" |
Leonnn | 5:ff9848a77dac | 2 | #include "math.h" |
Leonnn | 2:573692145af4 | 3 | #include "LCD_DISCO_L476VG.h" |
Leonnn | 2:573692145af4 | 4 | |
Leonnn | 5:ff9848a77dac | 5 | #define PI 3.14159265358979323846 |
Leonnn | 6:41d6f5a24ff0 | 6 | #define cadence 0.01 |
Leonnn | 7:01c904fd8ae3 | 7 | #define PER_max 10 |
Leonnn | 7:01c904fd8ae3 | 8 | #define A_max 100 |
Leonnn | 5:ff9848a77dac | 9 | |
Leonnn | 2:573692145af4 | 10 | LCD_DISCO_L476VG lcd; |
Leonnn | 2:573692145af4 | 11 | |
Leonnn | 0:5ae3e965267b | 12 | Serial pc(SERIAL_TX, SERIAL_RX); |
Leonnn | 4:857fcfaf69fb | 13 | Ticker tick_cadence; |
Leonnn | 6:41d6f5a24ff0 | 14 | Ticker tick_moy; |
Leonnn | 7:01c904fd8ae3 | 15 | |
Leonnn | 7:01c904fd8ae3 | 16 | InterruptIn left(JOYSTICK_LEFT); |
Leonnn | 7:01c904fd8ae3 | 17 | InterruptIn right(JOYSTICK_RIGHT); |
Leonnn | 7:01c904fd8ae3 | 18 | InterruptIn up(JOYSTICK_UP); |
Leonnn | 7:01c904fd8ae3 | 19 | InterruptIn down(JOYSTICK_DOWN); |
Leonnn | 7:01c904fd8ae3 | 20 | |
Leonnn | 6:41d6f5a24ff0 | 21 | bool flag_data = 0, flag_moy = 0; |
Leonnn | 7:01c904fd8ae3 | 22 | float A =2, PER = 1; |
Leonnn | 5:ff9848a77dac | 23 | |
Leonnn | 6:41d6f5a24ff0 | 24 | void interrupt_data(void){ |
Leonnn | 6:41d6f5a24ff0 | 25 | flag_data = 1; |
Leonnn | 6:41d6f5a24ff0 | 26 | } |
Leonnn | 6:41d6f5a24ff0 | 27 | void interrupt_moy(void){ |
Leonnn | 6:41d6f5a24ff0 | 28 | flag_moy = 1; |
Leonnn | 4:857fcfaf69fb | 29 | } |
Leonnn | 0:5ae3e965267b | 30 | |
Leonnn | 7:01c904fd8ae3 | 31 | void ISR_left(void){ |
Leonnn | 7:01c904fd8ae3 | 32 | if(PER>0.1) PER-=0.1; |
Leonnn | 7:01c904fd8ae3 | 33 | } |
Leonnn | 7:01c904fd8ae3 | 34 | void ISR_right(void){ |
Leonnn | 7:01c904fd8ae3 | 35 | if(PER<PER_max-0.1) PER += 0.1; |
Leonnn | 7:01c904fd8ae3 | 36 | } |
Leonnn | 7:01c904fd8ae3 | 37 | void ISR_up(void){ |
Leonnn | 7:01c904fd8ae3 | 38 | if(A<A_max-0.1) A += 1; |
Leonnn | 7:01c904fd8ae3 | 39 | } |
Leonnn | 7:01c904fd8ae3 | 40 | void ISR_down(void){ |
Leonnn | 7:01c904fd8ae3 | 41 | if(A>0.1) A -= 0.1; |
Leonnn | 7:01c904fd8ae3 | 42 | } |
Leonnn | 7:01c904fd8ae3 | 43 | |
Leonnn | 0:5ae3e965267b | 44 | int main(void){ |
Leonnn | 5:ff9848a77dac | 45 | pc.baud(115200); |
Leonnn | 3:fb87187a09bd | 46 | unsigned char display[7] = {0}; |
Leonnn | 6:41d6f5a24ff0 | 47 | float t, y1, y2, moy; |
Leonnn | 0:5ae3e965267b | 48 | |
Leonnn | 6:41d6f5a24ff0 | 49 | tick_cadence.attach(&interrupt_data, 0.01); |
Leonnn | 6:41d6f5a24ff0 | 50 | tick_moy.attach(&interrupt_moy, 1); |
Leonnn | 6:41d6f5a24ff0 | 51 | |
Leonnn | 7:01c904fd8ae3 | 52 | left.rise(&ISR_left); |
Leonnn | 7:01c904fd8ae3 | 53 | right.rise(&ISR_right); |
Leonnn | 7:01c904fd8ae3 | 54 | up.rise(&ISR_up); |
Leonnn | 7:01c904fd8ae3 | 55 | down.rise(&ISR_down); |
Leonnn | 7:01c904fd8ae3 | 56 | |
Leonnn | 7:01c904fd8ae3 | 57 | left.mode(PullDown); |
Leonnn | 7:01c904fd8ae3 | 58 | right.mode(PullDown); |
Leonnn | 7:01c904fd8ae3 | 59 | up.mode(PullDown); |
Leonnn | 7:01c904fd8ae3 | 60 | down.mode(PullDown); |
Leonnn | 5:ff9848a77dac | 61 | //------------------------------------------------------------------------- |
Leonnn | 0:5ae3e965267b | 62 | while(1){ |
Leonnn | 2:573692145af4 | 63 | |
Leonnn | 6:41d6f5a24ff0 | 64 | if(flag_data){// envoi des données |
Leonnn | 7:01c904fd8ae3 | 65 | pc.printf("$%f %f %f;",A, y1, y2); |
Leonnn | 6:41d6f5a24ff0 | 66 | flag_data=0; |
Leonnn | 2:573692145af4 | 67 | } |
Leonnn | 6:41d6f5a24ff0 | 68 | if(flag_moy){// moyennage |
Leonnn | 6:41d6f5a24ff0 | 69 | moy = moy/256; |
Leonnn | 7:01c904fd8ae3 | 70 | pc.printf("$%f %f %f %f;",A, y1, y2, moy); |
Leonnn | 7:01c904fd8ae3 | 71 | |
Leonnn | 7:01c904fd8ae3 | 72 | lcd.Clear(); |
Leonnn | 7:01c904fd8ae3 | 73 | sprintf((char*)display,"%f", moy); |
Leonnn | 7:01c904fd8ae3 | 74 | lcd.DisplayString(display); |
Leonnn | 7:01c904fd8ae3 | 75 | |
Leonnn | 6:41d6f5a24ff0 | 76 | moy = 0; |
Leonnn | 6:41d6f5a24ff0 | 77 | flag_moy = 0; |
Leonnn | 6:41d6f5a24ff0 | 78 | } |
Leonnn | 6:41d6f5a24ff0 | 79 | else |
Leonnn | 6:41d6f5a24ff0 | 80 | moy += y2; |
Leonnn | 6:41d6f5a24ff0 | 81 | |
Leonnn | 7:01c904fd8ae3 | 82 | y1 = A*sin(2.0*PI*(1.0/PER)*(t*cadence)); |
Leonnn | 6:41d6f5a24ff0 | 83 | y2= 2* fabs(y1) ; |
Leonnn | 6:41d6f5a24ff0 | 84 | t++;; |
Leonnn | 6:41d6f5a24ff0 | 85 | wait(cadence); |
Leonnn | 0:5ae3e965267b | 86 | } |
Leonnn | 0:5ae3e965267b | 87 | } |