Ispis na tri 7-segmentna display-a
Dependencies: mbed trostrukiSedamSeg
https://os.mbed.com/media/uploads/mmaretic/prototip_volana_formule_1.pdf
Diff: main.cpp
- Revision:
- 0:1e6d734c8f95
- Child:
- 2:3227eef26c80
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 02 18:41:30 2021 +0000 @@ -0,0 +1,102 @@ +#include "mbed.h" +#include "trostrukiSedamSeg.h" + +Ticker DrsDebouncer; +Ticker UpozorenjaDebouncer; +Ticker Multiplexer; +InterruptIn DrsButton(PB_10); +InterruptIn UpozorenjaButton(PB_4); +AnalogIn Ain(PC_0); +PwmOut servo(PA_10); + +char zaPrikazati[10]; + +SedamSeg prikaz; + +volatile enum state{ + BRZINA, + DRS, + UPOZORENJA +} s; + +void drsInt(); +void debouncedDrsInt(); +void upozorenjaInt(); +void debouncedUpozorenjaInt(); +void displaySeg(); + +int main() { + + float ADCvalue; + + servo.period_ms(20); + servo.pulsewidth_us(1250); + + DrsButton.mode(PullDown); + DrsButton.rise(&drsInt); + DrsButton.fall(&drsInt); + + UpozorenjaButton.mode(PullDown); + UpozorenjaButton.rise(&upozorenjaInt); + UpozorenjaButton.fall(&upozorenjaInt); + + Multiplexer.attach(&displaySeg,0.005); + + while(1){ + switch(s){ + case DRS: + servo.pulsewidth_us(2000); + sprintf(zaPrikazati,"%s","DRS"); + break; + case UPOZORENJA: + servo.pulsewidth_us(1250); + sprintf(zaPrikazati,"%s","UPO"); + break; + default: + servo.pulsewidth_us(1250); + ADCvalue = Ain - 0.03; + ADCvalue = (ADCvalue < 0) ? 0 : ADCvalue; + ADCvalue *= 309.27; + sprintf(zaPrikazati,"%i",(int)ADCvalue); + if(ADCvalue < 10){ + zaPrikazati[2] = zaPrikazati[0]; + zaPrikazati[0] = '0'; + zaPrikazati[1] = '0'; + } + else if(ADCvalue < 100){ + zaPrikazati[2] = zaPrikazati[1]; + zaPrikazati[1] = zaPrikazati[0]; + zaPrikazati[0] = '0'; + } + break; + } + + wait(0.1); + } +} + +void drsInt(){ + DrsButton.disable_irq(); + DrsDebouncer.attach(&debouncedDrsInt,0.02); +} + +void debouncedDrsInt(){ + DrsDebouncer.detach(); + s = (DrsButton && !UpozorenjaButton) ? DRS : (UpozorenjaButton ? UPOZORENJA : BRZINA); + DrsButton.enable_irq(); +} + +void upozorenjaInt(){ + UpozorenjaButton.disable_irq(); + UpozorenjaDebouncer.attach(&debouncedUpozorenjaInt,0.02); +} + +void debouncedUpozorenjaInt(){ + UpozorenjaDebouncer.detach(); + s = UpozorenjaButton ? UPOZORENJA : (DrsButton ? DRS : BRZINA); + UpozorenjaButton.enable_irq(); +} + +void displaySeg(){ + prikaz.displaySeg(zaPrikazati); +} \ No newline at end of file