tim003 tim003
/
LV6-PAI-Grupa2-Tim003-Zadatak1
Granulo Eldar Hasanic Nadin
main.cpp@0:6b0aff412984, 2014-04-07 (annotated)
- Committer:
- tim003
- Date:
- Mon Apr 07 09:55:33 2014 +0000
- Revision:
- 0:6b0aff412984
LV6-PAI-Grupa2-Tim003
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tim003 | 0:6b0aff412984 | 1 | #include "mbed.h" |
tim003 | 0:6b0aff412984 | 2 | |
tim003 | 0:6b0aff412984 | 3 | #define EYE_WAIT_TIME 10 |
tim003 | 0:6b0aff412984 | 4 | |
tim003 | 0:6b0aff412984 | 5 | Ticker tick1, tick2, tick3; |
tim003 | 0:6b0aff412984 | 6 | Timer timer; |
tim003 | 0:6b0aff412984 | 7 | |
tim003 | 0:6b0aff412984 | 8 | BusOut segments(dp18, dp4, dp28, dp6, dp5, dp27, dp26); |
tim003 | 0:6b0aff412984 | 9 | BusOut digit(dp23, dp24, dp25); |
tim003 | 0:6b0aff412984 | 10 | DigitalOut decimal_point(dp17); |
tim003 | 0:6b0aff412984 | 11 | |
tim003 | 0:6b0aff412984 | 12 | InterruptIn taster1(dp1); |
tim003 | 0:6b0aff412984 | 13 | InterruptIn taster2(dp2); |
tim003 | 0:6b0aff412984 | 14 | |
tim003 | 0:6b0aff412984 | 15 | int digit_buffer[3] = {0, 0, 0}; |
tim003 | 0:6b0aff412984 | 16 | unsigned int predefined_segments[19] = {0x01, 0x4f, 0x12, 0x06, 0x4c, |
tim003 | 0:6b0aff412984 | 17 | 0x24, 0x20, 0x0f, 0x00, 0x04, |
tim003 | 0:6b0aff412984 | 18 | 0x08,0x60,0x31,0x42,0x30,0x38, |
tim003 | 0:6b0aff412984 | 19 | ~(0x01), 0x36, ~0}; |
tim003 | 0:6b0aff412984 | 20 | |
tim003 | 0:6b0aff412984 | 21 | void display_number() { |
tim003 | 0:6b0aff412984 | 22 | float num = timer.read(); |
tim003 | 0:6b0aff412984 | 23 | unsigned const int digit_buffer[3] = {(int)(num / 10) % 10,(int)(num) % 10,(int)(num * 10) % 10}; |
tim003 | 0:6b0aff412984 | 24 | |
tim003 | 0:6b0aff412984 | 25 | for(int i = 1; i <= 4; i = i * 2) { |
tim003 | 0:6b0aff412984 | 26 | digit = ~i; |
tim003 | 0:6b0aff412984 | 27 | segments = predefined_segments[ digit_buffer[i / 2] ]; |
tim003 | 0:6b0aff412984 | 28 | decimal_point = !(i == 2); |
tim003 | 0:6b0aff412984 | 29 | |
tim003 | 0:6b0aff412984 | 30 | } |
tim003 | 0:6b0aff412984 | 31 | } |
tim003 | 0:6b0aff412984 | 32 | |
tim003 | 0:6b0aff412984 | 33 | void display_first() { |
tim003 | 0:6b0aff412984 | 34 | __disable_irq(); |
tim003 | 0:6b0aff412984 | 35 | float num = timer.read(); |
tim003 | 0:6b0aff412984 | 36 | unsigned const int digit_buffer[3] = { |
tim003 | 0:6b0aff412984 | 37 | (int)(num / 10) % 10, |
tim003 | 0:6b0aff412984 | 38 | (int)(num) % 10, |
tim003 | 0:6b0aff412984 | 39 | (int)(num * 10) % 10 |
tim003 | 0:6b0aff412984 | 40 | }; |
tim003 | 0:6b0aff412984 | 41 | int i = 1; |
tim003 | 0:6b0aff412984 | 42 | digit = ~i; |
tim003 | 0:6b0aff412984 | 43 | segments = predefined_segments[ digit_buffer[i / 2] ]; |
tim003 | 0:6b0aff412984 | 44 | decimal_point = !(i == 2); |
tim003 | 0:6b0aff412984 | 45 | __enable_irq(); |
tim003 | 0:6b0aff412984 | 46 | } |
tim003 | 0:6b0aff412984 | 47 | |
tim003 | 0:6b0aff412984 | 48 | void display_second() { |
tim003 | 0:6b0aff412984 | 49 | __disable_irq(); |
tim003 | 0:6b0aff412984 | 50 | float num = timer.read(); |
tim003 | 0:6b0aff412984 | 51 | unsigned const int digit_buffer[3] = { |
tim003 | 0:6b0aff412984 | 52 | (int)(num / 10) % 10, |
tim003 | 0:6b0aff412984 | 53 | (int)(num) % 10, |
tim003 | 0:6b0aff412984 | 54 | (int)(num * 10) % 10 |
tim003 | 0:6b0aff412984 | 55 | }; |
tim003 | 0:6b0aff412984 | 56 | int i = 2; |
tim003 | 0:6b0aff412984 | 57 | digit = ~i; |
tim003 | 0:6b0aff412984 | 58 | segments = predefined_segments[ digit_buffer[i / 2] ]; |
tim003 | 0:6b0aff412984 | 59 | decimal_point = !(i == 2); |
tim003 | 0:6b0aff412984 | 60 | __enable_irq(); |
tim003 | 0:6b0aff412984 | 61 | } |
tim003 | 0:6b0aff412984 | 62 | |
tim003 | 0:6b0aff412984 | 63 | void display_third() { |
tim003 | 0:6b0aff412984 | 64 | __disable_irq(); |
tim003 | 0:6b0aff412984 | 65 | float num = timer.read(); |
tim003 | 0:6b0aff412984 | 66 | unsigned const int digit_buffer[3] = { |
tim003 | 0:6b0aff412984 | 67 | (int)(num / 10) % 10, |
tim003 | 0:6b0aff412984 | 68 | (int)(num) % 10, |
tim003 | 0:6b0aff412984 | 69 | (int)(num * 10) % 10 |
tim003 | 0:6b0aff412984 | 70 | }; |
tim003 | 0:6b0aff412984 | 71 | int i = 4; |
tim003 | 0:6b0aff412984 | 72 | digit = ~i; |
tim003 | 0:6b0aff412984 | 73 | segments = predefined_segments[ digit_buffer[i / 2] ]; |
tim003 | 0:6b0aff412984 | 74 | decimal_point = !(i == 2); |
tim003 | 0:6b0aff412984 | 75 | __enable_irq(); |
tim003 | 0:6b0aff412984 | 76 | } |
tim003 | 0:6b0aff412984 | 77 | |
tim003 | 0:6b0aff412984 | 78 | int i = 0; |
tim003 | 0:6b0aff412984 | 79 | void pause() { |
tim003 | 0:6b0aff412984 | 80 | __disable_irq(); |
tim003 | 0:6b0aff412984 | 81 | (i++ % 2 == 0) ? timer.stop() : timer.start(); |
tim003 | 0:6b0aff412984 | 82 | __enable_irq(); |
tim003 | 0:6b0aff412984 | 83 | } |
tim003 | 0:6b0aff412984 | 84 | |
tim003 | 0:6b0aff412984 | 85 | |
tim003 | 0:6b0aff412984 | 86 | void restart() |
tim003 | 0:6b0aff412984 | 87 | { |
tim003 | 0:6b0aff412984 | 88 | timer.reset(); |
tim003 | 0:6b0aff412984 | 89 | |
tim003 | 0:6b0aff412984 | 90 | } |
tim003 | 0:6b0aff412984 | 91 | int main() { |
tim003 | 0:6b0aff412984 | 92 | |
tim003 | 0:6b0aff412984 | 93 | |
tim003 | 0:6b0aff412984 | 94 | taster2.rise(&pause); |
tim003 | 0:6b0aff412984 | 95 | taster1.rise(&restart); |
tim003 | 0:6b0aff412984 | 96 | |
tim003 | 0:6b0aff412984 | 97 | timer.start(); |
tim003 | 0:6b0aff412984 | 98 | display_first(); |
tim003 | 0:6b0aff412984 | 99 | display_second(); |
tim003 | 0:6b0aff412984 | 100 | display_third(); |
tim003 | 0:6b0aff412984 | 101 | tick1.attach(&display_first, .001); |
tim003 | 0:6b0aff412984 | 102 | tick2.attach(&display_second, .002); |
tim003 | 0:6b0aff412984 | 103 | tick3.attach(&display_third, .003); |
tim003 | 0:6b0aff412984 | 104 | while(true); |
tim003 | 0:6b0aff412984 | 105 | |
tim003 | 0:6b0aff412984 | 106 | |
tim003 | 0:6b0aff412984 | 107 | } |