tim008 tim008
/
Zadatak_1
Beganovic Benjamin Mehanovic Adnan
main.cpp@0:dbbdb57ef01a, 2014-04-07 (annotated)
- Committer:
- tim008
- Date:
- Mon Apr 07 09:38:27 2014 +0000
- Revision:
- 0:dbbdb57ef01a
PAI_LV6_GRUPA2_TIM008
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tim008 | 0:dbbdb57ef01a | 1 | #include "mbed.h" |
tim008 | 0:dbbdb57ef01a | 2 | |
tim008 | 0:dbbdb57ef01a | 3 | using namespace std; |
tim008 | 0:dbbdb57ef01a | 4 | |
tim008 | 0:dbbdb57ef01a | 5 | BusOut segments(dp18, dp4, dp28, dp6, dp5, dp27, dp26); |
tim008 | 0:dbbdb57ef01a | 6 | InterruptIn taster1(dp1); |
tim008 | 0:dbbdb57ef01a | 7 | InterruptIn taster2(dp2); |
tim008 | 0:dbbdb57ef01a | 8 | BusOut digit(dp23, dp24, dp25); |
tim008 | 0:dbbdb57ef01a | 9 | DigitalOut decimal_point(dp17); |
tim008 | 0:dbbdb57ef01a | 10 | |
tim008 | 0:dbbdb57ef01a | 11 | Timer timer; |
tim008 | 0:dbbdb57ef01a | 12 | Timer debounce1; |
tim008 | 0:dbbdb57ef01a | 13 | Timer debounce2; |
tim008 | 0:dbbdb57ef01a | 14 | Ticker osvjezi_tiker; |
tim008 | 0:dbbdb57ef01a | 15 | |
tim008 | 0:dbbdb57ef01a | 16 | int red_br_cifre; |
tim008 | 0:dbbdb57ef01a | 17 | int cifra_za_ispis; |
tim008 | 0:dbbdb57ef01a | 18 | int prva_cifra, druga_cifra, treca_cifra; |
tim008 | 0:dbbdb57ef01a | 19 | int predefined_segments[10] = {0x01, 0x4f, 0x12, 0x06, 0x4c, 0x24, 0x20, 0x0f, 0x00, 0x04}; |
tim008 | 0:dbbdb57ef01a | 20 | int chars[6] = {0x08,0x60,0x31,0x42,0x30,0x38}; |
tim008 | 0:dbbdb57ef01a | 21 | |
tim008 | 0:dbbdb57ef01a | 22 | void osvjezi() |
tim008 | 0:dbbdb57ef01a | 23 | { |
tim008 | 0:dbbdb57ef01a | 24 | red_br_cifre=3;//prva cifra |
tim008 | 0:dbbdb57ef01a | 25 | cifra_za_ispis=predefined_segments[prva_cifra]; |
tim008 | 0:dbbdb57ef01a | 26 | |
tim008 | 0:dbbdb57ef01a | 27 | red_br_cifre=5;//druga cifra |
tim008 | 0:dbbdb57ef01a | 28 | cifra_za_ispis=predefined_segments[druga_cifra]; |
tim008 | 0:dbbdb57ef01a | 29 | |
tim008 | 0:dbbdb57ef01a | 30 | red_br_cifre=6;//treca cifra |
tim008 | 0:dbbdb57ef01a | 31 | cifra_za_ispis=predefined_segments[treca_cifra]; |
tim008 | 0:dbbdb57ef01a | 32 | } |
tim008 | 0:dbbdb57ef01a | 33 | |
tim008 | 0:dbbdb57ef01a | 34 | void display(float current_timer) |
tim008 | 0:dbbdb57ef01a | 35 | { |
tim008 | 0:dbbdb57ef01a | 36 | int timer_digits[3] = { (int)(current_timer / 10.) % 10, |
tim008 | 0:dbbdb57ef01a | 37 | (int)(current_timer) % 10, |
tim008 | 0:dbbdb57ef01a | 38 | (int)(current_timer * 10.) % 10 |
tim008 | 0:dbbdb57ef01a | 39 | }; |
tim008 | 0:dbbdb57ef01a | 40 | |
tim008 | 0:dbbdb57ef01a | 41 | for(int i = 1; i <= 4; i = i * 2) { |
tim008 | 0:dbbdb57ef01a | 42 | digit = ~i; |
tim008 | 0:dbbdb57ef01a | 43 | segments = predefined_segments[ timer_digits[i / 2] ]; |
tim008 | 0:dbbdb57ef01a | 44 | decimal_point = (i == 2) ? 0 : 1; |
tim008 | 0:dbbdb57ef01a | 45 | osvjezi_tiker.attach_us(&osvjezi, 1000); |
tim008 | 0:dbbdb57ef01a | 46 | } |
tim008 | 0:dbbdb57ef01a | 47 | } |
tim008 | 0:dbbdb57ef01a | 48 | |
tim008 | 0:dbbdb57ef01a | 49 | bool stopiran = true; |
tim008 | 0:dbbdb57ef01a | 50 | |
tim008 | 0:dbbdb57ef01a | 51 | void start() |
tim008 | 0:dbbdb57ef01a | 52 | { |
tim008 | 0:dbbdb57ef01a | 53 | if(debounce1.read_ms() > 200) { |
tim008 | 0:dbbdb57ef01a | 54 | if(stopiran) { |
tim008 | 0:dbbdb57ef01a | 55 | timer.start(); |
tim008 | 0:dbbdb57ef01a | 56 | stopiran = false; |
tim008 | 0:dbbdb57ef01a | 57 | } else { |
tim008 | 0:dbbdb57ef01a | 58 | timer.stop(); |
tim008 | 0:dbbdb57ef01a | 59 | stopiran = true; |
tim008 | 0:dbbdb57ef01a | 60 | } |
tim008 | 0:dbbdb57ef01a | 61 | debounce1.reset(); |
tim008 | 0:dbbdb57ef01a | 62 | } |
tim008 | 0:dbbdb57ef01a | 63 | |
tim008 | 0:dbbdb57ef01a | 64 | } |
tim008 | 0:dbbdb57ef01a | 65 | |
tim008 | 0:dbbdb57ef01a | 66 | void reset() |
tim008 | 0:dbbdb57ef01a | 67 | { |
tim008 | 0:dbbdb57ef01a | 68 | if(debounce2.read_ms() > 200) { |
tim008 | 0:dbbdb57ef01a | 69 | timer.reset(); |
tim008 | 0:dbbdb57ef01a | 70 | timer.stop(); |
tim008 | 0:dbbdb57ef01a | 71 | stopiran = true; |
tim008 | 0:dbbdb57ef01a | 72 | display(0.00); |
tim008 | 0:dbbdb57ef01a | 73 | debounce2.reset(); |
tim008 | 0:dbbdb57ef01a | 74 | } |
tim008 | 0:dbbdb57ef01a | 75 | } |
tim008 | 0:dbbdb57ef01a | 76 | |
tim008 | 0:dbbdb57ef01a | 77 | |
tim008 | 0:dbbdb57ef01a | 78 | int main() |
tim008 | 0:dbbdb57ef01a | 79 | { |
tim008 | 0:dbbdb57ef01a | 80 | debounce1.start(); |
tim008 | 0:dbbdb57ef01a | 81 | debounce2.start(); |
tim008 | 0:dbbdb57ef01a | 82 | taster1.rise(&start); |
tim008 | 0:dbbdb57ef01a | 83 | taster2.rise(&reset); |
tim008 | 0:dbbdb57ef01a | 84 | while(1) { |
tim008 | 0:dbbdb57ef01a | 85 | display(timer.read()); |
tim008 | 0:dbbdb57ef01a | 86 | } |
tim008 | 0:dbbdb57ef01a | 87 | } |