Ispis na tri 7-segmentna display-a

Dependencies:   mbed trostrukiSedamSeg

https://os.mbed.com/media/uploads/mmaretic/prototip_volana_formule_1.pdf

Committer:
mmaretic
Date:
Thu Dec 02 19:24:55 2021 +0000
Revision:
2:3227eef26c80
Parent:
0:1e6d734c8f95
Child:
3:f941bac1f8a9
Komentirana verzija

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mmaretic 0:1e6d734c8f95 1 #include "mbed.h"
mmaretic 0:1e6d734c8f95 2 #include "trostrukiSedamSeg.h"
mmaretic 0:1e6d734c8f95 3
mmaretic 2:3227eef26c80 4 Ticker DrsDebouncer; // Timeri za debouncanje interrupta
mmaretic 0:1e6d734c8f95 5 Ticker UpozorenjaDebouncer;
mmaretic 2:3227eef26c80 6 Ticker Multiplexer; // Timer za multipleksiranje displaya
mmaretic 2:3227eef26c80 7 InterruptIn DrsButton(PB_10); // Intterupt tipkala
mmaretic 0:1e6d734c8f95 8 InterruptIn UpozorenjaButton(PB_4);
mmaretic 2:3227eef26c80 9 AnalogIn Ain(PC_0); // Analogni ulaz za brzinu
mmaretic 2:3227eef26c80 10 PwmOut servo(PA_10); // Pwm izlaz za ukljucivanje serva
mmaretic 0:1e6d734c8f95 11
mmaretic 2:3227eef26c80 12 char zaPrikazati[4];
mmaretic 0:1e6d734c8f95 13
mmaretic 2:3227eef26c80 14 SedamSeg prikaz; // Inicijalizacija klase SedamSeg
mmaretic 0:1e6d734c8f95 15
mmaretic 2:3227eef26c80 16 // Enum za koristenje u switch case-u
mmaretic 0:1e6d734c8f95 17 volatile enum state{
mmaretic 0:1e6d734c8f95 18 BRZINA,
mmaretic 0:1e6d734c8f95 19 DRS,
mmaretic 0:1e6d734c8f95 20 UPOZORENJA
mmaretic 0:1e6d734c8f95 21 } s;
mmaretic 0:1e6d734c8f95 22
mmaretic 2:3227eef26c80 23 // Pototipi funkcija
mmaretic 0:1e6d734c8f95 24 void drsInt();
mmaretic 0:1e6d734c8f95 25 void debouncedDrsInt();
mmaretic 0:1e6d734c8f95 26 void upozorenjaInt();
mmaretic 0:1e6d734c8f95 27 void debouncedUpozorenjaInt();
mmaretic 0:1e6d734c8f95 28 void displaySeg();
mmaretic 0:1e6d734c8f95 29
mmaretic 0:1e6d734c8f95 30 int main() {
mmaretic 0:1e6d734c8f95 31
mmaretic 0:1e6d734c8f95 32 float ADCvalue;
mmaretic 0:1e6d734c8f95 33
mmaretic 0:1e6d734c8f95 34 servo.period_ms(20);
mmaretic 0:1e6d734c8f95 35 servo.pulsewidth_us(1250);
mmaretic 0:1e6d734c8f95 36
mmaretic 0:1e6d734c8f95 37 DrsButton.mode(PullDown);
mmaretic 0:1e6d734c8f95 38 DrsButton.rise(&drsInt);
mmaretic 0:1e6d734c8f95 39 DrsButton.fall(&drsInt);
mmaretic 0:1e6d734c8f95 40
mmaretic 0:1e6d734c8f95 41 UpozorenjaButton.mode(PullDown);
mmaretic 0:1e6d734c8f95 42 UpozorenjaButton.rise(&upozorenjaInt);
mmaretic 0:1e6d734c8f95 43 UpozorenjaButton.fall(&upozorenjaInt);
mmaretic 0:1e6d734c8f95 44
mmaretic 0:1e6d734c8f95 45 Multiplexer.attach(&displaySeg,0.005);
mmaretic 0:1e6d734c8f95 46
mmaretic 0:1e6d734c8f95 47 while(1){
mmaretic 0:1e6d734c8f95 48 switch(s){
mmaretic 0:1e6d734c8f95 49 case DRS:
mmaretic 0:1e6d734c8f95 50 servo.pulsewidth_us(2000);
mmaretic 0:1e6d734c8f95 51 sprintf(zaPrikazati,"%s","DRS");
mmaretic 0:1e6d734c8f95 52 break;
mmaretic 0:1e6d734c8f95 53 case UPOZORENJA:
mmaretic 0:1e6d734c8f95 54 servo.pulsewidth_us(1250);
mmaretic 0:1e6d734c8f95 55 sprintf(zaPrikazati,"%s","UPO");
mmaretic 0:1e6d734c8f95 56 break;
mmaretic 0:1e6d734c8f95 57 default:
mmaretic 0:1e6d734c8f95 58 servo.pulsewidth_us(1250);
mmaretic 2:3227eef26c80 59
mmaretic 2:3227eef26c80 60 // Skaliranje ulaza s 0 - 1 na 0 - 300kmh
mmaretic 0:1e6d734c8f95 61 ADCvalue = Ain - 0.03;
mmaretic 0:1e6d734c8f95 62 ADCvalue = (ADCvalue < 0) ? 0 : ADCvalue;
mmaretic 0:1e6d734c8f95 63 ADCvalue *= 309.27;
mmaretic 2:3227eef26c80 64
mmaretic 0:1e6d734c8f95 65 sprintf(zaPrikazati,"%i",(int)ADCvalue);
mmaretic 2:3227eef26c80 66
mmaretic 0:1e6d734c8f95 67 if(ADCvalue < 10){
mmaretic 0:1e6d734c8f95 68 zaPrikazati[2] = zaPrikazati[0];
mmaretic 0:1e6d734c8f95 69 zaPrikazati[0] = '0';
mmaretic 0:1e6d734c8f95 70 zaPrikazati[1] = '0';
mmaretic 0:1e6d734c8f95 71 }
mmaretic 0:1e6d734c8f95 72 else if(ADCvalue < 100){
mmaretic 0:1e6d734c8f95 73 zaPrikazati[2] = zaPrikazati[1];
mmaretic 0:1e6d734c8f95 74 zaPrikazati[1] = zaPrikazati[0];
mmaretic 0:1e6d734c8f95 75 zaPrikazati[0] = '0';
mmaretic 0:1e6d734c8f95 76 }
mmaretic 0:1e6d734c8f95 77 break;
mmaretic 0:1e6d734c8f95 78 }
mmaretic 0:1e6d734c8f95 79
mmaretic 0:1e6d734c8f95 80 wait(0.1);
mmaretic 0:1e6d734c8f95 81 }
mmaretic 0:1e6d734c8f95 82 }
mmaretic 0:1e6d734c8f95 83
mmaretic 0:1e6d734c8f95 84 void drsInt(){
mmaretic 0:1e6d734c8f95 85 DrsButton.disable_irq();
mmaretic 0:1e6d734c8f95 86 DrsDebouncer.attach(&debouncedDrsInt,0.02);
mmaretic 0:1e6d734c8f95 87 }
mmaretic 0:1e6d734c8f95 88
mmaretic 0:1e6d734c8f95 89 void debouncedDrsInt(){
mmaretic 0:1e6d734c8f95 90 DrsDebouncer.detach();
mmaretic 0:1e6d734c8f95 91 s = (DrsButton && !UpozorenjaButton) ? DRS : (UpozorenjaButton ? UPOZORENJA : BRZINA);
mmaretic 0:1e6d734c8f95 92 DrsButton.enable_irq();
mmaretic 0:1e6d734c8f95 93 }
mmaretic 0:1e6d734c8f95 94
mmaretic 0:1e6d734c8f95 95 void upozorenjaInt(){
mmaretic 0:1e6d734c8f95 96 UpozorenjaButton.disable_irq();
mmaretic 0:1e6d734c8f95 97 UpozorenjaDebouncer.attach(&debouncedUpozorenjaInt,0.02);
mmaretic 0:1e6d734c8f95 98 }
mmaretic 0:1e6d734c8f95 99
mmaretic 0:1e6d734c8f95 100 void debouncedUpozorenjaInt(){
mmaretic 0:1e6d734c8f95 101 UpozorenjaDebouncer.detach();
mmaretic 0:1e6d734c8f95 102 s = UpozorenjaButton ? UPOZORENJA : (DrsButton ? DRS : BRZINA);
mmaretic 0:1e6d734c8f95 103 UpozorenjaButton.enable_irq();
mmaretic 0:1e6d734c8f95 104 }
mmaretic 0:1e6d734c8f95 105
mmaretic 0:1e6d734c8f95 106 void displaySeg(){
mmaretic 0:1e6d734c8f95 107 prikaz.displaySeg(zaPrikazati);
mmaretic 0:1e6d734c8f95 108 }