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
- Committer:
- Mariobrckovic
- Date:
- 2021-04-06
- Revision:
- 1:7966074bef96
- Parent:
- 0:4938a9aef8b4
File content as of revision 1:7966074bef96:
#include "mbed.h" #include "led.h" //definiranje izlaza LED led1(D11); LED led2(D12); LED led3(D13); BusOut Seg1(D2,D3,D4,D5,D6,D7,D8,D9); //definiranje timera Timer debounce; Ticker flipper; Timer timer; //definiranje interrupt buttona InterruptIn button(USER_BUTTON); //funkcija za 7segmentni display char SegConvert(int SegValue) { char SegByte=0x00; switch (SegValue) { case 0 : SegByte = 0x3F;break; case 1 : SegByte = 0x06;break; case 2 : SegByte = 0x5B;break; case 3 : SegByte = 0x4F;break; case 4 : SegByte = 0x66;break; case 5 : SegByte = 0x6D;break; case 6 : SegByte = 0x7D;break; case 7 : SegByte = 0x07;break; case 8 : SegByte = 0x7F;break; case 9 : SegByte = 0x6F;break; case 10 : SegByte = 0x00;break; } return SegByte; } //funkcija tickera void ticker(){ led3.promjena(); } //funkcija prekida void prekid(){ if(debounce.read_ms()>200){ led1.stanje(0); led2.stanje(0); led3.stanje(0); Seg1=SegConvert(10); wait(5.0); if(timer.read()<=9){ led1.stanje(1); led2.stanje(0); } else{ led1.stanje(0); led2.stanje(1); } } debounce.reset(); } //glavna funkcija int main() { led1.stanje(1); led2.stanje(0); led3.stanje(0); debounce.start(); button.rise(&prekid); flipper.attach(&ticker,0.5); while(1){ timer.start(); for(int i=9;i>=0;i--){ Seg1=SegConvert(i); wait(1.0); } led1.promjena(); led2.promjena(); for(int j=5;j>=0;j--){ Seg1=SegConvert(j); wait(1.0); } led2.promjena(); led1.promjena(); timer.stop(); timer.reset(); } }