Aleksandar Lukic
/
19E042PIM_T1_2020_0247
Aleksandar Lukic 2020/0247
main.cpp@0:029b9e09961c, 2021-11-06 (annotated)
- Committer:
- lule
- Date:
- Sat Nov 06 09:27:22 2021 +0000
- Revision:
- 0:029b9e09961c
Aleksandar Lukic 2020/0247
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lule | 0:029b9e09961c | 1 | //librrary import section |
lule | 0:029b9e09961c | 2 | #include "mbed.h" |
lule | 0:029b9e09961c | 3 | |
lule | 0:029b9e09961c | 4 | //macro definition section |
lule | 0:029b9e09961c | 5 | #define REFRESH_RATE_MS 20 |
lule | 0:029b9e09961c | 6 | #define BTN_DELAY_MS 40 |
lule | 0:029b9e09961c | 7 | |
lule | 0:029b9e09961c | 8 | //global variable section |
lule | 0:029b9e09961c | 9 | DigitalIn btn_up(PC_8); |
lule | 0:029b9e09961c | 10 | DigitalIn btn_down(PC_9); |
lule | 0:029b9e09961c | 11 | |
lule | 0:029b9e09961c | 12 | DigitalOut A(PA_10); |
lule | 0:029b9e09961c | 13 | DigitalOut B(PA_9); |
lule | 0:029b9e09961c | 14 | DigitalOut C(PA_8); |
lule | 0:029b9e09961c | 15 | DigitalOut D(PB_10); |
lule | 0:029b9e09961c | 16 | DigitalOut E(PB_5); |
lule | 0:029b9e09961c | 17 | DigitalOut F(PB_4); |
lule | 0:029b9e09961c | 18 | DigitalOut G(PB_3); |
lule | 0:029b9e09961c | 19 | |
lule | 0:029b9e09961c | 20 | DigitalOut sel_1(PB_6); |
lule | 0:029b9e09961c | 21 | DigitalOut sel_2(PC_7); |
lule | 0:029b9e09961c | 22 | |
lule | 0:029b9e09961c | 23 | //arrays |
lule | 0:029b9e09961c | 24 | char hex_number[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; |
lule | 0:029b9e09961c | 25 | DigitalOut display[7] = {A, B, C, D, E, F, G}; |
lule | 0:029b9e09961c | 26 | |
lule | 0:029b9e09961c | 27 | //function declaration section |
lule | 0:029b9e09961c | 28 | void hexToDisplay2(char hex){ |
lule | 0:029b9e09961c | 29 | sel_1.write(1); |
lule | 0:029b9e09961c | 30 | sel_2.write(0); |
lule | 0:029b9e09961c | 31 | |
lule | 0:029b9e09961c | 32 | for(int i = 6; i >= 0; i--) |
lule | 0:029b9e09961c | 33 | display[i] = (1<<i) & hex; |
lule | 0:029b9e09961c | 34 | } |
lule | 0:029b9e09961c | 35 | |
lule | 0:029b9e09961c | 36 | void hexToDisplay1(char hex){ |
lule | 0:029b9e09961c | 37 | sel_1.write(0); |
lule | 0:029b9e09961c | 38 | sel_2.write(1); |
lule | 0:029b9e09961c | 39 | |
lule | 0:029b9e09961c | 40 | for(int i = 6; i >= 0; i--) |
lule | 0:029b9e09961c | 41 | display[i] = (1<<i) & hex; |
lule | 0:029b9e09961c | 42 | } |
lule | 0:029b9e09961c | 43 | |
lule | 0:029b9e09961c | 44 | void clearDisplay(){ |
lule | 0:029b9e09961c | 45 | sel_1.write(1); |
lule | 0:029b9e09961c | 46 | sel_2.write(1); |
lule | 0:029b9e09961c | 47 | } |
lule | 0:029b9e09961c | 48 | |
lule | 0:029b9e09961c | 49 | void currNumToDisplay(char num){ |
lule | 0:029b9e09961c | 50 | char dec = num / 10; |
lule | 0:029b9e09961c | 51 | char dig = num % 10; |
lule | 0:029b9e09961c | 52 | |
lule | 0:029b9e09961c | 53 | if(dec){ |
lule | 0:029b9e09961c | 54 | hexToDisplay1(hex_number[dec]); |
lule | 0:029b9e09961c | 55 | wait_ms(REFRESH_RATE_MS); |
lule | 0:029b9e09961c | 56 | |
lule | 0:029b9e09961c | 57 | hexToDisplay2(hex_number[dig]); |
lule | 0:029b9e09961c | 58 | wait_ms(REFRESH_RATE_MS); |
lule | 0:029b9e09961c | 59 | } else { |
lule | 0:029b9e09961c | 60 | hexToDisplay2(hex_number[dig]); |
lule | 0:029b9e09961c | 61 | wait_ms(REFRESH_RATE_MS); |
lule | 0:029b9e09961c | 62 | } |
lule | 0:029b9e09961c | 63 | |
lule | 0:029b9e09961c | 64 | clearDisplay(); |
lule | 0:029b9e09961c | 65 | } |
lule | 0:029b9e09961c | 66 | |
lule | 0:029b9e09961c | 67 | //main function |
lule | 0:029b9e09961c | 68 | int main(){ |
lule | 0:029b9e09961c | 69 | char current_number = 0; |
lule | 0:029b9e09961c | 70 | |
lule | 0:029b9e09961c | 71 | while(true){ |
lule | 0:029b9e09961c | 72 | currNumToDisplay(current_number); |
lule | 0:029b9e09961c | 73 | |
lule | 0:029b9e09961c | 74 | if(!btn_up){ |
lule | 0:029b9e09961c | 75 | if(current_number == 0) current_number = 15; |
lule | 0:029b9e09961c | 76 | else current_number = (current_number - 1) % 16; |
lule | 0:029b9e09961c | 77 | } |
lule | 0:029b9e09961c | 78 | |
lule | 0:029b9e09961c | 79 | |
lule | 0:029b9e09961c | 80 | if(!btn_down) current_number = (current_number + 1) % 16; |
lule | 0:029b9e09961c | 81 | //wait_ms(BTN_DELAY_MS); |
lule | 0:029b9e09961c | 82 | } |
lule | 0:029b9e09961c | 83 | } |
lule | 0:029b9e09961c | 84 | |
lule | 0:029b9e09961c | 85 | //function definition section |