Aleksandar Lukic 2020/0247

Dependencies:   mbed

Committer:
lule
Date:
Sat Nov 06 09:27:22 2021 +0000
Revision:
0:029b9e09961c
Aleksandar Lukic 2020/0247

Who changed what in which revision?

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