Na početku programa upaljena je crvena led dioda i program počinje odbrojavanje od 9 do 0 na 7-segmentnom displayu, nakon što završi odbrojavanje pali se zelena led dioda i ponovno počinje odbrojavanje od 5 do 0, i nakon toga opet se pali crvena led dioda i tako u krug. Pritiskom na integrirano tipkalo, pokreće se hardverski interrupt koji gasi sve ledice i display te prekine program 5 sekundi, nakon tih 5 sekundi program nastavlja s radom tamo gdje je stao. Žuta led dioda radi kao ticker sa treptanjem svakih pola sekunde.
Fork of Projekt_Brckovic by
main.cpp
00001 #include "mbed.h" 00002 #include "led.h" 00003 //definiranje izlaza 00004 LED led1(D11); 00005 LED led2(D12); 00006 LED led3(D13); 00007 BusOut Seg1(D2,D3,D4,D5,D6,D7,D8,D9); 00008 //definiranje timera 00009 Timer debounce; 00010 Ticker flipper; 00011 Timer timer; 00012 00013 //definiranje interrupt buttona 00014 InterruptIn button(USER_BUTTON); 00015 00016 //funkcija za 7segmentni display 00017 char SegConvert(int SegValue) { 00018 char SegByte=0x00; 00019 switch (SegValue) { 00020 case 0 : SegByte = 0x3F;break; 00021 case 1 : SegByte = 0x06;break; 00022 case 2 : SegByte = 0x5B;break; 00023 case 3 : SegByte = 0x4F;break; 00024 case 4 : SegByte = 0x66;break; 00025 case 5 : SegByte = 0x6D;break; 00026 case 6 : SegByte = 0x7D;break; 00027 case 7 : SegByte = 0x07;break; 00028 case 8 : SegByte = 0x7F;break; 00029 case 9 : SegByte = 0x6F;break; 00030 case 10 : SegByte = 0x00;break; 00031 } 00032 return SegByte; 00033 } 00034 //funkcija tickera 00035 void ticker(){ 00036 led3.promjena(); 00037 } 00038 //funkcija prekida 00039 void prekid(){ 00040 if(debounce.read_ms()>200){ 00041 led1.stanje(0); 00042 led2.stanje(0); 00043 led3.stanje(0); 00044 Seg1=SegConvert(10); 00045 wait(5.0); 00046 if(timer.read()<=9){ 00047 00048 led1.stanje(1); 00049 led2.stanje(0); 00050 } 00051 else{ 00052 led1.stanje(0); 00053 led2.stanje(1); 00054 } 00055 } 00056 debounce.reset(); 00057 00058 } 00059 //glavna funkcija 00060 int main() { 00061 led1.stanje(1); 00062 led2.stanje(0); 00063 led3.stanje(0); 00064 debounce.start(); 00065 button.rise(&prekid); 00066 00067 flipper.attach(&ticker,0.5); 00068 while(1){ 00069 timer.start(); 00070 for(int i=9;i>=0;i--){ 00071 Seg1=SegConvert(i); 00072 00073 wait(1.0); 00074 } 00075 led1.promjena(); 00076 led2.promjena(); 00077 for(int j=5;j>=0;j--){ 00078 Seg1=SegConvert(j); 00079 wait(1.0); 00080 } 00081 led2.promjena(); 00082 led1.promjena(); 00083 timer.stop(); 00084 00085 timer.reset(); 00086 } 00087 } 00088 00089 00090 00091
Generated on Thu Aug 18 2022 18:30:42 by
1.7.2
TVZ2020
