Team H - TVZ Seminar / Mbed 2 deprecated Zavrsni_Daljinski

Dependencies:   mbed SSD1308_128x64_I2C

Committer:
DudeHD
Date:
Fri Aug 23 16:09:04 2019 +0000
Revision:
0:ac8a5576c57a
Child:
1:4c27d179c6c2
hhmkj

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DudeHD 0:ac8a5576c57a 1 #include "mbed.h"
DudeHD 0:ac8a5576c57a 2 #include <string>
DudeHD 0:ac8a5576c57a 3 #include <math.h>
DudeHD 0:ac8a5576c57a 4 //#include "SSD1308.h"
DudeHD 0:ac8a5576c57a 5
DudeHD 0:ac8a5576c57a 6 #define AVG 5
DudeHD 0:ac8a5576c57a 7 #define cal_num 10
DudeHD 0:ac8a5576c57a 8
DudeHD 0:ac8a5576c57a 9 AnalogIn a1(PA_0);
DudeHD 0:ac8a5576c57a 10 AnalogIn a2(PA_1);
DudeHD 0:ac8a5576c57a 11 AnalogIn a3(PA_3);
DudeHD 0:ac8a5576c57a 12 AnalogIn a4(PA_4);
DudeHD 0:ac8a5576c57a 13 AnalogIn a5(PA_5);
DudeHD 0:ac8a5576c57a 14 AnalogIn a6(PA_6);
DudeHD 0:ac8a5576c57a 15 AnalogIn abat(PA_7);
DudeHD 0:ac8a5576c57a 16
DudeHD 0:ac8a5576c57a 17 DigitalIn SW1(PA_11);
DudeHD 0:ac8a5576c57a 18 DigitalIn SW2(PB_5);
DudeHD 0:ac8a5576c57a 19 DigitalIn SW3(PB_4);
DudeHD 0:ac8a5576c57a 20 DigitalIn JSW1(PA_12);
DudeHD 0:ac8a5576c57a 21 DigitalIn JSW2(PB_0);
DudeHD 0:ac8a5576c57a 22 DigitalIn JSW3(PA_8);
DudeHD 0:ac8a5576c57a 23 DigitalIn TSW(PB_1);
DudeHD 0:ac8a5576c57a 24 Serial hc(PA_9, PA_10);
DudeHD 0:ac8a5576c57a 25 Serial pc(PA_2, PA_15);
DudeHD 0:ac8a5576c57a 26 //Serial pc(SERIAL_TX, SERIAL_RX);
DudeHD 0:ac8a5576c57a 27 I2C i2c(PB_7, PB_6);
DudeHD 0:ac8a5576c57a 28 //SSD1308 oled = SSD1308(&i2c, SSD1308_SA0);
DudeHD 0:ac8a5576c57a 29
DudeHD 0:ac8a5576c57a 30 char data[300];
DudeHD 0:ac8a5576c57a 31 int i=0;
DudeHD 0:ac8a5576c57a 32 char ndone=1;
DudeHD 0:ac8a5576c57a 33 char avg_count=0;
DudeHD 0:ac8a5576c57a 34
DudeHD 0:ac8a5576c57a 35 float LAT,LON,TIME;
DudeHD 0:ac8a5576c57a 36 char NS,EW,status;
DudeHD 0:ac8a5576c57a 37 float check;
DudeHD 0:ac8a5576c57a 38 int latdeg,londeg;
DudeHD 0:ac8a5576c57a 39 float latmin,lonmin;
DudeHD 0:ac8a5576c57a 40 float lat_arr[AVG];
DudeHD 0:ac8a5576c57a 41 float lon_arr[AVG];
DudeHD 0:ac8a5576c57a 42
DudeHD 0:ac8a5576c57a 43 //short x1,x2,x3,y1,y2,y3;
DudeHD 0:ac8a5576c57a 44 short TH,PI,RO,YA,TH_def;//,AUX,LAT,LON,COM
DudeHD 0:ac8a5576c57a 45 float x1_ar,x2_ar,x3_ar,y1_ar,y2_ar,y3_ar;
DudeHD 0:ac8a5576c57a 46 short mid_point=50;
DudeHD 0:ac8a5576c57a 47 short x1_cor,x2_cor,x3_cor,y1_cor,y2_cor,y3_cor;
DudeHD 0:ac8a5576c57a 48 short low_us=1350;
DudeHD 0:ac8a5576c57a 49 short multiplier_us=3;
DudeHD 0:ac8a5576c57a 50 int rcom=0;
DudeHD 0:ac8a5576c57a 51 int arcom;
DudeHD 0:ac8a5576c57a 52
DudeHD 0:ac8a5576c57a 53 void reads();
DudeHD 0:ac8a5576c57a 54 void rounder();
DudeHD 0:ac8a5576c57a 55 int get_deg(float);
DudeHD 0:ac8a5576c57a 56 float get_min(float);
DudeHD 0:ac8a5576c57a 57
DudeHD 0:ac8a5576c57a 58 float vbat;
DudeHD 0:ac8a5576c57a 59 float bat_divider=0.703313;
DudeHD 0:ac8a5576c57a 60
DudeHD 0:ac8a5576c57a 61 char oled_str[30];
DudeHD 0:ac8a5576c57a 62
DudeHD 0:ac8a5576c57a 63 void avg_read();
DudeHD 0:ac8a5576c57a 64 void calibration();
DudeHD 0:ac8a5576c57a 65 void th_calc();
DudeHD 0:ac8a5576c57a 66
DudeHD 0:ac8a5576c57a 67 int main(){
DudeHD 0:ac8a5576c57a 68 SW1.mode(PullDown);
DudeHD 0:ac8a5576c57a 69 SW2.mode(PullDown);
DudeHD 0:ac8a5576c57a 70 SW3.mode(PullDown);
DudeHD 0:ac8a5576c57a 71 JSW1.mode(PullDown);
DudeHD 0:ac8a5576c57a 72 JSW2.mode(PullUp);
DudeHD 0:ac8a5576c57a 73 JSW3.mode(PullUp);//default 1 uvjet ako 0
DudeHD 0:ac8a5576c57a 74 TSW.mode(PullDown);
DudeHD 0:ac8a5576c57a 75 calibration();
DudeHD 0:ac8a5576c57a 76 //oled.setDisplayFlip(false,false);
DudeHD 0:ac8a5576c57a 77 //oled.setContrastControl(0xFF);
DudeHD 0:ac8a5576c57a 78 while(1){
DudeHD 0:ac8a5576c57a 79 //oled.clearDisplay();
DudeHD 0:ac8a5576c57a 80 sprintf(oled_str, "%d", TH_def);
DudeHD 0:ac8a5576c57a 81 //oled.writeString(0, 0, oled_str);
DudeHD 0:ac8a5576c57a 82 if(TSW.read()){
DudeHD 0:ac8a5576c57a 83 //reads();
DudeHD 0:ac8a5576c57a 84 //avg_read();
DudeHD 0:ac8a5576c57a 85 //rounder();
DudeHD 0:ac8a5576c57a 86 //nazvat TH,
DudeHD 0:ac8a5576c57a 87 TH =(-1)*((((a1.read()*100)+x1_cor)*5)-250);
DudeHD 0:ac8a5576c57a 88 //pc.printf("%hd",TH);
DudeHD 0:ac8a5576c57a 89 th_calc();
DudeHD 0:ac8a5576c57a 90 RO =3000-(low_us+((a3.read()*100)+y1_cor)*multiplier_us);
DudeHD 0:ac8a5576c57a 91 YA =3000-(low_us+((a2.read()*100)+x2_cor)*multiplier_us);
DudeHD 0:ac8a5576c57a 92 PI =3000-(low_us+((a4.read()*100)+y2_cor)*multiplier_us);
DudeHD 0:ac8a5576c57a 93 arcom=a5.read()*100;
DudeHD 0:ac8a5576c57a 94 rcom=0;
DudeHD 0:ac8a5576c57a 95 if(SW2.read()==1){
DudeHD 0:ac8a5576c57a 96 rcom=2;
DudeHD 0:ac8a5576c57a 97 }
DudeHD 0:ac8a5576c57a 98 if(SW3.read()==1){
DudeHD 0:ac8a5576c57a 99 hc.printf("MSG,%hd,%hd,%hd,%hd,%hd,%d,%d,%d\n",1000,1000,1000,1000,2000,0,0,0);
DudeHD 0:ac8a5576c57a 100 }
DudeHD 0:ac8a5576c57a 101 else{
DudeHD 0:ac8a5576c57a 102 hc.printf("MSG,%hd,%hd,%hd,%hd,%hd,%d,%d,%d\n",TH_def,PI,RO,YA,1000,0,0,rcom);
DudeHD 0:ac8a5576c57a 103 }
DudeHD 0:ac8a5576c57a 104 //na drugom kraju cekaj MSG
DudeHD 0:ac8a5576c57a 105 //printf("%hd,%hd,%hd,%hd,%hd,%hd\n",x1,y1,x2,y2,sw1.read(),sw2.read());
DudeHD 0:ac8a5576c57a 106 //printf("%hd,%hd,%hd,%hd\n",sw1.read(),sw2.read(),sw3.read(),tog1.read());
DudeHD 0:ac8a5576c57a 107 //vbat=(abat.read()*3.3f)/bat_divider;
DudeHD 0:ac8a5576c57a 108
DudeHD 0:ac8a5576c57a 109 //printf("%0.2f\n",vbat);
DudeHD 0:ac8a5576c57a 110 wait_ms(10);// izmjerit potrebno vrijeme da se izvrsi sve to pa stavit na temelju toga
DudeHD 0:ac8a5576c57a 111
DudeHD 0:ac8a5576c57a 112 }
DudeHD 0:ac8a5576c57a 113 else{
DudeHD 0:ac8a5576c57a 114 //mjenjanje argumentata ekran itd itd
DudeHD 0:ac8a5576c57a 115 //send disarm
DudeHD 0:ac8a5576c57a 116 //hc_send()
DudeHD 0:ac8a5576c57a 117
DudeHD 0:ac8a5576c57a 118 hc.printf("MSG,%hd,%hd,%hd,%hd,%hd,%d,%d,%d\n",1000,1500,1500,1500,2000,0,0,0);
DudeHD 0:ac8a5576c57a 119 wait_ms(50);
DudeHD 0:ac8a5576c57a 120
DudeHD 0:ac8a5576c57a 121 }
DudeHD 0:ac8a5576c57a 122 }
DudeHD 0:ac8a5576c57a 123 }
DudeHD 0:ac8a5576c57a 124 /*
DudeHD 0:ac8a5576c57a 125
DudeHD 0:ac8a5576c57a 126 void reads(){
DudeHD 0:ac8a5576c57a 127 while(avg_count<AVG){
DudeHD 0:ac8a5576c57a 128 while(gps.getc() != '$');
DudeHD 0:ac8a5576c57a 129 while(ndone){
DudeHD 0:ac8a5576c57a 130 data[i]=gps.getc();
DudeHD 0:ac8a5576c57a 131 pc.printf("%c",data[i]);
DudeHD 0:ac8a5576c57a 132 if(data[i]=='\r'){
DudeHD 0:ac8a5576c57a 133 data[i]='\0';
DudeHD 0:ac8a5576c57a 134 ndone=0;
DudeHD 0:ac8a5576c57a 135 }
DudeHD 0:ac8a5576c57a 136 i++;
DudeHD 0:ac8a5576c57a 137 }
DudeHD 0:ac8a5576c57a 138 //GPGLL,4540.45939,N,01539.27211,E,164202.00,A,A*64
DudeHD 0:ac8a5576c57a 139 if(sscanf(data,"GPGLL,%f,%c,%f,%c,%f,%c,%f",&LAT, &NS, &LON, &EW, &TIME, &status, &check) >= 1) {
DudeHD 0:ac8a5576c57a 140 pc.printf("%s\n",data);
DudeHD 0:ac8a5576c57a 141 lat_arr[avg_count]=LAT;
DudeHD 0:ac8a5576c57a 142 lon_arr[avg_count]=LON;
DudeHD 0:ac8a5576c57a 143 avg_count++;
DudeHD 0:ac8a5576c57a 144
DudeHD 0:ac8a5576c57a 145 time = time + 20000.00f;
DudeHD 0:ac8a5576c57a 146 hour = int(time) / 10000;
DudeHD 0:ac8a5576c57a 147 minute = (int(time) % 10000) / 100;
DudeHD 0:ac8a5576c57a 148 seconed = int(time) % 100;
DudeHD 0:ac8a5576c57a 149
DudeHD 0:ac8a5576c57a 150
DudeHD 0:ac8a5576c57a 151 }
DudeHD 0:ac8a5576c57a 152 memset(data, 0, i);
DudeHD 0:ac8a5576c57a 153 ndone=1;
DudeHD 0:ac8a5576c57a 154 i=0;
DudeHD 0:ac8a5576c57a 155 }
DudeHD 0:ac8a5576c57a 156 }
DudeHD 0:ac8a5576c57a 157
DudeHD 0:ac8a5576c57a 158 */
DudeHD 0:ac8a5576c57a 159 void rounder(){
DudeHD 0:ac8a5576c57a 160 latdeg=get_deg(LAT);
DudeHD 0:ac8a5576c57a 161 londeg=get_deg(LON);
DudeHD 0:ac8a5576c57a 162 latmin=get_min(LAT);
DudeHD 0:ac8a5576c57a 163 lonmin=get_min(LON);
DudeHD 0:ac8a5576c57a 164 pc.printf("%d %.3f, %d %.3f\n",latdeg,latmin,londeg,lonmin);
DudeHD 0:ac8a5576c57a 165 }
DudeHD 0:ac8a5576c57a 166
DudeHD 0:ac8a5576c57a 167 int get_deg(float fnum){
DudeHD 0:ac8a5576c57a 168 return floor(fnum/100.0f);
DudeHD 0:ac8a5576c57a 169 }
DudeHD 0:ac8a5576c57a 170
DudeHD 0:ac8a5576c57a 171 float get_min(float fnum){
DudeHD 0:ac8a5576c57a 172 unsigned int tempmini=(int(fnum*1000))%100000;
DudeHD 0:ac8a5576c57a 173 return tempmini/1000.0f;
DudeHD 0:ac8a5576c57a 174 }
DudeHD 0:ac8a5576c57a 175
DudeHD 0:ac8a5576c57a 176 void avg_read(){
DudeHD 0:ac8a5576c57a 177 LAT=0;
DudeHD 0:ac8a5576c57a 178 LON=0;
DudeHD 0:ac8a5576c57a 179 for(int k=0;k<AVG;k++){
DudeHD 0:ac8a5576c57a 180 LAT+=lat_arr[k];
DudeHD 0:ac8a5576c57a 181 LON+=lon_arr[k];
DudeHD 0:ac8a5576c57a 182 }
DudeHD 0:ac8a5576c57a 183 LAT=LAT/AVG;
DudeHD 0:ac8a5576c57a 184 LON=LON/AVG;
DudeHD 0:ac8a5576c57a 185 }
DudeHD 0:ac8a5576c57a 186
DudeHD 0:ac8a5576c57a 187 void calibration(){
DudeHD 0:ac8a5576c57a 188 x1_ar=0;
DudeHD 0:ac8a5576c57a 189 x2_ar=0;
DudeHD 0:ac8a5576c57a 190 x3_ar=0;
DudeHD 0:ac8a5576c57a 191 y1_ar=0;
DudeHD 0:ac8a5576c57a 192 y2_ar=0;
DudeHD 0:ac8a5576c57a 193 y3_ar=0;
DudeHD 0:ac8a5576c57a 194 for(int a=0;a<cal_num;a++){
DudeHD 0:ac8a5576c57a 195 x1_ar+=a1.read();
DudeHD 0:ac8a5576c57a 196 x2_ar+=a2.read();
DudeHD 0:ac8a5576c57a 197 x3_ar+=a5.read();
DudeHD 0:ac8a5576c57a 198 y1_ar+=a3.read();
DudeHD 0:ac8a5576c57a 199 y2_ar+=a4.read();
DudeHD 0:ac8a5576c57a 200 y3_ar+=a6.read();
DudeHD 0:ac8a5576c57a 201 }
DudeHD 0:ac8a5576c57a 202 x1_cor=mid_point-((x1_ar/cal_num)*100);
DudeHD 0:ac8a5576c57a 203 x2_cor=mid_point-((x2_ar/cal_num)*100);
DudeHD 0:ac8a5576c57a 204 x3_cor=mid_point-((x3_ar/cal_num)*100);
DudeHD 0:ac8a5576c57a 205 y1_cor=mid_point-((y1_ar/cal_num)*100);
DudeHD 0:ac8a5576c57a 206 y2_cor=mid_point-((y2_ar/cal_num)*100);
DudeHD 0:ac8a5576c57a 207 y3_cor=mid_point-((y3_ar/cal_num)*100);
DudeHD 0:ac8a5576c57a 208 pc.printf("%hd,%hd,%hd,%hd,%hd,%hd\n",x1_cor,y1_cor,x2_cor,y2_cor,x3_cor,y3_cor);
DudeHD 0:ac8a5576c57a 209 }
DudeHD 0:ac8a5576c57a 210
DudeHD 0:ac8a5576c57a 211 void th_calc(){
DudeHD 0:ac8a5576c57a 212 if(abs(TH)<10){
DudeHD 0:ac8a5576c57a 213 TH_def+=0;
DudeHD 0:ac8a5576c57a 214 }
DudeHD 0:ac8a5576c57a 215 else{
DudeHD 0:ac8a5576c57a 216 if(TH>0){
DudeHD 0:ac8a5576c57a 217 TH_def+=10;
DudeHD 0:ac8a5576c57a 218 }
DudeHD 0:ac8a5576c57a 219 else{
DudeHD 0:ac8a5576c57a 220 TH_def-=10;
DudeHD 0:ac8a5576c57a 221 }
DudeHD 0:ac8a5576c57a 222 }
DudeHD 0:ac8a5576c57a 223 if(TH_def<1000)TH_def=1000;
DudeHD 0:ac8a5576c57a 224 if(JSW1.read()==1)TH_def=1000;
DudeHD 0:ac8a5576c57a 225 }