z

Dependencies:   BSP_DISCO_L476VG LCD_DISCO_L476VG

Committer:
Leonnn
Date:
Fri Jun 05 19:25:05 2020 +0000
Revision:
7:01c904fd8ae3
Parent:
6:41d6f5a24ff0
VI

Who changed what in which revision?

UserRevisionLine numberNew 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 }