Konstrukcijski rad iz kolegija Mikroupravljaci
Dependencies: mbed TextLCD ULN2003_StepperDriver
main.cpp@1:a49b3c29aeb2, 2019-11-16 (annotated)
- Committer:
- dkrajacic
- Date:
- Sat Nov 16 11:03:27 2019 +0000
- Revision:
- 1:a49b3c29aeb2
- Parent:
- 0:e1ee9ea8436b
- Child:
- 2:a8c9d4c65e58
Konstrukcijski rad - zadnja verzija
Who changed what in which revision?
User | Revision | Line number | New 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 |