Granulo Eldar Hasanic Nadin

Dependencies:   mbed

Committer:
tim003
Date:
Mon Apr 07 09:55:33 2014 +0000
Revision:
0:6b0aff412984
LV6-PAI-Grupa2-Tim003

Who changed what in which revision?

UserRevisionLine numberNew 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 }