Beganovic Benjamin Mehanovic Adnan

Dependencies:   mbed

Committer:
tim008
Date:
Mon Apr 07 09:38:27 2014 +0000
Revision:
0:dbbdb57ef01a
PAI_LV6_GRUPA2_TIM008

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tim008 0:dbbdb57ef01a 1 #include "mbed.h"
tim008 0:dbbdb57ef01a 2
tim008 0:dbbdb57ef01a 3 using namespace std;
tim008 0:dbbdb57ef01a 4
tim008 0:dbbdb57ef01a 5 BusOut segments(dp18, dp4, dp28, dp6, dp5, dp27, dp26);
tim008 0:dbbdb57ef01a 6 InterruptIn taster1(dp1);
tim008 0:dbbdb57ef01a 7 InterruptIn taster2(dp2);
tim008 0:dbbdb57ef01a 8 BusOut digit(dp23, dp24, dp25);
tim008 0:dbbdb57ef01a 9 DigitalOut decimal_point(dp17);
tim008 0:dbbdb57ef01a 10
tim008 0:dbbdb57ef01a 11 Timer timer;
tim008 0:dbbdb57ef01a 12 Timer debounce1;
tim008 0:dbbdb57ef01a 13 Timer debounce2;
tim008 0:dbbdb57ef01a 14 Ticker osvjezi_tiker;
tim008 0:dbbdb57ef01a 15
tim008 0:dbbdb57ef01a 16 int red_br_cifre;
tim008 0:dbbdb57ef01a 17 int cifra_za_ispis;
tim008 0:dbbdb57ef01a 18 int prva_cifra, druga_cifra, treca_cifra;
tim008 0:dbbdb57ef01a 19 int predefined_segments[10] = {0x01, 0x4f, 0x12, 0x06, 0x4c, 0x24, 0x20, 0x0f, 0x00, 0x04};
tim008 0:dbbdb57ef01a 20 int chars[6] = {0x08,0x60,0x31,0x42,0x30,0x38};
tim008 0:dbbdb57ef01a 21
tim008 0:dbbdb57ef01a 22 void osvjezi()
tim008 0:dbbdb57ef01a 23 {
tim008 0:dbbdb57ef01a 24 red_br_cifre=3;//prva cifra
tim008 0:dbbdb57ef01a 25 cifra_za_ispis=predefined_segments[prva_cifra];
tim008 0:dbbdb57ef01a 26
tim008 0:dbbdb57ef01a 27 red_br_cifre=5;//druga cifra
tim008 0:dbbdb57ef01a 28 cifra_za_ispis=predefined_segments[druga_cifra];
tim008 0:dbbdb57ef01a 29
tim008 0:dbbdb57ef01a 30 red_br_cifre=6;//treca cifra
tim008 0:dbbdb57ef01a 31 cifra_za_ispis=predefined_segments[treca_cifra];
tim008 0:dbbdb57ef01a 32 }
tim008 0:dbbdb57ef01a 33
tim008 0:dbbdb57ef01a 34 void display(float current_timer)
tim008 0:dbbdb57ef01a 35 {
tim008 0:dbbdb57ef01a 36 int timer_digits[3] = { (int)(current_timer / 10.) % 10,
tim008 0:dbbdb57ef01a 37 (int)(current_timer) % 10,
tim008 0:dbbdb57ef01a 38 (int)(current_timer * 10.) % 10
tim008 0:dbbdb57ef01a 39 };
tim008 0:dbbdb57ef01a 40
tim008 0:dbbdb57ef01a 41 for(int i = 1; i <= 4; i = i * 2) {
tim008 0:dbbdb57ef01a 42 digit = ~i;
tim008 0:dbbdb57ef01a 43 segments = predefined_segments[ timer_digits[i / 2] ];
tim008 0:dbbdb57ef01a 44 decimal_point = (i == 2) ? 0 : 1;
tim008 0:dbbdb57ef01a 45 osvjezi_tiker.attach_us(&osvjezi, 1000);
tim008 0:dbbdb57ef01a 46 }
tim008 0:dbbdb57ef01a 47 }
tim008 0:dbbdb57ef01a 48
tim008 0:dbbdb57ef01a 49 bool stopiran = true;
tim008 0:dbbdb57ef01a 50
tim008 0:dbbdb57ef01a 51 void start()
tim008 0:dbbdb57ef01a 52 {
tim008 0:dbbdb57ef01a 53 if(debounce1.read_ms() > 200) {
tim008 0:dbbdb57ef01a 54 if(stopiran) {
tim008 0:dbbdb57ef01a 55 timer.start();
tim008 0:dbbdb57ef01a 56 stopiran = false;
tim008 0:dbbdb57ef01a 57 } else {
tim008 0:dbbdb57ef01a 58 timer.stop();
tim008 0:dbbdb57ef01a 59 stopiran = true;
tim008 0:dbbdb57ef01a 60 }
tim008 0:dbbdb57ef01a 61 debounce1.reset();
tim008 0:dbbdb57ef01a 62 }
tim008 0:dbbdb57ef01a 63
tim008 0:dbbdb57ef01a 64 }
tim008 0:dbbdb57ef01a 65
tim008 0:dbbdb57ef01a 66 void reset()
tim008 0:dbbdb57ef01a 67 {
tim008 0:dbbdb57ef01a 68 if(debounce2.read_ms() > 200) {
tim008 0:dbbdb57ef01a 69 timer.reset();
tim008 0:dbbdb57ef01a 70 timer.stop();
tim008 0:dbbdb57ef01a 71 stopiran = true;
tim008 0:dbbdb57ef01a 72 display(0.00);
tim008 0:dbbdb57ef01a 73 debounce2.reset();
tim008 0:dbbdb57ef01a 74 }
tim008 0:dbbdb57ef01a 75 }
tim008 0:dbbdb57ef01a 76
tim008 0:dbbdb57ef01a 77
tim008 0:dbbdb57ef01a 78 int main()
tim008 0:dbbdb57ef01a 79 {
tim008 0:dbbdb57ef01a 80 debounce1.start();
tim008 0:dbbdb57ef01a 81 debounce2.start();
tim008 0:dbbdb57ef01a 82 taster1.rise(&start);
tim008 0:dbbdb57ef01a 83 taster2.rise(&reset);
tim008 0:dbbdb57ef01a 84 while(1) {
tim008 0:dbbdb57ef01a 85 display(timer.read());
tim008 0:dbbdb57ef01a 86 }
tim008 0:dbbdb57ef01a 87 }