bunch of tesitng for F746NG

Dependencies:   BSP_DISCO_F746NG F746_GUI F7_Ethernet LCD_DISCO_F746NG SimpleSocket TMP36 GZ TS_DISCO_F746NG TextLCD WebSocketClient mbed-rtos mbed sMotor

Committer:
Maricius
Date:
Mon Jun 18 13:16:23 2018 +0000
Revision:
1:1f4543ea364d
Parent:
0:45610c4af223
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Maricius 0:45610c4af223 1 #include "mbed.h"
Maricius 0:45610c4af223 2 #include "rtos.h"
Maricius 1:1f4543ea364d 3 #include "sMotor.h"
Maricius 0:45610c4af223 4
Maricius 0:45610c4af223 5
Maricius 0:45610c4af223 6 AnalogIn heart_rate2(A0);
Maricius 0:45610c4af223 7 AnalogIn adc_temp(A3);
Maricius 0:45610c4af223 8 AnalogIn adc_sound(A1);
Maricius 1:1f4543ea364d 9 //AnalogIn hymid(A2);
Maricius 1:1f4543ea364d 10 DigitalOut myled2(D4);
Maricius 1:1f4543ea364d 11 DigitalOut buzzer(D3);
Maricius 1:1f4543ea364d 12
Maricius 0:45610c4af223 13 //AnalogIn Proximity_measure(A2);
Maricius 0:45610c4af223 14 void heartrate();
Maricius 0:45610c4af223 15 void sound();
Maricius 0:45610c4af223 16 void temp();
Maricius 1:1f4543ea364d 17 void smotor();
Maricius 1:1f4543ea364d 18
Maricius 1:1f4543ea364d 19 void smotor(){
Maricius 1:1f4543ea364d 20
Maricius 1:1f4543ea364d 21 sMotor motor(D8, D9, D10, D11);
Maricius 1:1f4543ea364d 22 int step_speed = 1000 ; // set default motor speed
Maricius 1:1f4543ea364d 23 int numstep = 1024 ;
Maricius 1:1f4543ea364d 24 motor.step(numstep/1,0,step_speed);
Maricius 1:1f4543ea364d 25 }
Maricius 0:45610c4af223 26
Maricius 0:45610c4af223 27 double h;
Maricius 1:1f4543ea364d 28 double *h_p = (double*)malloc(1*sizeof(double));
Maricius 1:1f4543ea364d 29 int heart_rate = 0;
Maricius 1:1f4543ea364d 30 int *beats_per_min = (int*)malloc(1*sizeof(int));
Maricius 0:45610c4af223 31
Maricius 1:1f4543ea364d 32 //Heartrate monitor
Maricius 0:45610c4af223 33 void heartrate(){
Maricius 1:1f4543ea364d 34 int number_of_beats = 0;
Maricius 1:1f4543ea364d 35 float j = 0.0;
Maricius 0:45610c4af223 36 h_p = &h;
Maricius 1:1f4543ea364d 37 beats_per_min = &heart_rate;
Maricius 0:45610c4af223 38 while (1){
Maricius 1:1f4543ea364d 39
Maricius 1:1f4543ea364d 40 buzzer = 0;
Maricius 1:1f4543ea364d 41
Maricius 1:1f4543ea364d 42 h = heart_rate2.read();
Maricius 1:1f4543ea364d 43 if(h>=1.0){
Maricius 1:1f4543ea364d 44 number_of_beats = number_of_beats + 1;
Maricius 1:1f4543ea364d 45 myled2 = 1;
Maricius 1:1f4543ea364d 46 buzzer = 1;
Maricius 1:1f4543ea364d 47 j = j + 0.3;
Maricius 1:1f4543ea364d 48 wait(0.3);
Maricius 1:1f4543ea364d 49 }
Maricius 1:1f4543ea364d 50 else {
Maricius 1:1f4543ea364d 51 myled2 = 0;
Maricius 1:1f4543ea364d 52 j = j + 0.05;
Maricius 1:1f4543ea364d 53 wait(0.05);
Maricius 0:45610c4af223 54 }
Maricius 1:1f4543ea364d 55 //Every 10 sec calculate the heartrate
Maricius 1:1f4543ea364d 56 if(j > 10) {
Maricius 1:1f4543ea364d 57 heart_rate = number_of_beats * 6;
Maricius 1:1f4543ea364d 58 j = 0.0;
Maricius 1:1f4543ea364d 59 number_of_beats = 0;
Maricius 1:1f4543ea364d 60 }
Maricius 1:1f4543ea364d 61 else {
Maricius 1:1f4543ea364d 62
Maricius 1:1f4543ea364d 63 }
Maricius 1:1f4543ea364d 64
Maricius 1:1f4543ea364d 65
Maricius 1:1f4543ea364d 66
Maricius 1:1f4543ea364d 67 }
Maricius 0:45610c4af223 68 }
Maricius 1:1f4543ea364d 69 double t;
Maricius 1:1f4543ea364d 70 double *t_p = (double*)malloc(1*sizeof(double));
Maricius 0:45610c4af223 71
Maricius 0:45610c4af223 72 void temp(){
Maricius 1:1f4543ea364d 73
Maricius 1:1f4543ea364d 74 t_p = &t;
Maricius 0:45610c4af223 75 //------------------------------------------------------------------------//
Maricius 0:45610c4af223 76 //This section is using the external temperatur sensor "Grove temperatur sensor v1.2
Maricius 0:45610c4af223 77 //float resistance;
Maricius 0:45610c4af223 78 const int B = 4275;
Maricius 1:1f4543ea364d 79 const int R0 = 100000;
Maricius 0:45610c4af223 80 //char temp[10];
Maricius 0:45610c4af223 81 double R;
Maricius 1:1f4543ea364d 82 double temp_combined;
Maricius 1:1f4543ea364d 83 double a;
Maricius 1:1f4543ea364d 84 a = adc_temp.read();
Maricius 0:45610c4af223 85 R = 1023.0/a-1.0;
Maricius 1:1f4543ea364d 86 R = R0*R;
Maricius 1:1f4543ea364d 87 t = (a - 0.5)*100;
Maricius 1:1f4543ea364d 88 //t = 1.0/(log(R/R0)/B+1/298.15)-273.15;
Maricius 1:1f4543ea364d 89 //reads the voltage from the analog temperatur sensor
Maricius 1:1f4543ea364d 90 for( int i = 1; i <= 5; i = i + 1 ) {
Maricius 1:1f4543ea364d 91 a = adc_temp.read();
Maricius 1:1f4543ea364d 92 temp_combined = temp_combined + a;
Maricius 1:1f4543ea364d 93 if(i == 5) {
Maricius 1:1f4543ea364d 94 temp_combined = temp_combined / 5;
Maricius 1:1f4543ea364d 95 R = 1023.0/temp_combined-1.0;
Maricius 1:1f4543ea364d 96 t = 1.0/(log(R)/B+1/298.15)-173.15;
Maricius 1:1f4543ea364d 97 temp_combined = 0;
Maricius 1:1f4543ea364d 98 i = 1;
Maricius 1:1f4543ea364d 99
Maricius 1:1f4543ea364d 100 wait(1);
Maricius 1:1f4543ea364d 101 } else {
Maricius 1:1f4543ea364d 102 wait(1);
Maricius 1:1f4543ea364d 103 }
Maricius 1:1f4543ea364d 104 }
Maricius 1:1f4543ea364d 105
Maricius 1:1f4543ea364d 106
Maricius 1:1f4543ea364d 107
Maricius 0:45610c4af223 108 //R = R0*R;
Maricius 1:1f4543ea364d 109
Maricius 0:45610c4af223 110 //Calculate the temperature from the voltage
Maricius 1:1f4543ea364d 111
Maricius 0:45610c4af223 112 //temperature = ((a*1000)-500)/10;
Maricius 0:45610c4af223 113 //sprintf(temp, "%f", a);
Maricius 0:45610c4af223 114 //resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
Maricius 0:45610c4af223 115 //temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet&nbsp;;
Maricius 0:45610c4af223 116 //delay(100);
Maricius 0:45610c4af223 117
Maricius 0:45610c4af223 118 }
Maricius 0:45610c4af223 119
Maricius 0:45610c4af223 120
Maricius 0:45610c4af223 121 void sound() {
Maricius 0:45610c4af223 122 float b = adc_sound.read();
Maricius 0:45610c4af223 123 char temp_sound[10];
Maricius 0:45610c4af223 124 float noiselevel;
Maricius 0:45610c4af223 125 noiselevel = b;
Maricius 1:1f4543ea364d 126
Maricius 0:45610c4af223 127 if (noiselevel != 0) {
Maricius 0:45610c4af223 128
Maricius 0:45610c4af223 129 //do something with noiselevel!!
Maricius 0:45610c4af223 130
Maricius 0:45610c4af223 131 }
Maricius 0:45610c4af223 132 wait(0.1);
Maricius 0:45610c4af223 133 }
Maricius 0:45610c4af223 134
Maricius 0:45610c4af223 135 /*void proximity(){
Maricius 0:45610c4af223 136 double prox_read;
Maricius 0:45610c4af223 137 while(1){
Maricius 0:45610c4af223 138
Maricius 0:45610c4af223 139 prox_read = Proximity_measure.read();
Maricius 0:45610c4af223 140
Maricius 0:45610c4af223 141
Maricius 0:45610c4af223 142 wait(0.5);
Maricius 0:45610c4af223 143
Maricius 0:45610c4af223 144 buzzer.write(0);
Maricius 0:45610c4af223 145 wait(3);
Maricius 0:45610c4af223 146 }
Maricius 0:45610c4af223 147
Maricius 0:45610c4af223 148 }*/
Maricius 0:45610c4af223 149