Simulacija rada Žcp-a

Dependencies:   mbed TextLCD ULN2003_StepperDriver

Committer:
dkrajacic
Date:
Sat Nov 16 11:03:27 2019 +0000
Revision:
1:a49b3c29aeb2
Parent:
0:e1ee9ea8436b
Konstrukcijski rad - zadnja verzija

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkrajacic 0:e1ee9ea8436b 1 #include "mbed.h"
dkrajacic 0:e1ee9ea8436b 2 #include "TextLCD.h" //ovo je head za LCD
dkrajacic 0:e1ee9ea8436b 3 #include "ULN2003.h" //ovo je head za motor
dkrajacic 0:e1ee9ea8436b 4
dkrajacic 0:e1ee9ea8436b 5 Serial pc(USBTX, USBRX); // tx, rx
dkrajacic 0:e1ee9ea8436b 6 ULN2003 postavljac(PB_10, PB_4, PB_5, PB_3, 4096); //definiranje izlaza za stepper
dkrajacic 0:e1ee9ea8436b 7
dkrajacic 0:e1ee9ea8436b 8 I2C i2c_lcd(I2C_SDA, I2C_SCL); // SDA, SCL, I2C komunikacija za LCD
dkrajacic 0:e1ee9ea8436b 9 TextLCD_I2C lcd(&i2c_lcd, 0x4e, TextLCD::LCD16x2); // I2C bus, PCF8574 Slaveaddress, LCD Type; LCD na I2C komunikaciji:
dkrajacic 0:e1ee9ea8436b 10
dkrajacic 0:e1ee9ea8436b 11 //TextLCD lcd(PA_0, PA_1, PA_4, PB_0, PC_1, PC_0); // RS, E, D4-D7, LCDType=LCD16x2, BL=NC, E2=NC, LCDTCtrl=HD44780; spajanje lcd-a na pinove (ako zatreba)
dkrajacic 0:e1ee9ea8436b 12
dkrajacic 0:e1ee9ea8436b 13 //SPI spi_lcd(P_, P_NC, P_); // MOSI, MISO, SCLK; // SPI komunikacija (ako zatreba):
dkrajacic 0:e1ee9ea8436b 14
dkrajacic 0:e1ee9ea8436b 15 DigitalOut led1(PC_10); //LED c.s. 1-4
dkrajacic 0:e1ee9ea8436b 16 DigitalOut led2(PC_12);
dkrajacic 0:e1ee9ea8436b 17 DigitalOut led3(PA_6);
dkrajacic 0:e1ee9ea8436b 18 DigitalOut led4(PA_7);
dkrajacic 0:e1ee9ea8436b 19 DigitalOut ledi(PC_2); //LED stanja isključenja
dkrajacic 0:e1ee9ea8436b 20 DigitalOut ledu(PC_3); //LED stanja uključeno
dkrajacic 0:e1ee9ea8436b 21 DigitalOut ledk(PA_1); //LED kvara
dkrajacic 1:a49b3c29aeb2 22 DigitalOut leds(PA_0); //LED kvara
dkrajacic 1:a49b3c29aeb2 23 DigitalIn gp(PB_1); //LED k
dkrajacic 0:e1ee9ea8436b 24
dkrajacic 0:e1ee9ea8436b 25 //Analogni ulazi za mjerenje struje:
dkrajacic 0:e1ee9ea8436b 26 AnalogIn strujaCS1(PC_0);
dkrajacic 0:e1ee9ea8436b 27 AnalogIn strujaCS2(PC_1);
dkrajacic 0:e1ee9ea8436b 28 AnalogIn strujaCS3(PB_0);
dkrajacic 0:e1ee9ea8436b 29 AnalogIn strujaCS4(PA_4);
dkrajacic 0:e1ee9ea8436b 30 //Interrupt pinovi:
dkrajacic 0:e1ee9ea8436b 31 InterruptIn k_uklj1(PA_13); //uklj. kontakt 1
dkrajacic 0:e1ee9ea8436b 32 InterruptIn k_uklj2(PA_14); //uklj. kontakt 2
dkrajacic 0:e1ee9ea8436b 33 InterruptIn k_isklj(PA_15); //isklj. kontakt
dkrajacic 0:e1ee9ea8436b 34 InterruptIn kv_isklj(PD_2); //isključenje kvara (tipka)
dkrajacic 1:a49b3c29aeb2 35 InterruptIn lom(PA_8);
dkrajacic 0:e1ee9ea8436b 36
dkrajacic 0:e1ee9ea8436b 37 PwmOut zvono1(PC_6); //pinovi za zvona
dkrajacic 1:a49b3c29aeb2 38 PwmOut zvono2(PC_8);
dkrajacic 1:a49b3c29aeb2 39 PwmOut alarm(PA_9);
dkrajacic 0:e1ee9ea8436b 40
dkrajacic 0:e1ee9ea8436b 41 //Timeri:
dkrajacic 0:e1ee9ea8436b 42 Timer osnovno; //za vraćanje u osnovno nakon isključenja
dkrajacic 0:e1ee9ea8436b 43 Ticker tcs; //ticker za blink signala
dkrajacic 0:e1ee9ea8436b 44 Timeout Tukljucenje; //time out za trajanje uključenja
dkrajacic 0:e1ee9ea8436b 45 Timer debounce; //timer za debounce
dkrajacic 0:e1ee9ea8436b 46 Ticker mjere; //ticker za mjerenje struje LED
dkrajacic 0:e1ee9ea8436b 47 Timer osovine; //timer za blokadu osnovnog stanja za više osovina
dkrajacic 0:e1ee9ea8436b 48 Ticker ispis_LCD;
dkrajacic 0:e1ee9ea8436b 49 //Varijable:
dkrajacic 0:e1ee9ea8436b 50 bool uklj1=0; //uključenje po kontaktu 1
dkrajacic 0:e1ee9ea8436b 51 bool uklj2=0; //uključenje po kontaktu 2
dkrajacic 0:e1ee9ea8436b 52 bool isklj=0; //isključenje po isključnom kontaktu
dkrajacic 0:e1ee9ea8436b 53 bool kvar=0; //kvar: stanje ima-nema
dkrajacic 0:e1ee9ea8436b 54 bool smetnja=0; //smetnja: stanje ima-nema
dkrajacic 0:e1ee9ea8436b 55 int bkvar=0; //brojač kvarova
dkrajacic 0:e1ee9ea8436b 56 int bsmetnja=0; //brojač smetnji
dkrajacic 0:e1ee9ea8436b 57 bool upis_k=0; //pomoćna varijabla za upis kvara na LCD samo kad se poajvi kvar)
dkrajacic 0:e1ee9ea8436b 58 bool upis_s=0; //pomoćna varijabla za upis smetnje na LCD samo kad se poajvi)
dkrajacic 0:e1ee9ea8436b 59 char s_aktiv; //varijabla za ispis aktivnog kvara na LCD
dkrajacic 0:e1ee9ea8436b 60 char k_aktiv; //varijabla za ispis aktivnog kvara na LCD
dkrajacic 0:e1ee9ea8436b 61 bool deaktiv_lcd=0; //varijabla za ispis na LCD nakon poništenja kvara/smetnje
dkrajacic 0:e1ee9ea8436b 62 bool p_gore=0; //pomoćna varijabla za dizanje postavljača kod isključenja
dkrajacic 0:e1ee9ea8436b 63 float struja1; //varijable vrijednosti analognog ulaza za kontrolu LED CS
dkrajacic 0:e1ee9ea8436b 64 float struja2;
dkrajacic 0:e1ee9ea8436b 65 float struja3;
dkrajacic 0:e1ee9ea8436b 66 float struja4;
dkrajacic 0:e1ee9ea8436b 67 bool U=0; //pomoćna varijabla za uključenje
dkrajacic 0:e1ee9ea8436b 68 bool aisk=0; //pomoćna varijabla za automatsko isključenje (vremensko)
dkrajacic 1:a49b3c29aeb2 69 bool kvar_l=0;
dkrajacic 1:a49b3c29aeb2 70 bool alarm_i=0;
dkrajacic 0:e1ee9ea8436b 71
dkrajacic 0:e1ee9ea8436b 72 void ukljucenje1(); //funkcija (potprogram) uključenja sa strane 1
dkrajacic 0:e1ee9ea8436b 73 void ukljucenje2(); //funkcija (potprogram) za uključenje sa strane 2
dkrajacic 0:e1ee9ea8436b 74 void iskljucenje(); //funkcija (potpogram) za isključenje
dkrajacic 0:e1ee9ea8436b 75 void kvar_lcd(void); //funkcija za ispis na lcd
dkrajacic 0:e1ee9ea8436b 76 void kvar_isklj(void); //funkcija za kvar kod aktivacije isklj. kontakta
dkrajacic 0:e1ee9ea8436b 77 void postav_gore(void); //funkcija za dizanje motke
dkrajacic 0:e1ee9ea8436b 78 void postav_dolje(void); //funkcija za spuštanje motke
dkrajacic 0:e1ee9ea8436b 79 void cs(void); //funkcija za cestovni signal
dkrajacic 0:e1ee9ea8436b 80 void upis_kvara(); //funkcija ispisa na LCD
dkrajacic 0:e1ee9ea8436b 81 void zvona(); //funkcija za buzzer
dkrajacic 0:e1ee9ea8436b 82 void pr_zv(); //gašenje zvona
dkrajacic 0:e1ee9ea8436b 83 void mjerenja(); //funkcija za struje LED
dkrajacic 0:e1ee9ea8436b 84 void T_iskljucenje(); //funkcija za automatsko isključenje (vremensko)
dkrajacic 0:e1ee9ea8436b 85 void osnovno_st();
dkrajacic 1:a49b3c29aeb2 86 void lom_m();
dkrajacic 1:a49b3c29aeb2 87 void lom_m_k();
dkrajacic 1:a49b3c29aeb2 88 void alarm_u();
dkrajacic 0:e1ee9ea8436b 89
dkrajacic 0:e1ee9ea8436b 90 int main() {
dkrajacic 0:e1ee9ea8436b 91 lcd.setBacklight(TextLCD::LightOn); //uključenje pozadinskog svjetla na LCD
dkrajacic 0:e1ee9ea8436b 92
dkrajacic 0:e1ee9ea8436b 93 k_uklj1.mode(PullDown); //konfiguracija tastera na PullDown
dkrajacic 0:e1ee9ea8436b 94 k_uklj2.mode(PullDown);
dkrajacic 0:e1ee9ea8436b 95 k_isklj.mode(PullDown);
dkrajacic 0:e1ee9ea8436b 96 kv_isklj.mode(PullDown);
dkrajacic 0:e1ee9ea8436b 97
dkrajacic 0:e1ee9ea8436b 98 led1=0; led2=0;
dkrajacic 0:e1ee9ea8436b 99
dkrajacic 0:e1ee9ea8436b 100 lcd.setCursor(TextLCD::CurOn_BlkOn); // Uključenje i blinkanje kursora na LCD
dkrajacic 0:e1ee9ea8436b 101
dkrajacic 0:e1ee9ea8436b 102 //debounce.start();
dkrajacic 0:e1ee9ea8436b 103 //konfiguracija interrupt kontakata na uzlazni/silazni brid
dkrajacic 0:e1ee9ea8436b 104 k_uklj1.rise(&ukljucenje1);
dkrajacic 0:e1ee9ea8436b 105 k_uklj2.rise(&ukljucenje2);
dkrajacic 0:e1ee9ea8436b 106 k_isklj.fall(&iskljucenje);
dkrajacic 0:e1ee9ea8436b 107 kv_isklj.fall(&kvar_isklj);
dkrajacic 1:a49b3c29aeb2 108 lom.fall(&lom_m);
dkrajacic 1:a49b3c29aeb2 109 lom.rise(&lom_m_k);
dkrajacic 0:e1ee9ea8436b 110
dkrajacic 0:e1ee9ea8436b 111 lcd.cls(); //čišćenje displeja
dkrajacic 0:e1ee9ea8436b 112 lcd.printf("Kvar %i\nSmetnja %i", bkvar, bsmetnja); //prikaz broja kvara i smetnje na lcd
dkrajacic 0:e1ee9ea8436b 113
dkrajacic 1:a49b3c29aeb2 114 if(gp==0){
dkrajacic 1:a49b3c29aeb2 115 postav_gore();
dkrajacic 1:a49b3c29aeb2 116 wait(8);
dkrajacic 1:a49b3c29aeb2 117 }
dkrajacic 1:a49b3c29aeb2 118
dkrajacic 0:e1ee9ea8436b 119 //glavna petlja
dkrajacic 0:e1ee9ea8436b 120 while(1) {
dkrajacic 0:e1ee9ea8436b 121 //uvjeti za LED uključenja, isključenja i kvara
dkrajacic 0:e1ee9ea8436b 122 if(uklj1==1 || uklj2==1) {
dkrajacic 0:e1ee9ea8436b 123 ledu=1;
dkrajacic 0:e1ee9ea8436b 124 }
dkrajacic 0:e1ee9ea8436b 125 else {
dkrajacic 0:e1ee9ea8436b 126 ledu=0;
dkrajacic 0:e1ee9ea8436b 127 }
dkrajacic 0:e1ee9ea8436b 128 if(isklj==1) {
dkrajacic 0:e1ee9ea8436b 129 ledi=1;
dkrajacic 0:e1ee9ea8436b 130 }
dkrajacic 0:e1ee9ea8436b 131 else {
dkrajacic 0:e1ee9ea8436b 132 ledi=0;
dkrajacic 0:e1ee9ea8436b 133 }
dkrajacic 0:e1ee9ea8436b 134 if(kvar==1) {
dkrajacic 0:e1ee9ea8436b 135 ledk=1;}
dkrajacic 0:e1ee9ea8436b 136 else {
dkrajacic 1:a49b3c29aeb2 137 ledk=0;
dkrajacic 1:a49b3c29aeb2 138 alarm_i=0;}
dkrajacic 1:a49b3c29aeb2 139 if(smetnja==1) {
dkrajacic 1:a49b3c29aeb2 140 leds=1;}
dkrajacic 1:a49b3c29aeb2 141 else {
dkrajacic 1:a49b3c29aeb2 142 leds=0;}
dkrajacic 0:e1ee9ea8436b 143
dkrajacic 0:e1ee9ea8436b 144
dkrajacic 0:e1ee9ea8436b 145 //uključenje:
dkrajacic 0:e1ee9ea8436b 146
dkrajacic 0:e1ee9ea8436b 147 if((uklj1==1 || uklj2==1) && isklj==0){
dkrajacic 0:e1ee9ea8436b 148
dkrajacic 0:e1ee9ea8436b 149
dkrajacic 0:e1ee9ea8436b 150 //mjerenja();
dkrajacic 0:e1ee9ea8436b 151 if(U==0){
dkrajacic 0:e1ee9ea8436b 152
dkrajacic 0:e1ee9ea8436b 153 zvona();
dkrajacic 1:a49b3c29aeb2 154 led3=1;
dkrajacic 0:e1ee9ea8436b 155 led1=1;
dkrajacic 0:e1ee9ea8436b 156 tcs.attach(&cs, 0.5);
dkrajacic 0:e1ee9ea8436b 157 //mjere.attach(&mjerenja, 1.5);
dkrajacic 0:e1ee9ea8436b 158 //start tickera za CS, treptanje dioda
dkrajacic 1:a49b3c29aeb2 159 Tukljucenje.attach(&T_iskljucenje, 40.0);
dkrajacic 1:a49b3c29aeb2 160 wait(8); //predzvonjenje
dkrajacic 0:e1ee9ea8436b 161 postav_dolje();
dkrajacic 0:e1ee9ea8436b 162 pr_zv();
dkrajacic 0:e1ee9ea8436b 163 U=1;
dkrajacic 0:e1ee9ea8436b 164 }
dkrajacic 0:e1ee9ea8436b 165 }
dkrajacic 0:e1ee9ea8436b 166 //Automatsko isključenje ako je proteklo vrijeme
dkrajacic 0:e1ee9ea8436b 167 if(aisk==1) {
dkrajacic 0:e1ee9ea8436b 168
dkrajacic 0:e1ee9ea8436b 169 smetnja=1;
dkrajacic 1:a49b3c29aeb2 170 leds=1;
dkrajacic 0:e1ee9ea8436b 171 bsmetnja=bsmetnja+1;
dkrajacic 0:e1ee9ea8436b 172 postav_gore();
dkrajacic 0:e1ee9ea8436b 173 wait(0.2);
dkrajacic 0:e1ee9ea8436b 174 Tukljucenje.detach();
dkrajacic 0:e1ee9ea8436b 175 //mjere.detach();
dkrajacic 0:e1ee9ea8436b 176 tcs.detach(); //isključenje signala
dkrajacic 0:e1ee9ea8436b 177 led1=0;
dkrajacic 1:a49b3c29aeb2 178 led2=0;
dkrajacic 1:a49b3c29aeb2 179 led3=0;
dkrajacic 1:a49b3c29aeb2 180 led4=0;
dkrajacic 0:e1ee9ea8436b 181 uklj1=0;
dkrajacic 0:e1ee9ea8436b 182 uklj2=0;
dkrajacic 0:e1ee9ea8436b 183 U=0;
dkrajacic 0:e1ee9ea8436b 184 aisk=0;
dkrajacic 1:a49b3c29aeb2 185 alarm_u();
dkrajacic 1:a49b3c29aeb2 186 if(gp==0){
dkrajacic 1:a49b3c29aeb2 187 kvar=1;
dkrajacic 1:a49b3c29aeb2 188 }
dkrajacic 0:e1ee9ea8436b 189 }
dkrajacic 0:e1ee9ea8436b 190 //Isključenje na isključnom kontaktu
dkrajacic 0:e1ee9ea8436b 191
dkrajacic 0:e1ee9ea8436b 192 if((uklj1==1 || uklj2==1) && (isklj==1)) { //isključenje za stranu 1
dkrajacic 1:a49b3c29aeb2 193
dkrajacic 1:a49b3c29aeb2 194 wait(2);
dkrajacic 0:e1ee9ea8436b 195 if(p_gore==0) {
dkrajacic 0:e1ee9ea8436b 196 postav_gore();
dkrajacic 0:e1ee9ea8436b 197 wait(0.1);
dkrajacic 0:e1ee9ea8436b 198 p_gore=1;
dkrajacic 1:a49b3c29aeb2 199 if(gp==0){
dkrajacic 1:a49b3c29aeb2 200 kvar=1;
dkrajacic 0:e1ee9ea8436b 201 }
dkrajacic 1:a49b3c29aeb2 202 }
dkrajacic 1:a49b3c29aeb2 203 Tukljucenje.detach();
dkrajacic 0:e1ee9ea8436b 204 tcs.detach(); //isključenje signala
dkrajacic 0:e1ee9ea8436b 205 led1=0;
dkrajacic 1:a49b3c29aeb2 206 led2=0;
dkrajacic 1:a49b3c29aeb2 207 led3=0;
dkrajacic 1:a49b3c29aeb2 208 led4=0;
dkrajacic 0:e1ee9ea8436b 209
dkrajacic 0:e1ee9ea8436b 210 osnovno.start(); //pokretanje timera osnovno
dkrajacic 0:e1ee9ea8436b 211 }
dkrajacic 0:e1ee9ea8436b 212 //Dovođenje u osnovno stanje
dkrajacic 0:e1ee9ea8436b 213
dkrajacic 1:a49b3c29aeb2 214 if(osnovno.read()>=40 || (uklj2==1 && uklj1==1)) {
dkrajacic 1:a49b3c29aeb2 215 if(osnovno.read()>=40) {
dkrajacic 0:e1ee9ea8436b 216 smetnja=1;
dkrajacic 1:a49b3c29aeb2 217 leds=1;
dkrajacic 0:e1ee9ea8436b 218 bsmetnja=bsmetnja+1;
dkrajacic 0:e1ee9ea8436b 219 osnovno_st();
dkrajacic 1:a49b3c29aeb2 220 alarm_u();
dkrajacic 0:e1ee9ea8436b 221 }
dkrajacic 0:e1ee9ea8436b 222 else {
dkrajacic 0:e1ee9ea8436b 223 osovine.start();
dkrajacic 0:e1ee9ea8436b 224 if(osovine.read()>=2) {
dkrajacic 0:e1ee9ea8436b 225 osnovno_st();
dkrajacic 0:e1ee9ea8436b 226 }
dkrajacic 0:e1ee9ea8436b 227 }
dkrajacic 0:e1ee9ea8436b 228 }
dkrajacic 0:e1ee9ea8436b 229
dkrajacic 0:e1ee9ea8436b 230 wait(0.1);
dkrajacic 0:e1ee9ea8436b 231 //Uključenje kvara kod aktivacije isklj. kontakta bez uključenja:
dkrajacic 0:e1ee9ea8436b 232
dkrajacic 1:a49b3c29aeb2 233 if(((uklj1==0 && uklj2==0) && (isklj==1)) || lom==0){ //kvar kod isključnog kontakta bez uključenja
dkrajacic 0:e1ee9ea8436b 234 kvar=1;
dkrajacic 1:a49b3c29aeb2 235 alarm_u();
dkrajacic 1:a49b3c29aeb2 236
dkrajacic 0:e1ee9ea8436b 237 }
dkrajacic 1:a49b3c29aeb2 238
dkrajacic 0:e1ee9ea8436b 239 kvar_lcd();
dkrajacic 0:e1ee9ea8436b 240 } //kraj while(1)
dkrajacic 0:e1ee9ea8436b 241 } //kraj int main()
dkrajacic 0:e1ee9ea8436b 242
dkrajacic 0:e1ee9ea8436b 243
dkrajacic 0:e1ee9ea8436b 244 void ukljucenje1(void){
dkrajacic 0:e1ee9ea8436b 245 uklj1=1;
dkrajacic 0:e1ee9ea8436b 246 osovine.reset();
dkrajacic 0:e1ee9ea8436b 247 if(uklj2==0) {
dkrajacic 0:e1ee9ea8436b 248 isklj=0;
dkrajacic 0:e1ee9ea8436b 249 }
dkrajacic 0:e1ee9ea8436b 250 ledu=1;
dkrajacic 0:e1ee9ea8436b 251 }
dkrajacic 0:e1ee9ea8436b 252
dkrajacic 0:e1ee9ea8436b 253 void ukljucenje2(void){
dkrajacic 0:e1ee9ea8436b 254 uklj2=1;
dkrajacic 0:e1ee9ea8436b 255 osovine.reset();
dkrajacic 0:e1ee9ea8436b 256 if(uklj1==0) {
dkrajacic 0:e1ee9ea8436b 257 isklj=0;
dkrajacic 0:e1ee9ea8436b 258 }
dkrajacic 0:e1ee9ea8436b 259 ledu=1;
dkrajacic 0:e1ee9ea8436b 260 }
dkrajacic 0:e1ee9ea8436b 261
dkrajacic 0:e1ee9ea8436b 262 void iskljucenje(void){
dkrajacic 0:e1ee9ea8436b 263 isklj=1;
dkrajacic 0:e1ee9ea8436b 264 ledi=1;
dkrajacic 0:e1ee9ea8436b 265 }
dkrajacic 0:e1ee9ea8436b 266
dkrajacic 0:e1ee9ea8436b 267 void kvar_lcd(void) {
dkrajacic 0:e1ee9ea8436b 268 if(kvar==1){
dkrajacic 0:e1ee9ea8436b 269 k_aktiv=65;
dkrajacic 0:e1ee9ea8436b 270 }
dkrajacic 0:e1ee9ea8436b 271 else {
dkrajacic 0:e1ee9ea8436b 272 k_aktiv=73;
dkrajacic 0:e1ee9ea8436b 273 }
dkrajacic 0:e1ee9ea8436b 274 if(kvar==1 && upis_k==0) {
dkrajacic 0:e1ee9ea8436b 275 bkvar=bkvar+1;
dkrajacic 0:e1ee9ea8436b 276 lcd.cls();
dkrajacic 0:e1ee9ea8436b 277 lcd.printf("Kvar %i %c\nSmetnja %i %c", bkvar, k_aktiv, bsmetnja, s_aktiv);
dkrajacic 0:e1ee9ea8436b 278 upis_k=1;
dkrajacic 0:e1ee9ea8436b 279 }
dkrajacic 0:e1ee9ea8436b 280 else if(kvar==0) {
dkrajacic 0:e1ee9ea8436b 281 upis_k=0;
dkrajacic 0:e1ee9ea8436b 282 }
dkrajacic 0:e1ee9ea8436b 283
dkrajacic 0:e1ee9ea8436b 284 if(smetnja==1){
dkrajacic 0:e1ee9ea8436b 285 s_aktiv=65;
dkrajacic 0:e1ee9ea8436b 286 }
dkrajacic 0:e1ee9ea8436b 287 else {
dkrajacic 0:e1ee9ea8436b 288 s_aktiv=73;
dkrajacic 0:e1ee9ea8436b 289 }
dkrajacic 0:e1ee9ea8436b 290 if(smetnja==1 && upis_s==0) { //ispis smetnje
dkrajacic 0:e1ee9ea8436b 291 //bsmetnja=bsmetnja+1;
dkrajacic 0:e1ee9ea8436b 292 lcd.cls();
dkrajacic 0:e1ee9ea8436b 293 lcd.printf("Kvar %i %c\nSmetnja %i %c", bkvar, k_aktiv, bsmetnja, s_aktiv);
dkrajacic 0:e1ee9ea8436b 294 upis_s=1;
dkrajacic 0:e1ee9ea8436b 295 }
dkrajacic 0:e1ee9ea8436b 296 else if(smetnja==0) {
dkrajacic 0:e1ee9ea8436b 297 upis_s=0;
dkrajacic 0:e1ee9ea8436b 298 }
dkrajacic 0:e1ee9ea8436b 299 if (deaktiv_lcd==1) {
dkrajacic 0:e1ee9ea8436b 300 lcd.cls();
dkrajacic 0:e1ee9ea8436b 301 lcd.printf("Kvar %i %c\nSmetnja %i %c", bkvar, k_aktiv, bsmetnja, s_aktiv);
dkrajacic 0:e1ee9ea8436b 302 deaktiv_lcd=0;
dkrajacic 0:e1ee9ea8436b 303 }
dkrajacic 0:e1ee9ea8436b 304 }
dkrajacic 0:e1ee9ea8436b 305
dkrajacic 0:e1ee9ea8436b 306
dkrajacic 0:e1ee9ea8436b 307 void kvar_isklj(void) {
dkrajacic 1:a49b3c29aeb2 308
dkrajacic 1:a49b3c29aeb2 309 if(uklj1==0 && uklj2==0) {
dkrajacic 1:a49b3c29aeb2 310 if(kvar_l==0) {
dkrajacic 1:a49b3c29aeb2 311 kvar=0;
dkrajacic 1:a49b3c29aeb2 312 }
dkrajacic 0:e1ee9ea8436b 313 smetnja=0;
dkrajacic 0:e1ee9ea8436b 314 wait(0.2);
dkrajacic 0:e1ee9ea8436b 315 deaktiv_lcd=1;
dkrajacic 1:a49b3c29aeb2 316 //alarm=0;
dkrajacic 1:a49b3c29aeb2 317 alarm_u();
dkrajacic 1:a49b3c29aeb2 318 }
dkrajacic 0:e1ee9ea8436b 319 }
dkrajacic 0:e1ee9ea8436b 320
dkrajacic 0:e1ee9ea8436b 321 void postav_dolje() {
dkrajacic 0:e1ee9ea8436b 322 postavljac.moveForward(100,20);
dkrajacic 0:e1ee9ea8436b 323 pr_zv();
dkrajacic 0:e1ee9ea8436b 324 }
dkrajacic 0:e1ee9ea8436b 325
dkrajacic 0:e1ee9ea8436b 326 void postav_gore() {
dkrajacic 0:e1ee9ea8436b 327 postavljac.moveReverse(100,15);
dkrajacic 0:e1ee9ea8436b 328 }
dkrajacic 0:e1ee9ea8436b 329
dkrajacic 0:e1ee9ea8436b 330 void cs(void) {
dkrajacic 0:e1ee9ea8436b 331 led1=!led1;
dkrajacic 0:e1ee9ea8436b 332 led2=!led2;
dkrajacic 1:a49b3c29aeb2 333 led3=!led3;
dkrajacic 1:a49b3c29aeb2 334 led4=!led4;
dkrajacic 0:e1ee9ea8436b 335 mjerenja();
dkrajacic 0:e1ee9ea8436b 336 }
dkrajacic 0:e1ee9ea8436b 337
dkrajacic 0:e1ee9ea8436b 338 void zvona() {
dkrajacic 0:e1ee9ea8436b 339 zvono1.period(1); // set PWM period to 10 ms
dkrajacic 0:e1ee9ea8436b 340 zvono1=0.5; // set duty cycle to 80%
dkrajacic 0:e1ee9ea8436b 341 zvono2.period(1); // set PWM period to 10 ms
dkrajacic 0:e1ee9ea8436b 342 zvono2=0.5; // set duty cycle to 80%
dkrajacic 0:e1ee9ea8436b 343 }
dkrajacic 0:e1ee9ea8436b 344
dkrajacic 0:e1ee9ea8436b 345 void pr_zv() {
dkrajacic 0:e1ee9ea8436b 346 zvono1=0;
dkrajacic 0:e1ee9ea8436b 347 zvono2=0;
dkrajacic 0:e1ee9ea8436b 348 }
dkrajacic 0:e1ee9ea8436b 349
dkrajacic 0:e1ee9ea8436b 350 void mjerenja() {
dkrajacic 0:e1ee9ea8436b 351
dkrajacic 0:e1ee9ea8436b 352 if(led1==1) {
dkrajacic 0:e1ee9ea8436b 353 struja1=strujaCS1;
dkrajacic 0:e1ee9ea8436b 354 struja3=strujaCS3;
dkrajacic 1:a49b3c29aeb2 355 if(struja1<=0.2f || struja1>=0.55f || struja3<=0.2f || struja3>=0.55f) {
dkrajacic 0:e1ee9ea8436b 356 kvar=1;
dkrajacic 0:e1ee9ea8436b 357 ledk=1;
dkrajacic 1:a49b3c29aeb2 358 alarm_u();
dkrajacic 0:e1ee9ea8436b 359 }
dkrajacic 0:e1ee9ea8436b 360 }
dkrajacic 0:e1ee9ea8436b 361
dkrajacic 0:e1ee9ea8436b 362 if(led2==1) {
dkrajacic 0:e1ee9ea8436b 363 struja2=strujaCS2;
dkrajacic 0:e1ee9ea8436b 364 struja4=strujaCS4;
dkrajacic 1:a49b3c29aeb2 365 if(struja2<=0.2f || struja2>=0.55f || struja4<=0.2f || struja4>=0.55f) {
dkrajacic 0:e1ee9ea8436b 366 kvar=1;
dkrajacic 0:e1ee9ea8436b 367 ledk=1;
dkrajacic 1:a49b3c29aeb2 368 alarm_i=1;
dkrajacic 1:a49b3c29aeb2 369 alarm_u();
dkrajacic 0:e1ee9ea8436b 370 }
dkrajacic 0:e1ee9ea8436b 371 }
dkrajacic 0:e1ee9ea8436b 372 if(uklj1==0 && uklj2==0){
dkrajacic 0:e1ee9ea8436b 373 mjere.detach();}
dkrajacic 0:e1ee9ea8436b 374 }
dkrajacic 0:e1ee9ea8436b 375
dkrajacic 0:e1ee9ea8436b 376 void T_iskljucenje() {
dkrajacic 0:e1ee9ea8436b 377 aisk=1;
dkrajacic 0:e1ee9ea8436b 378 }
dkrajacic 0:e1ee9ea8436b 379
dkrajacic 0:e1ee9ea8436b 380 void osnovno_st() {
dkrajacic 0:e1ee9ea8436b 381
dkrajacic 0:e1ee9ea8436b 382 uklj1=0;
dkrajacic 0:e1ee9ea8436b 383 uklj2=0;
dkrajacic 0:e1ee9ea8436b 384 isklj=0;
dkrajacic 0:e1ee9ea8436b 385 wait(0.05);
dkrajacic 0:e1ee9ea8436b 386 U=0;
dkrajacic 0:e1ee9ea8436b 387 osnovno.stop();
dkrajacic 0:e1ee9ea8436b 388 osnovno.reset();
dkrajacic 0:e1ee9ea8436b 389 p_gore=0;
dkrajacic 0:e1ee9ea8436b 390 osovine.stop();
dkrajacic 1:a49b3c29aeb2 391 }
dkrajacic 1:a49b3c29aeb2 392
dkrajacic 1:a49b3c29aeb2 393 void lom_m() {
dkrajacic 1:a49b3c29aeb2 394 kvar=1;
dkrajacic 1:a49b3c29aeb2 395 kvar_l=1;
dkrajacic 1:a49b3c29aeb2 396 alarm_u();
dkrajacic 1:a49b3c29aeb2 397 }
dkrajacic 1:a49b3c29aeb2 398
dkrajacic 1:a49b3c29aeb2 399 void lom_m_k() {
dkrajacic 1:a49b3c29aeb2 400 kvar_l=0;
dkrajacic 1:a49b3c29aeb2 401 }
dkrajacic 1:a49b3c29aeb2 402
dkrajacic 1:a49b3c29aeb2 403 void alarm_u() {
dkrajacic 0:e1ee9ea8436b 404
dkrajacic 1:a49b3c29aeb2 405 if(kvar==1 && alarm_i==0) {
dkrajacic 1:a49b3c29aeb2 406 alarm.period(2); // set PWM period to 10 ms
dkrajacic 1:a49b3c29aeb2 407 alarm=0.9;
dkrajacic 1:a49b3c29aeb2 408 wait(0.1);
dkrajacic 1:a49b3c29aeb2 409 }
dkrajacic 1:a49b3c29aeb2 410
dkrajacic 1:a49b3c29aeb2 411 else {
dkrajacic 1:a49b3c29aeb2 412 alarm=0;}
dkrajacic 1:a49b3c29aeb2 413
dkrajacic 1:a49b3c29aeb2 414 }
dkrajacic 1:a49b3c29aeb2 415
dkrajacic 1:a49b3c29aeb2 416
dkrajacic 0:e1ee9ea8436b 417