Isidora Milivojevic 2020/0214

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* 
00002 * Isidora Milivojević
00003 * 2020/0214
00004 * ETF Beograd
00005  */
00006  
00007  //include segment
00008 #include "mbed.h"
00009 
00010 
00011 // definisanje makroa
00012 #define WAIT_MS 100 
00013 #define WAIT_MS2 30
00014 #define ACTIVE 0 
00015 #define NOT_ACTIVE 1       
00016                                   
00017  DigitalIn button(BUTTON1);
00018 DigitalOut select1(PC_7);
00019 DigitalOut select2(PB_6);
00020 BusOut display(PA_10, PA_9, PA_8, PB_10, PB_5, PB_4, PB_3);
00021             //   a       b    c     d      e     f     g
00022 
00023 
00024 //definisanje glavne funkcije
00025 int main()
00026 {   
00027     int button_released = 1;
00028     int max_dig = 0b0010000;
00029     int max_dig2 = 0b0010010;
00030     int max_1_reached = 0;
00031     int max_2_reached = 0;
00032     int i = 0;   
00033     int j = 0; 
00034     int digits[11] = { 0b1000000, //0
00035                        0b1111001, //1
00036                        0b0100100, //2
00037                        0b0110000, //3
00038                        0b0011001, //4
00039                        0b0010010, //5
00040                        0b0000010, //6
00041                        0b1111000, //7
00042                        0b0000000, //8
00043                        0b0010000, //9
00044                      };
00045     while (true) {
00046         select1.write(ACTIVE);
00047         select2.write(NOT_ACTIVE);
00048         if(!button){
00049             if(button_released){
00050                 if(!max_1_reached && !max_2_reached){
00051                     select1.write(ACTIVE);
00052                     select2.write(NOT_ACTIVE);
00053                     display.write(digits[i]);
00054                     if(display.read() == max_dig) max_1_reached = 1;
00055                     i++;
00056                 } else if(max_1_reached && !max_2_reached){
00057                     select1.write(NOT_ACTIVE);
00058                     select2.write(ACTIVE);
00059                     display.write(digits[1]);
00060                     wait_ms(WAIT_MS2);                    
00061                     select1.write(ACTIVE);
00062                     select2.write(NOT_ACTIVE);
00063                     display.write(digits[j]);
00064                     wait_ms(WAIT_MS2);
00065                     if(display.read() == max_dig2) max_2_reached = 1;
00066                     j++;
00067                 } else if(max_1_reached && max_2_reached){
00068                     select1.write(ACTIVE);
00069                     select2.write(NOT_ACTIVE);
00070                     display.write(digits[0]);    
00071                     i = 0;
00072                     max_1_reached = 0;
00073                     max_2_reached = 0;
00074                 }
00075                 button_released = 0;
00076             } else {
00077                 button_released = 1;
00078             }
00079         }
00080         wait_ms(WAIT_MS);
00081     }
00082 }