US 2016 Projektni zadatak: Analogni sat Radili: Kemal Halilbegović, Benjamin Hrustemović

Dependencies:   DS1307 N5110 debug mbed

Committer:
2016US_KemalHalilbeg
Date:
Mon Jun 06 16:21:43 2016 +0000
Revision:
0:5e307f0c3230
US 2015/2016; Projekat Analogni sat; Radili:; Kemal Halilbegovi?; Benjamin Hrustemovi?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
2016US_KemalHalilbeg 0:5e307f0c3230 1 #include "mbed.h"
2016US_KemalHalilbeg 0:5e307f0c3230 2 #include "N5110.h"
2016US_KemalHalilbeg 0:5e307f0c3230 3 #include "ds1307.h"//iskreno se nadam da je ovaj
2016US_KemalHalilbeg 0:5e307f0c3230 4 #include <stdio.h>
2016US_KemalHalilbeg 0:5e307f0c3230 5 #define dp23 P0_0
2016US_KemalHalilbeg 0:5e307f0c3230 6 #define PI 3.14
2016US_KemalHalilbeg 0:5e307f0c3230 7 //N5110 lcd(VCC,SCE,RST,DC,MOSI,SCLK,LED));
2016US_KemalHalilbeg 0:5e307f0c3230 8 N5110 lcd(dp4,dp24,dp23,dp28,dp2,dp6,dp18);
2016US_KemalHalilbeg 0:5e307f0c3230 9 DS1307 sat(dp5,dp27);
2016US_KemalHalilbeg 0:5e307f0c3230 10 BusIn ulazi(dp9,dp10,dp11,dp13);
2016US_KemalHalilbeg 0:5e307f0c3230 11 BusOut izlazi(dp25,dp26,dp17,dp15);
2016US_KemalHalilbeg 0:5e307f0c3230 12
2016US_KemalHalilbeg 0:5e307f0c3230 13 DigitalOut enable(dp14);
2016US_KemalHalilbeg 0:5e307f0c3230 14
2016US_KemalHalilbeg 0:5e307f0c3230 15 int h(0),m(0),s(0);
2016US_KemalHalilbeg 0:5e307f0c3230 16 int dan, mjesec, godina,usedmici;
2016US_KemalHalilbeg 0:5e307f0c3230 17 char buffer[4];
2016US_KemalHalilbeg 0:5e307f0c3230 18 char taster;
2016US_KemalHalilbeg 0:5e307f0c3230 19 Ticker tastatura;
2016US_KemalHalilbeg 0:5e307f0c3230 20
2016US_KemalHalilbeg 0:5e307f0c3230 21 //broj dana u mjesecu
2016US_KemalHalilbeg 0:5e307f0c3230 22 int brojdana[12]= {31,29,31,30,31,30,31,31,30,31,30,31};
2016US_KemalHalilbeg 0:5e307f0c3230 23 //provjerava prijestupne
2016US_KemalHalilbeg 0:5e307f0c3230 24 bool DaLiJePrijestupna(int god)
2016US_KemalHalilbeg 0:5e307f0c3230 25 {
2016US_KemalHalilbeg 0:5e307f0c3230 26 if (god%4==0) {
2016US_KemalHalilbeg 0:5e307f0c3230 27 if(god%100) {
2016US_KemalHalilbeg 0:5e307f0c3230 28 if(god%400) return true;
2016US_KemalHalilbeg 0:5e307f0c3230 29 return false;
2016US_KemalHalilbeg 0:5e307f0c3230 30 }
2016US_KemalHalilbeg 0:5e307f0c3230 31 return true;
2016US_KemalHalilbeg 0:5e307f0c3230 32 }
2016US_KemalHalilbeg 0:5e307f0c3230 33 return false;
2016US_KemalHalilbeg 0:5e307f0c3230 34 }
2016US_KemalHalilbeg 0:5e307f0c3230 35 //-----------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 36 //varijable za alarm
2016US_KemalHalilbeg 0:5e307f0c3230 37 int alarmH(0),alarmM(0);
2016US_KemalHalilbeg 0:5e307f0c3230 38 bool alarmUkljucen(false);
2016US_KemalHalilbeg 0:5e307f0c3230 39 Timer t;
2016US_KemalHalilbeg 0:5e307f0c3230 40 //------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 41
2016US_KemalHalilbeg 0:5e307f0c3230 42 int duzinaK1(5),duzinaK2(12),duzinaK3(15);//duzina kazaljki
2016US_KemalHalilbeg 0:5e307f0c3230 43
2016US_KemalHalilbeg 0:5e307f0c3230 44 //--------------------------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 45 //TACKE NA SATU (1-12) (pokusavam izbjeci staljno racunanje ovih
2016US_KemalHalilbeg 0:5e307f0c3230 46 //varijabli, pa cu ih jednostavno ostaviti ovdje kao globalne)
2016US_KemalHalilbeg 0:5e307f0c3230 47 float x[12]= {(42+18*cos(PI/2)),(42+18*cos(PI/3)),(42+18*cos(PI/6)),(42+18),(42+18*cos(11*PI/6)),
2016US_KemalHalilbeg 0:5e307f0c3230 48 (42+18*cos(5*PI/3)),(42+18*cos(3*PI/2)),(42+18*cos(4*PI/3)),(42+18*cos(7*PI/6)),(42+18*cos(PI)),(42+18*cos(5*PI/6)),(42+18*cos(2*PI/3))
2016US_KemalHalilbeg 0:5e307f0c3230 49 };
2016US_KemalHalilbeg 0:5e307f0c3230 50 float y[12]= {(24+18*sin(PI/2)),(24+18*sin(PI/3)),(24+18*sin(PI/6)),(24),(24+18*sin(11*PI/6)),
2016US_KemalHalilbeg 0:5e307f0c3230 51 (24+18*sin(5*PI/3)),(24+18*sin(3*PI/2)),(24+18*sin(4*PI/3)),(24+18*sin(7*PI/6)),(24+18*sin(PI)),(24+18*sin(5*PI/6)),(24+18*sin(2*PI/3))
2016US_KemalHalilbeg 0:5e307f0c3230 52 };
2016US_KemalHalilbeg 0:5e307f0c3230 53
2016US_KemalHalilbeg 0:5e307f0c3230 54 //--------------------------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 55 //FUNKCIJA ZA KAZALJKE
2016US_KemalHalilbeg 0:5e307f0c3230 56 void Crtajkazaljke ()
2016US_KemalHalilbeg 0:5e307f0c3230 57 {
2016US_KemalHalilbeg 0:5e307f0c3230 58 //Kazaljka za sate
2016US_KemalHalilbeg 0:5e307f0c3230 59 float ugao1= (h%12 * 360/12 + m*30/60-90)*PI/180;
2016US_KemalHalilbeg 0:5e307f0c3230 60 float xK1=42+duzinaK1*cos(ugao1);
2016US_KemalHalilbeg 0:5e307f0c3230 61 float yK1=24+duzinaK1*sin(ugao1);
2016US_KemalHalilbeg 0:5e307f0c3230 62 //Kazaljka za minute
2016US_KemalHalilbeg 0:5e307f0c3230 63 float ugao2= (m%60*360/60-90)*PI/180;
2016US_KemalHalilbeg 0:5e307f0c3230 64 float xK2=42+duzinaK2*cos(ugao2);
2016US_KemalHalilbeg 0:5e307f0c3230 65 float yK2=24+duzinaK2*sin(ugao2);
2016US_KemalHalilbeg 0:5e307f0c3230 66 //Kazaljka za sekunde
2016US_KemalHalilbeg 0:5e307f0c3230 67 float ugao3= (s%60*360/60-90)*PI/180;
2016US_KemalHalilbeg 0:5e307f0c3230 68 float xK3=42+duzinaK3*cos(ugao3);
2016US_KemalHalilbeg 0:5e307f0c3230 69 float yK3=24+duzinaK3*sin(ugao3);
2016US_KemalHalilbeg 0:5e307f0c3230 70
2016US_KemalHalilbeg 0:5e307f0c3230 71 //iscrtavanje kazaljki
2016US_KemalHalilbeg 0:5e307f0c3230 72 lcd.drawLine(42,24,xK1,yK1,1);
2016US_KemalHalilbeg 0:5e307f0c3230 73 lcd.drawLine(42,24,xK2,yK2,1);
2016US_KemalHalilbeg 0:5e307f0c3230 74 lcd.drawLine(42,24,xK3,yK3,1);
2016US_KemalHalilbeg 0:5e307f0c3230 75
2016US_KemalHalilbeg 0:5e307f0c3230 76 }
2016US_KemalHalilbeg 0:5e307f0c3230 77 //-----------------------------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 78 //FUNKCIJA ZA CRTANJE SATA
2016US_KemalHalilbeg 0:5e307f0c3230 79 void NacrtajSat()
2016US_KemalHalilbeg 0:5e307f0c3230 80 {
2016US_KemalHalilbeg 0:5e307f0c3230 81 //krug
2016US_KemalHalilbeg 0:5e307f0c3230 82 lcd.clear();
2016US_KemalHalilbeg 0:5e307f0c3230 83 lcd.drawCircle(42,24,20,0);
2016US_KemalHalilbeg 0:5e307f0c3230 84 //tacke koje oznacavaju sate, izbjegavam for petlju zbog efikasnosti
2016US_KemalHalilbeg 0:5e307f0c3230 85 lcd.setPixel(x[0],y[0]);
2016US_KemalHalilbeg 0:5e307f0c3230 86 lcd.setPixel(x[1],y[1]);
2016US_KemalHalilbeg 0:5e307f0c3230 87 lcd.setPixel(x[2],y[2]);
2016US_KemalHalilbeg 0:5e307f0c3230 88 lcd.setPixel(x[3],y[3]);
2016US_KemalHalilbeg 0:5e307f0c3230 89 lcd.setPixel(x[4],y[4]);
2016US_KemalHalilbeg 0:5e307f0c3230 90 lcd.setPixel(x[5],y[5]);
2016US_KemalHalilbeg 0:5e307f0c3230 91 lcd.setPixel(x[6],y[6]);
2016US_KemalHalilbeg 0:5e307f0c3230 92 lcd.setPixel(x[7],y[7]);
2016US_KemalHalilbeg 0:5e307f0c3230 93 lcd.setPixel(x[8],y[8]);
2016US_KemalHalilbeg 0:5e307f0c3230 94 lcd.setPixel(x[9],y[9]);
2016US_KemalHalilbeg 0:5e307f0c3230 95 lcd.setPixel(x[10],y[10]);
2016US_KemalHalilbeg 0:5e307f0c3230 96 lcd.setPixel(x[11],y[11]);
2016US_KemalHalilbeg 0:5e307f0c3230 97 sprintf(buffer,"%d",dan);//treba namjestiti da se u ugao upise datum i alarm isto
2016US_KemalHalilbeg 0:5e307f0c3230 98 lcd.printString(buffer,71,3);
2016US_KemalHalilbeg 0:5e307f0c3230 99 sprintf(buffer,"%d",mjesec);
2016US_KemalHalilbeg 0:5e307f0c3230 100 lcd.printString(buffer,71,4);
2016US_KemalHalilbeg 0:5e307f0c3230 101 sprintf(buffer,"%d",godina);
2016US_KemalHalilbeg 0:5e307f0c3230 102 lcd.printString(buffer,71,5);
2016US_KemalHalilbeg 0:5e307f0c3230 103
2016US_KemalHalilbeg 0:5e307f0c3230 104 if(alarmUkljucen)
2016US_KemalHalilbeg 0:5e307f0c3230 105 {
2016US_KemalHalilbeg 0:5e307f0c3230 106 sprintf(buffer,"%d ",alarmH);
2016US_KemalHalilbeg 0:5e307f0c3230 107 lcd.printString(buffer,0,0);
2016US_KemalHalilbeg 0:5e307f0c3230 108 sprintf(buffer,"%d ",alarmM);
2016US_KemalHalilbeg 0:5e307f0c3230 109 lcd.printString(buffer,0,1);
2016US_KemalHalilbeg 0:5e307f0c3230 110 }
2016US_KemalHalilbeg 0:5e307f0c3230 111 Crtajkazaljke();
2016US_KemalHalilbeg 0:5e307f0c3230 112 lcd.refresh();
2016US_KemalHalilbeg 0:5e307f0c3230 113
2016US_KemalHalilbeg 0:5e307f0c3230 114 }
2016US_KemalHalilbeg 0:5e307f0c3230 115 //------------------------------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 116 void Tastatura()
2016US_KemalHalilbeg 0:5e307f0c3230 117 {
2016US_KemalHalilbeg 0:5e307f0c3230 118 izlazi[0] = 0;
2016US_KemalHalilbeg 0:5e307f0c3230 119 izlazi[1]= 0;
2016US_KemalHalilbeg 0:5e307f0c3230 120 izlazi[2]= 0;
2016US_KemalHalilbeg 0:5e307f0c3230 121 izlazi[3]= 0;
2016US_KemalHalilbeg 0:5e307f0c3230 122
2016US_KemalHalilbeg 0:5e307f0c3230 123 izlazi[0] = 1;
2016US_KemalHalilbeg 0:5e307f0c3230 124 if(ulazi[0] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 125 taster= '1';
2016US_KemalHalilbeg 0:5e307f0c3230 126 return;
2016US_KemalHalilbeg 0:5e307f0c3230 127 } else if(ulazi[1] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 128 taster= '2';
2016US_KemalHalilbeg 0:5e307f0c3230 129 return;
2016US_KemalHalilbeg 0:5e307f0c3230 130 } else if(ulazi[2] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 131 taster= '3';
2016US_KemalHalilbeg 0:5e307f0c3230 132 return;
2016US_KemalHalilbeg 0:5e307f0c3230 133 } else if(ulazi[3] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 134 taster= 'A';
2016US_KemalHalilbeg 0:5e307f0c3230 135 return;
2016US_KemalHalilbeg 0:5e307f0c3230 136 }
2016US_KemalHalilbeg 0:5e307f0c3230 137 izlazi[0] = 0;
2016US_KemalHalilbeg 0:5e307f0c3230 138
2016US_KemalHalilbeg 0:5e307f0c3230 139 izlazi[1] = 1;
2016US_KemalHalilbeg 0:5e307f0c3230 140 if(ulazi[0] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 141 taster= '4';
2016US_KemalHalilbeg 0:5e307f0c3230 142 return;
2016US_KemalHalilbeg 0:5e307f0c3230 143 } else if(ulazi[1] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 144 taster= '5';
2016US_KemalHalilbeg 0:5e307f0c3230 145 return;
2016US_KemalHalilbeg 0:5e307f0c3230 146 } else if(ulazi[2] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 147 taster= '6';
2016US_KemalHalilbeg 0:5e307f0c3230 148 return;
2016US_KemalHalilbeg 0:5e307f0c3230 149 } else if(ulazi[3] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 150 taster= 'B';
2016US_KemalHalilbeg 0:5e307f0c3230 151 return;
2016US_KemalHalilbeg 0:5e307f0c3230 152 }
2016US_KemalHalilbeg 0:5e307f0c3230 153 izlazi[1] = 0;
2016US_KemalHalilbeg 0:5e307f0c3230 154
2016US_KemalHalilbeg 0:5e307f0c3230 155 izlazi[2] = 1;
2016US_KemalHalilbeg 0:5e307f0c3230 156 if(ulazi[0] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 157 taster= '7';
2016US_KemalHalilbeg 0:5e307f0c3230 158 return;
2016US_KemalHalilbeg 0:5e307f0c3230 159 } else if(ulazi[1] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 160 taster= '8';
2016US_KemalHalilbeg 0:5e307f0c3230 161 return;
2016US_KemalHalilbeg 0:5e307f0c3230 162 } else if(ulazi[2] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 163 taster= '9';
2016US_KemalHalilbeg 0:5e307f0c3230 164 return;
2016US_KemalHalilbeg 0:5e307f0c3230 165 } else if(ulazi[3] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 166 taster= 'C';
2016US_KemalHalilbeg 0:5e307f0c3230 167 return;
2016US_KemalHalilbeg 0:5e307f0c3230 168 }
2016US_KemalHalilbeg 0:5e307f0c3230 169 izlazi[2] = 1;
2016US_KemalHalilbeg 0:5e307f0c3230 170
2016US_KemalHalilbeg 0:5e307f0c3230 171 izlazi[3] = 1;
2016US_KemalHalilbeg 0:5e307f0c3230 172 if(ulazi[0] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 173 taster='*';
2016US_KemalHalilbeg 0:5e307f0c3230 174 return;
2016US_KemalHalilbeg 0:5e307f0c3230 175 } else if(ulazi[1] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 176 taster= '0';
2016US_KemalHalilbeg 0:5e307f0c3230 177 return;
2016US_KemalHalilbeg 0:5e307f0c3230 178 } else if(ulazi[2] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 179 taster= '#';
2016US_KemalHalilbeg 0:5e307f0c3230 180 return;
2016US_KemalHalilbeg 0:5e307f0c3230 181 } else if(ulazi[3] == 1) {
2016US_KemalHalilbeg 0:5e307f0c3230 182 taster='D';
2016US_KemalHalilbeg 0:5e307f0c3230 183 return;
2016US_KemalHalilbeg 0:5e307f0c3230 184 }
2016US_KemalHalilbeg 0:5e307f0c3230 185 izlazi[3] = 1;
2016US_KemalHalilbeg 0:5e307f0c3230 186
2016US_KemalHalilbeg 0:5e307f0c3230 187 taster= ' ';
2016US_KemalHalilbeg 0:5e307f0c3230 188 return;
2016US_KemalHalilbeg 0:5e307f0c3230 189 }
2016US_KemalHalilbeg 0:5e307f0c3230 190 //---------------------------------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 191 void AlarmPodesavanje()
2016US_KemalHalilbeg 0:5e307f0c3230 192 {
2016US_KemalHalilbeg 0:5e307f0c3230 193 int alarmUnosBrojac(0),alarmH1(0),alarmH2(0),alarmM1(0),alarmM2(0);
2016US_KemalHalilbeg 0:5e307f0c3230 194 char alarmstring [10];
2016US_KemalHalilbeg 0:5e307f0c3230 195 alarmH1=alarmH/10;
2016US_KemalHalilbeg 0:5e307f0c3230 196 alarmH%=10;
2016US_KemalHalilbeg 0:5e307f0c3230 197 alarmH2=alarmH;
2016US_KemalHalilbeg 0:5e307f0c3230 198 alarmM1=alarmM/10;
2016US_KemalHalilbeg 0:5e307f0c3230 199 alarmM%=10;
2016US_KemalHalilbeg 0:5e307f0c3230 200 alarmM2=alarmM;
2016US_KemalHalilbeg 0:5e307f0c3230 201 while (1) {
2016US_KemalHalilbeg 0:5e307f0c3230 202 lcd.clear();
2016US_KemalHalilbeg 0:5e307f0c3230 203 lcd.printString("Set alarm:",0,0);
2016US_KemalHalilbeg 0:5e307f0c3230 204 sprintf(alarmstring,"%d%d:%d%d",alarmH1,alarmH2,alarmM1,alarmM2);
2016US_KemalHalilbeg 0:5e307f0c3230 205 lcd.printString(alarmstring,0,1);
2016US_KemalHalilbeg 0:5e307f0c3230 206 lcd.refresh();
2016US_KemalHalilbeg 0:5e307f0c3230 207 if(taster=='C') {
2016US_KemalHalilbeg 0:5e307f0c3230 208 lcd.printString("Alarm is off",0,2);
2016US_KemalHalilbeg 0:5e307f0c3230 209 wait(0.3);
2016US_KemalHalilbeg 0:5e307f0c3230 210 alarmH1=0;
2016US_KemalHalilbeg 0:5e307f0c3230 211 alarmH2=0;
2016US_KemalHalilbeg 0:5e307f0c3230 212 alarmM1=0;
2016US_KemalHalilbeg 0:5e307f0c3230 213 alarmM2=0;
2016US_KemalHalilbeg 0:5e307f0c3230 214 alarmUnosBrojac=0;
2016US_KemalHalilbeg 0:5e307f0c3230 215 alarmUkljucen=false;
2016US_KemalHalilbeg 0:5e307f0c3230 216 } else if(taster=='D') {
2016US_KemalHalilbeg 0:5e307f0c3230 217 alarmH=10*alarmH1+alarmH2;
2016US_KemalHalilbeg 0:5e307f0c3230 218 alarmM=10*alarmM1+alarmM2;
2016US_KemalHalilbeg 0:5e307f0c3230 219 alarmUkljucen=true;
2016US_KemalHalilbeg 0:5e307f0c3230 220 return;
2016US_KemalHalilbeg 0:5e307f0c3230 221 } else if(taster>=0+'0' && taster<=9+'0') {
2016US_KemalHalilbeg 0:5e307f0c3230 222 switch (alarmUnosBrojac) {
2016US_KemalHalilbeg 0:5e307f0c3230 223 case 0:
2016US_KemalHalilbeg 0:5e307f0c3230 224 if(taster<=2+'0') {
2016US_KemalHalilbeg 0:5e307f0c3230 225 alarmH1=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 226 alarmUnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 227 }
2016US_KemalHalilbeg 0:5e307f0c3230 228 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 229 break;
2016US_KemalHalilbeg 0:5e307f0c3230 230 case 1:
2016US_KemalHalilbeg 0:5e307f0c3230 231 if((alarmH1==2 && taster<=3+'0' )|| (alarmH1<2)) {
2016US_KemalHalilbeg 0:5e307f0c3230 232 alarmH2=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 233 alarmUnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 234 }
2016US_KemalHalilbeg 0:5e307f0c3230 235 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 236 break;
2016US_KemalHalilbeg 0:5e307f0c3230 237 case 2:
2016US_KemalHalilbeg 0:5e307f0c3230 238 if(taster<=5+'0') {
2016US_KemalHalilbeg 0:5e307f0c3230 239 alarmM1=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 240 alarmUnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 241 }
2016US_KemalHalilbeg 0:5e307f0c3230 242 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 243 break;
2016US_KemalHalilbeg 0:5e307f0c3230 244 case 3:
2016US_KemalHalilbeg 0:5e307f0c3230 245 alarmM2=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 246 alarmUnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 247 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 248 break;
2016US_KemalHalilbeg 0:5e307f0c3230 249 }
2016US_KemalHalilbeg 0:5e307f0c3230 250
2016US_KemalHalilbeg 0:5e307f0c3230 251 }
2016US_KemalHalilbeg 0:5e307f0c3230 252
2016US_KemalHalilbeg 0:5e307f0c3230 253
2016US_KemalHalilbeg 0:5e307f0c3230 254 }
2016US_KemalHalilbeg 0:5e307f0c3230 255
2016US_KemalHalilbeg 0:5e307f0c3230 256
2016US_KemalHalilbeg 0:5e307f0c3230 257 }
2016US_KemalHalilbeg 0:5e307f0c3230 258 //-----------------------------------------------------------------------------------------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 259 void PostavljanjeVremenaIDatuma()
2016US_KemalHalilbeg 0:5e307f0c3230 260 {
2016US_KemalHalilbeg 0:5e307f0c3230 261 int UnosBrojac(0),H1(0),H2(0),M1(0),M2(0),D1(0),D2(0),MO1(0),MO2(0),Y1(0),Y2(0);
2016US_KemalHalilbeg 0:5e307f0c3230 262 char buffstring [22];
2016US_KemalHalilbeg 0:5e307f0c3230 263 H1=h/10;
2016US_KemalHalilbeg 0:5e307f0c3230 264 H2=h%10;
2016US_KemalHalilbeg 0:5e307f0c3230 265 M1=m/10;
2016US_KemalHalilbeg 0:5e307f0c3230 266 M2=m%10;
2016US_KemalHalilbeg 0:5e307f0c3230 267 D1=dan/10;
2016US_KemalHalilbeg 0:5e307f0c3230 268 D2=dan%10;
2016US_KemalHalilbeg 0:5e307f0c3230 269 MO1=mjesec/10;
2016US_KemalHalilbeg 0:5e307f0c3230 270 MO2=mjesec%10;
2016US_KemalHalilbeg 0:5e307f0c3230 271 Y1=godina/10;
2016US_KemalHalilbeg 0:5e307f0c3230 272 Y2=godina%10;
2016US_KemalHalilbeg 0:5e307f0c3230 273 usedmici=1;
2016US_KemalHalilbeg 0:5e307f0c3230 274 while (1) {
2016US_KemalHalilbeg 0:5e307f0c3230 275 lcd.printString("Set date and time:",0,0);
2016US_KemalHalilbeg 0:5e307f0c3230 276 sprintf(buffstring,"%d%d:%d%d",H1,H2,M1,M2);
2016US_KemalHalilbeg 0:5e307f0c3230 277 lcd.printString(buffstring,0,1);
2016US_KemalHalilbeg 0:5e307f0c3230 278 sprintf(buffstring,"%d%d/%d%d/%d%d",D1,D2,MO1,MO2,Y1,Y2);
2016US_KemalHalilbeg 0:5e307f0c3230 279 lcd.printString(buffstring,0,2);
2016US_KemalHalilbeg 0:5e307f0c3230 280 lcd.refresh();
2016US_KemalHalilbeg 0:5e307f0c3230 281 if(taster=='C') {
2016US_KemalHalilbeg 0:5e307f0c3230 282 H1=h/10;
2016US_KemalHalilbeg 0:5e307f0c3230 283 H2=h%10;
2016US_KemalHalilbeg 0:5e307f0c3230 284 M1=m/10;
2016US_KemalHalilbeg 0:5e307f0c3230 285 M2=m%10;
2016US_KemalHalilbeg 0:5e307f0c3230 286 D1=dan/10;
2016US_KemalHalilbeg 0:5e307f0c3230 287 D2=dan%10;
2016US_KemalHalilbeg 0:5e307f0c3230 288 MO1=mjesec/10;
2016US_KemalHalilbeg 0:5e307f0c3230 289 MO2=mjesec%10;
2016US_KemalHalilbeg 0:5e307f0c3230 290 Y1=godina/10;
2016US_KemalHalilbeg 0:5e307f0c3230 291 Y2=godina%10;
2016US_KemalHalilbeg 0:5e307f0c3230 292 UnosBrojac=0;
2016US_KemalHalilbeg 0:5e307f0c3230 293 } else if(taster=='D') {
2016US_KemalHalilbeg 0:5e307f0c3230 294
2016US_KemalHalilbeg 0:5e307f0c3230 295 sat.settime(s, M1*10+M2, H1*10+H2, usedmici, D1*10+D2,M1*10+M2,Y1*10+Y2);
2016US_KemalHalilbeg 0:5e307f0c3230 296 return;
2016US_KemalHalilbeg 0:5e307f0c3230 297 } else if(taster-'0'>=0 && taster-'0'<=9) {
2016US_KemalHalilbeg 0:5e307f0c3230 298 switch (UnosBrojac) {
2016US_KemalHalilbeg 0:5e307f0c3230 299 case 0:
2016US_KemalHalilbeg 0:5e307f0c3230 300 if(taster<=2+'0') {
2016US_KemalHalilbeg 0:5e307f0c3230 301 H1=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 302 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 303 }
2016US_KemalHalilbeg 0:5e307f0c3230 304 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 305 break;
2016US_KemalHalilbeg 0:5e307f0c3230 306 case 1:
2016US_KemalHalilbeg 0:5e307f0c3230 307 if((H1==2 && taster<=3+'0' )|| (H1<2)) {
2016US_KemalHalilbeg 0:5e307f0c3230 308 H2=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 309 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 310 }
2016US_KemalHalilbeg 0:5e307f0c3230 311 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 312 break;
2016US_KemalHalilbeg 0:5e307f0c3230 313 case 2:
2016US_KemalHalilbeg 0:5e307f0c3230 314 if(taster<=5+'0') {
2016US_KemalHalilbeg 0:5e307f0c3230 315 M1=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 316 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 317 }
2016US_KemalHalilbeg 0:5e307f0c3230 318 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 319 break;
2016US_KemalHalilbeg 0:5e307f0c3230 320 case 3:
2016US_KemalHalilbeg 0:5e307f0c3230 321 M2=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 322 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 323 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 324 break;
2016US_KemalHalilbeg 0:5e307f0c3230 325 case 4:
2016US_KemalHalilbeg 0:5e307f0c3230 326 if(taster<=3+'0') {
2016US_KemalHalilbeg 0:5e307f0c3230 327 D1=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 328 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 329 }
2016US_KemalHalilbeg 0:5e307f0c3230 330 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 331 break;
2016US_KemalHalilbeg 0:5e307f0c3230 332 case 5:
2016US_KemalHalilbeg 0:5e307f0c3230 333 if((D1==3 && taster<=1+'0' )|| (D1<3)) {
2016US_KemalHalilbeg 0:5e307f0c3230 334 D2=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 335 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 336 }
2016US_KemalHalilbeg 0:5e307f0c3230 337 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 338 break;
2016US_KemalHalilbeg 0:5e307f0c3230 339 case 6:
2016US_KemalHalilbeg 0:5e307f0c3230 340 if(taster<=1+'0') {
2016US_KemalHalilbeg 0:5e307f0c3230 341 MO1=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 342 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 343 }
2016US_KemalHalilbeg 0:5e307f0c3230 344 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 345 break;
2016US_KemalHalilbeg 0:5e307f0c3230 346 case 7:
2016US_KemalHalilbeg 0:5e307f0c3230 347 if((MO1==1 && taster<=2+'0' )|| (MO1<1)) {
2016US_KemalHalilbeg 0:5e307f0c3230 348 if(10*D1+D2<=brojdana[10*MO1+taster-'0']) {
2016US_KemalHalilbeg 0:5e307f0c3230 349 MO2=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 350 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 351 } else {
2016US_KemalHalilbeg 0:5e307f0c3230 352 lcd.printString("Bad date",0,3);
2016US_KemalHalilbeg 0:5e307f0c3230 353 wait(0.3);
2016US_KemalHalilbeg 0:5e307f0c3230 354 D1=dan/10;
2016US_KemalHalilbeg 0:5e307f0c3230 355 D2=dan%10;
2016US_KemalHalilbeg 0:5e307f0c3230 356 MO1=mjesec/10;
2016US_KemalHalilbeg 0:5e307f0c3230 357 UnosBrojac=4;
2016US_KemalHalilbeg 0:5e307f0c3230 358 }
2016US_KemalHalilbeg 0:5e307f0c3230 359 }
2016US_KemalHalilbeg 0:5e307f0c3230 360 wait (0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 361 break;
2016US_KemalHalilbeg 0:5e307f0c3230 362 case 8:
2016US_KemalHalilbeg 0:5e307f0c3230 363 Y1=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 364 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 365 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 366 break;
2016US_KemalHalilbeg 0:5e307f0c3230 367 case 9:
2016US_KemalHalilbeg 0:5e307f0c3230 368 Y2=taster-'0';
2016US_KemalHalilbeg 0:5e307f0c3230 369 UnosBrojac++;
2016US_KemalHalilbeg 0:5e307f0c3230 370 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 371 break;
2016US_KemalHalilbeg 0:5e307f0c3230 372
2016US_KemalHalilbeg 0:5e307f0c3230 373
2016US_KemalHalilbeg 0:5e307f0c3230 374 }
2016US_KemalHalilbeg 0:5e307f0c3230 375
2016US_KemalHalilbeg 0:5e307f0c3230 376 }
2016US_KemalHalilbeg 0:5e307f0c3230 377
2016US_KemalHalilbeg 0:5e307f0c3230 378
2016US_KemalHalilbeg 0:5e307f0c3230 379 }
2016US_KemalHalilbeg 0:5e307f0c3230 380
2016US_KemalHalilbeg 0:5e307f0c3230 381 }
2016US_KemalHalilbeg 0:5e307f0c3230 382 //----------------------------------------------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 383 void Alarm()
2016US_KemalHalilbeg 0:5e307f0c3230 384 {
2016US_KemalHalilbeg 0:5e307f0c3230 385 lcd.printString("TANK TIME",0,0);
2016US_KemalHalilbeg 0:5e307f0c3230 386 lcd.refresh();
2016US_KemalHalilbeg 0:5e307f0c3230 387 t.start();
2016US_KemalHalilbeg 0:5e307f0c3230 388 while (1) {
2016US_KemalHalilbeg 0:5e307f0c3230 389 if (t.read()==120 || taster =='D') {
2016US_KemalHalilbeg 0:5e307f0c3230 390 alarmUkljucen=false;
2016US_KemalHalilbeg 0:5e307f0c3230 391 lcd.clear();
2016US_KemalHalilbeg 0:5e307f0c3230 392 return;
2016US_KemalHalilbeg 0:5e307f0c3230 393 }
2016US_KemalHalilbeg 0:5e307f0c3230 394 }
2016US_KemalHalilbeg 0:5e307f0c3230 395 }
2016US_KemalHalilbeg 0:5e307f0c3230 396 //--------------------------------------------------------------------------------------
2016US_KemalHalilbeg 0:5e307f0c3230 397 int main() {
2016US_KemalHalilbeg 0:5e307f0c3230 398 //deaktivacija led dioda
2016US_KemalHalilbeg 0:5e307f0c3230 399 enable=1;
2016US_KemalHalilbeg 0:5e307f0c3230 400 sat.start_clock();
2016US_KemalHalilbeg 0:5e307f0c3230 401
2016US_KemalHalilbeg 0:5e307f0c3230 402 //inicijalizacija displeja
2016US_KemalHalilbeg 0:5e307f0c3230 403 lcd.init();
2016US_KemalHalilbeg 0:5e307f0c3230 404 tastatura.attach(&Tastatura,0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 405
2016US_KemalHalilbeg 0:5e307f0c3230 406
2016US_KemalHalilbeg 0:5e307f0c3230 407 while(1) {
2016US_KemalHalilbeg 0:5e307f0c3230 408 sat.gettime(&s,&m,&h, &usedmici, &dan, &mjesec, &godina);
2016US_KemalHalilbeg 0:5e307f0c3230 409 NacrtajSat();
2016US_KemalHalilbeg 0:5e307f0c3230 410 if (taster=='*') {
2016US_KemalHalilbeg 0:5e307f0c3230 411 lcd.clear();
2016US_KemalHalilbeg 0:5e307f0c3230 412 AlarmPodesavanje();
2016US_KemalHalilbeg 0:5e307f0c3230 413 }
2016US_KemalHalilbeg 0:5e307f0c3230 414 if (taster=='#') {
2016US_KemalHalilbeg 0:5e307f0c3230 415 lcd.clear();
2016US_KemalHalilbeg 0:5e307f0c3230 416 PostavljanjeVremenaIDatuma();
2016US_KemalHalilbeg 0:5e307f0c3230 417 }
2016US_KemalHalilbeg 0:5e307f0c3230 418 if (h==alarmH && m==alarmM && alarmUkljucen) {
2016US_KemalHalilbeg 0:5e307f0c3230 419 lcd.clear();
2016US_KemalHalilbeg 0:5e307f0c3230 420 Alarm();
2016US_KemalHalilbeg 0:5e307f0c3230 421 }
2016US_KemalHalilbeg 0:5e307f0c3230 422
2016US_KemalHalilbeg 0:5e307f0c3230 423 wait(0.2);
2016US_KemalHalilbeg 0:5e307f0c3230 424 lcd.clear();
2016US_KemalHalilbeg 0:5e307f0c3230 425 }
2016US_KemalHalilbeg 0:5e307f0c3230 426 }