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@0:aea33cabb0cc, 2021-07-12 (annotated)
- Committer:
- miroslavjovanovic99
- Date:
- Mon Jul 12 19:27:09 2021 +0000
- Revision:
- 0:aea33cabb0cc
SpremnikVode
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| miroslavjovanovic99 | 0:aea33cabb0cc | 1 | #include "mbed.h" |
| miroslavjovanovic99 | 0:aea33cabb0cc | 2 | #include "SegDisplay.h" |
| miroslavjovanovic99 | 0:aea33cabb0cc | 3 | InterruptIn button1(PA_5); //Interrupt pin |
| miroslavjovanovic99 | 0:aea33cabb0cc | 4 | InterruptIn button2(PA_6); //Interrupt pin |
| miroslavjovanovic99 | 0:aea33cabb0cc | 5 | Serial pc(USBTX, USBRX); //Serijska komunikacija s računalom |
| miroslavjovanovic99 | 0:aea33cabb0cc | 6 | DigitalOut greenLED(PA_10); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 7 | DigitalOut yellowLED(PB_3); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 8 | DigitalOut redLED(PB_5); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 9 | PwmOut buzzer(PA_4); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 10 | Ticker blink; //Ticker za blinkanje ledice |
| miroslavjovanovic99 | 0:aea33cabb0cc | 11 | Timer debounce; //Timer za micanje debouncinga |
| miroslavjovanovic99 | 0:aea33cabb0cc | 12 | void toggle(void); //inicijalizacija funkcije |
| miroslavjovanovic99 | 0:aea33cabb0cc | 13 | void toggle2(void); //inicijalizacija funkcije |
| miroslavjovanovic99 | 0:aea33cabb0cc | 14 | int state=3; // inicijalizacija varijable |
| miroslavjovanovic99 | 0:aea33cabb0cc | 15 | int razina=0; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 16 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 17 | void redBlink() |
| miroslavjovanovic99 | 0:aea33cabb0cc | 18 | { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 19 | redLED=!redLED; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 20 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 21 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 22 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 23 | void yellowBlink() |
| miroslavjovanovic99 | 0:aea33cabb0cc | 24 | { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 25 | yellowLED=!yellowLED; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 26 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 27 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 28 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 29 | void greenBlink() |
| miroslavjovanovic99 | 0:aea33cabb0cc | 30 | { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 31 | greenLED=!greenLED; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 32 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 33 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 34 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 35 | void signalizacija(int razina) // Funckija za signalizaciju razine popunjenosti spremnika |
| miroslavjovanovic99 | 0:aea33cabb0cc | 36 | { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 37 | if (razina <= 30) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 38 | blink.attach(&greenBlink, 0.25); // Ticker za blinkanje zelene LED-ice |
| miroslavjovanovic99 | 0:aea33cabb0cc | 39 | yellowLED = 0; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 40 | redLED= 0; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 41 | Seg1 = SegConvert(razina%10); // Pozivanje funkcije za ispis na 7 seg. displayu |
| miroslavjovanovic99 | 0:aea33cabb0cc | 42 | buzzer=0; // set duty cycle |
| miroslavjovanovic99 | 0:aea33cabb0cc | 43 | } else if (razina >30 && razina <= 60) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 44 | blink.detach(); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 45 | greenLED= 1; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 46 | blink.attach(&yellowBlink, 0.25); // Ticker za blinkanje žute LED-ice |
| miroslavjovanovic99 | 0:aea33cabb0cc | 47 | redLED = 0; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 48 | Seg1 = SegConvert(razina%10); // Pozivanje funkcije za ispis na 7 seg. displayu |
| miroslavjovanovic99 | 0:aea33cabb0cc | 49 | buzzer=0; // set duty cycle |
| miroslavjovanovic99 | 0:aea33cabb0cc | 50 | } else if (razina >60 && razina <= 90) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 51 | blink.detach(); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 52 | greenLED= 1; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 53 | yellowLED = 1; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 54 | blink.attach(&redBlink, 0.25); // Ticker za blinkanje crvene LED-ice |
| miroslavjovanovic99 | 0:aea33cabb0cc | 55 | Seg1 = SegConvert(razina%10); // Pozivanje funkcije za ispis na 7 seg. displayu |
| miroslavjovanovic99 | 0:aea33cabb0cc | 56 | buzzer=0; // set duty cycle |
| miroslavjovanovic99 | 0:aea33cabb0cc | 57 | } else if (razina >90 && razina <= 100) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 58 | blink.detach(); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 59 | redLED = 1; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 60 | yellowLED = 1; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 61 | greenLED= 1; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 62 | Seg1 = SegConvert(razina%10); // Pozivanje funkcije za ispis na 7 seg. displayu |
| miroslavjovanovic99 | 0:aea33cabb0cc | 63 | buzzer=0.125; // set duty cycle |
| miroslavjovanovic99 | 0:aea33cabb0cc | 64 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 65 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 66 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 67 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 68 | int main() |
| miroslavjovanovic99 | 0:aea33cabb0cc | 69 | { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 70 | debounce.start(); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 71 | SegInit(); // Pozivanje funkcije za inicijalizaciju 7 seg. displaya |
| miroslavjovanovic99 | 0:aea33cabb0cc | 72 | while (true) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 73 | button1.rise(&toggle); // Interrupt, punjenje spremnika |
| miroslavjovanovic99 | 0:aea33cabb0cc | 74 | button2.rise(&toggle2); // Interrupt, pražnjenje spremnika |
| miroslavjovanovic99 | 0:aea33cabb0cc | 75 | if(state==1) { // Punjenje spremnika vodom |
| miroslavjovanovic99 | 0:aea33cabb0cc | 76 | pc.printf("Postotak popunjenosti spremnika: %d\n\r", razina); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 77 | razina++; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 78 | wait(0.25); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 79 | signalizacija(razina); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 80 | if (razina == 100) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 81 | state=3; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 82 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 83 | } else if(state==2) { // Pražnjenje spremnika |
| miroslavjovanovic99 | 0:aea33cabb0cc | 84 | pc.printf("Postotak popunjenosti spremnika: %d\n\r", razina); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 85 | razina--; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 86 | wait(0.25); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 87 | signalizacija(razina); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 88 | if (razina == 0) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 89 | state=3; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 90 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 91 | } else if(state==3) { // Spremnik je ili pun ili prazan |
| miroslavjovanovic99 | 0:aea33cabb0cc | 92 | if (razina == 100) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 93 | pc.printf("Spremnik je pun: %d\n\r", razina);; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 94 | } else if (razina == 0) { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 95 | pc.printf("Spremnik je prazan: %d\n\r", razina);; |
| miroslavjovanovic99 | 0:aea33cabb0cc | 96 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 97 | signalizacija(razina); |
| miroslavjovanovic99 | 0:aea33cabb0cc | 98 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 99 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 100 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 101 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 102 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 103 | //Interrupt, punjenje spremnika |
| miroslavjovanovic99 | 0:aea33cabb0cc | 104 | void toggle() |
| miroslavjovanovic99 | 0:aea33cabb0cc | 105 | { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 106 | if (debounce.read_ms()>200) { // only allow toggle if debounce timer |
| miroslavjovanovic99 | 0:aea33cabb0cc | 107 | state=1; // has passed 200 ms |
| miroslavjovanovic99 | 0:aea33cabb0cc | 108 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 109 | debounce.reset(); // restart timer when the toggle is performed |
| miroslavjovanovic99 | 0:aea33cabb0cc | 110 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 111 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 112 | //Interrupt, pražnjenje spremnika |
| miroslavjovanovic99 | 0:aea33cabb0cc | 113 | void toggle2() |
| miroslavjovanovic99 | 0:aea33cabb0cc | 114 | { |
| miroslavjovanovic99 | 0:aea33cabb0cc | 115 | if (debounce.read_ms()>200) { // only allow toggle if debounce timer |
| miroslavjovanovic99 | 0:aea33cabb0cc | 116 | state=2; // has passed 200 ms |
| miroslavjovanovic99 | 0:aea33cabb0cc | 117 | |
| miroslavjovanovic99 | 0:aea33cabb0cc | 118 | } |
| miroslavjovanovic99 | 0:aea33cabb0cc | 119 | debounce.reset(); // restart timer when the toggle is performed |
| miroslavjovanovic99 | 0:aea33cabb0cc | 120 | } |