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.

Dependencies:   mbed led

Fork of Projekt_Brckovic by Mario Brcković

Committer:
Mariobrckovic
Date:
Tue Apr 06 08:37:55 2021 +0000
Revision:
1:7966074bef96
Parent:
0:4938a9aef8b4
.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mariobrckovic 0:4938a9aef8b4 1 #include "mbed.h"
Mariobrckovic 0:4938a9aef8b4 2 #include "led.h"
Mariobrckovic 0:4938a9aef8b4 3 //definiranje izlaza
Mariobrckovic 0:4938a9aef8b4 4 LED led1(D11);
Mariobrckovic 0:4938a9aef8b4 5 LED led2(D12);
Mariobrckovic 0:4938a9aef8b4 6 LED led3(D13);
Mariobrckovic 0:4938a9aef8b4 7 BusOut Seg1(D2,D3,D4,D5,D6,D7,D8,D9);
Mariobrckovic 0:4938a9aef8b4 8 //definiranje timera
Mariobrckovic 0:4938a9aef8b4 9 Timer debounce;
Mariobrckovic 0:4938a9aef8b4 10 Ticker flipper;
Mariobrckovic 0:4938a9aef8b4 11 Timer timer;
Mariobrckovic 0:4938a9aef8b4 12
Mariobrckovic 0:4938a9aef8b4 13 //definiranje interrupt buttona
Mariobrckovic 0:4938a9aef8b4 14 InterruptIn button(USER_BUTTON);
Mariobrckovic 0:4938a9aef8b4 15
Mariobrckovic 0:4938a9aef8b4 16 //funkcija za 7segmentni display
Mariobrckovic 0:4938a9aef8b4 17 char SegConvert(int SegValue) {
Mariobrckovic 0:4938a9aef8b4 18 char SegByte=0x00;
Mariobrckovic 0:4938a9aef8b4 19 switch (SegValue) {
Mariobrckovic 0:4938a9aef8b4 20 case 0 : SegByte = 0x3F;break;
Mariobrckovic 0:4938a9aef8b4 21 case 1 : SegByte = 0x06;break;
Mariobrckovic 0:4938a9aef8b4 22 case 2 : SegByte = 0x5B;break;
Mariobrckovic 0:4938a9aef8b4 23 case 3 : SegByte = 0x4F;break;
Mariobrckovic 0:4938a9aef8b4 24 case 4 : SegByte = 0x66;break;
Mariobrckovic 0:4938a9aef8b4 25 case 5 : SegByte = 0x6D;break;
Mariobrckovic 0:4938a9aef8b4 26 case 6 : SegByte = 0x7D;break;
Mariobrckovic 0:4938a9aef8b4 27 case 7 : SegByte = 0x07;break;
Mariobrckovic 0:4938a9aef8b4 28 case 8 : SegByte = 0x7F;break;
Mariobrckovic 0:4938a9aef8b4 29 case 9 : SegByte = 0x6F;break;
Mariobrckovic 0:4938a9aef8b4 30 case 10 : SegByte = 0x00;break;
Mariobrckovic 0:4938a9aef8b4 31 }
Mariobrckovic 0:4938a9aef8b4 32 return SegByte;
Mariobrckovic 0:4938a9aef8b4 33 }
Mariobrckovic 0:4938a9aef8b4 34 //funkcija tickera
Mariobrckovic 0:4938a9aef8b4 35 void ticker(){
Mariobrckovic 0:4938a9aef8b4 36 led3.promjena();
Mariobrckovic 0:4938a9aef8b4 37 }
Mariobrckovic 0:4938a9aef8b4 38 //funkcija prekida
Mariobrckovic 0:4938a9aef8b4 39 void prekid(){
Mariobrckovic 0:4938a9aef8b4 40 if(debounce.read_ms()>200){
Mariobrckovic 0:4938a9aef8b4 41 led1.stanje(0);
Mariobrckovic 0:4938a9aef8b4 42 led2.stanje(0);
Mariobrckovic 0:4938a9aef8b4 43 led3.stanje(0);
Mariobrckovic 0:4938a9aef8b4 44 Seg1=SegConvert(10);
Mariobrckovic 0:4938a9aef8b4 45 wait(5.0);
Mariobrckovic 0:4938a9aef8b4 46 if(timer.read()<=9){
Mariobrckovic 0:4938a9aef8b4 47
Mariobrckovic 0:4938a9aef8b4 48 led1.stanje(1);
Mariobrckovic 0:4938a9aef8b4 49 led2.stanje(0);
Mariobrckovic 0:4938a9aef8b4 50 }
Mariobrckovic 0:4938a9aef8b4 51 else{
Mariobrckovic 0:4938a9aef8b4 52 led1.stanje(0);
Mariobrckovic 0:4938a9aef8b4 53 led2.stanje(1);
Mariobrckovic 0:4938a9aef8b4 54 }
Mariobrckovic 0:4938a9aef8b4 55 }
Mariobrckovic 0:4938a9aef8b4 56 debounce.reset();
Mariobrckovic 0:4938a9aef8b4 57
Mariobrckovic 0:4938a9aef8b4 58 }
Mariobrckovic 0:4938a9aef8b4 59 //glavna funkcija
Mariobrckovic 0:4938a9aef8b4 60 int main() {
Mariobrckovic 0:4938a9aef8b4 61 led1.stanje(1);
Mariobrckovic 0:4938a9aef8b4 62 led2.stanje(0);
Mariobrckovic 0:4938a9aef8b4 63 led3.stanje(0);
Mariobrckovic 0:4938a9aef8b4 64 debounce.start();
Mariobrckovic 0:4938a9aef8b4 65 button.rise(&prekid);
Mariobrckovic 0:4938a9aef8b4 66
Mariobrckovic 0:4938a9aef8b4 67 flipper.attach(&ticker,0.5);
Mariobrckovic 0:4938a9aef8b4 68 while(1){
Mariobrckovic 0:4938a9aef8b4 69 timer.start();
Mariobrckovic 0:4938a9aef8b4 70 for(int i=9;i>=0;i--){
Mariobrckovic 0:4938a9aef8b4 71 Seg1=SegConvert(i);
Mariobrckovic 0:4938a9aef8b4 72
Mariobrckovic 0:4938a9aef8b4 73 wait(1.0);
Mariobrckovic 0:4938a9aef8b4 74 }
Mariobrckovic 0:4938a9aef8b4 75 led1.promjena();
Mariobrckovic 0:4938a9aef8b4 76 led2.promjena();
Mariobrckovic 0:4938a9aef8b4 77 for(int j=5;j>=0;j--){
Mariobrckovic 0:4938a9aef8b4 78 Seg1=SegConvert(j);
Mariobrckovic 0:4938a9aef8b4 79 wait(1.0);
Mariobrckovic 0:4938a9aef8b4 80 }
Mariobrckovic 0:4938a9aef8b4 81 led2.promjena();
Mariobrckovic 0:4938a9aef8b4 82 led1.promjena();
Mariobrckovic 0:4938a9aef8b4 83 timer.stop();
Mariobrckovic 0:4938a9aef8b4 84
Mariobrckovic 0:4938a9aef8b4 85 timer.reset();
Mariobrckovic 0:4938a9aef8b4 86 }
Mariobrckovic 0:4938a9aef8b4 87 }
Mariobrckovic 0:4938a9aef8b4 88
Mariobrckovic 0:4938a9aef8b4 89
Mariobrckovic 0:4938a9aef8b4 90
Mariobrckovic 0:4938a9aef8b4 91