Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 00004 TextLCD lcd(p19,p20,p21,p22,p23,p24); 00005 DigitalOut Q_M1_pumpa(p5); 00006 DigitalOut Q_M2_pumpa(p6); 00007 DigitalIn kruska1(p7); //zastita od rada na suho 00008 DigitalIn kruska2(p8); //razina uklopa prve pumpe 00009 DigitalIn kruska3(p9); //razina uklopa druge pumpe 00010 DigitalIn kruska4(p10); //razina alarm 00011 DigitalOut Q_Alarm (p11); 00012 InterruptIn Alarm_reset (p12); 00013 DigitalIn reset_sati(p13); 00014 Ticker Alarm_Led; 00015 Timer titranje; 00016 00017 bool Alarm_full; 00018 bool prva_radna (0); 00019 bool druga_radna (0); 00020 bool M1_prva_radna(0); 00021 bool M1_druga_radna(0); 00022 bool M2_prva_radna(0); 00023 bool M2_druga_radna(0); 00024 00025 00026 int M1_h (0); 00027 int M2_h (0); 00028 00029 void upravljanje() 00030 { 00031 kruska1.mode(PullUp); 00032 kruska2.mode(PullUp); 00033 kruska3.mode(PullUp); 00034 kruska4.mode(PullUp); 00035 { 00036 if (kruska2==1 or kruska3==1) { 00037 prva_radna = 1; 00038 } 00039 if (kruska3==1) { 00040 druga_radna = 1; 00041 } 00042 if (kruska2==0) { 00043 wait (1.0); 00044 prva_radna = 0; 00045 druga_radna = 0; 00046 } 00047 if (kruska1==0) { 00048 prva_radna = 0; 00049 druga_radna = 0; 00050 } 00051 if (kruska4==1) { 00052 Alarm_full = 1; 00053 wait(0.5); 00054 } 00055 } 00056 Q_M1_pumpa = ((prva_radna and M1_prva_radna) or (druga_radna and M1_druga_radna)); 00057 Q_M2_pumpa = ((prva_radna and M2_prva_radna) or (druga_radna and M2_druga_radna)); 00058 } 00059 00060 void sati_rada () 00061 { 00062 if (Q_M1_pumpa==1) { 00063 M1_h = M1_h + 1; 00064 wait (2.0); 00065 } 00066 if (Q_M2_pumpa==1) { 00067 M2_h = M2_h + 1; 00068 wait (2.0); 00069 } 00070 if (reset_sati==1) { 00071 M1_h = 0; 00072 M2_h = 0; 00073 } 00074 } 00075 00076 void izmjena_pumpi () 00077 { 00078 { 00079 if (M2_prva_radna==0 and (M1_h < (M2_h + 5))) { 00080 M1_prva_radna = 1; 00081 M2_druga_radna = 1; 00082 } else { 00083 M1_prva_radna = 0; 00084 M2_druga_radna = 0; 00085 } 00086 } 00087 { 00088 if (M1_prva_radna==0 and (M2_h < M1_h)) { 00089 M2_prva_radna = 1; 00090 M1_druga_radna = 1; 00091 } else { 00092 M2_prva_radna = 0; 00093 M1_druga_radna = 0; 00094 } 00095 } 00096 } 00097 00098 00099 void LCD_text () 00100 { 00101 if (kruska1==0&&kruska2==0&&kruska3==0&&kruska4==0) { 00102 lcd.cls(); 00103 lcd.locate(0,0); 00104 lcd.printf("Nivo suho"); 00105 lcd.locate(0,1); 00106 lcd.printf("M1-%ih", M1_h); 00107 lcd.locate(8,1); 00108 lcd.printf("M2-%ih", M2_h); 00109 wait(0.5); 00110 } 00111 if (kruska1==1&&kruska2==0&&kruska3==0&&kruska4==0) { 00112 lcd.cls(); 00113 lcd.locate(0,0); 00114 lcd.printf("Nizak nivo"); 00115 lcd.locate(0,1); 00116 lcd.printf("M1-%ih", M1_h); 00117 lcd.locate(8,1); 00118 lcd.printf("M2-%ih", M2_h); 00119 wait(0.5); 00120 } 00121 if (kruska1==1&&kruska2==1&&kruska3==0&&kruska4==0) { 00122 lcd.cls(); 00123 lcd.locate(0,0); 00124 lcd.printf("Srednji nivo"); 00125 lcd.locate(0,1); 00126 lcd.printf("M1-%ih", M1_h); 00127 lcd.locate(8,1); 00128 lcd.printf("M2-%ih", M2_h); 00129 wait(0.5); 00130 } 00131 if (kruska1==1&&kruska2==1&&kruska3==1&&kruska4==0) { 00132 lcd.cls(); 00133 lcd.locate(0,0); 00134 lcd.printf("Visok nivo"); 00135 lcd.locate(0,1); 00136 lcd.printf("M1-%ih", M1_h); 00137 lcd.locate(8,1); 00138 lcd.printf("M2-%ih", M2_h); 00139 wait(0.5); 00140 } 00141 if (kruska1==1&&kruska2==1&&kruska3==1&&kruska4==1) { 00142 lcd.cls(); 00143 lcd.locate(0,0); 00144 lcd.printf("Alarm-preljev"); 00145 lcd.locate(0,1); 00146 lcd.printf("M1-%ih", M1_h); 00147 lcd.locate(8,1); 00148 lcd.printf("M2-%ih", M2_h); 00149 wait(0.5); 00150 } 00151 } 00152 00153 00154 void alarm_prepunjenost () 00155 { 00156 if (Alarm_full==1) { 00157 Q_Alarm = !Q_Alarm; 00158 } 00159 if (Alarm_full==0) { 00160 Q_Alarm = 0; 00161 } 00162 } 00163 00164 void alarm_led_reset () 00165 { 00166 if (titranje.read_ms()>200) 00167 Alarm_full = 0; 00168 titranje.reset(); 00169 } 00170 00171 int main() 00172 { 00173 while(1) { 00174 upravljanje(); 00175 sati_rada (); 00176 izmjena_pumpi (); 00177 LCD_text (); 00178 00179 Alarm_Led.attach(&alarm_prepunjenost, 0.5); 00180 00181 titranje.start(); 00182 Alarm_reset.rise(&alarm_led_reset); 00183 } 00184 }
Generated on Thu Aug 11 2022 08:39:21 by
1.7.2