Mikroupravljaci, konstrukcijski zadatak
U prilogu se nalazi kod za simulaciju upravljanja semaforom, tj podešavanje brzine izmjene svjetla na semaforu ovisno o gustoći prometa. Kao senzor koji detektira gustoću prometa korišten je potenciometar koji je spojen na analogni ulaz. Maksimalna vrijednost napona na potenciometru odgovara maksimalnom ciklusu semafora. Očitavanje s analognog ulaza i korekcija trajanja ciklusa se odvija samo nakon pritiska tipkala od strane operatera, što se vrši pomoću hardverskog prekida. Samo paljenje i gašenje led dioda sukladno stanju semafora se vrši u funkcijama koje se nalazi u biblioteci my_library.h.
Diff: main.cpp
- Revision:
- 0:0f1f798f7d20
- Child:
- 1:46480da2ba4e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jul 01 06:29:45 2022 +0000 @@ -0,0 +1,52 @@ +#include "mbed.h" +#include "my_library.h" + +AnalogIn Pot(A0); //definiranje pina za potenciometar +InterruptIn button(D7); //definiranje tipke za hardverski prekid + +Timer debounce; //timer koji koristimo za debounce (uklanjanje neželjenog titranja) + +float t5, t2; + +void confirm() +{if (debounce.read_ms() > 200) //provjera je li brid smetnja +{ + t5 = 5000000 * Pot; + t2 = 2000000 * Pot; + debounce.reset(); //reset timer-a +} +} + +float t; +int main(){ + t5 = 5000000; //proizvoljno vrijeme čekanja + t2 = 2000000; //proizvoljno vrijeme čekanja + debounce.start(); //debounce počinje brojati + button.rise(&confirm); //dodijeljivanje prekidne funckije + + while (1) + { + if ((Stanje == 1) || (Stanje == 3)) //provjera stanja + { t=0; //početno vrijeme + while (t<t5){ t = t+1;}// (t5); //vrijeme čekanja + } + else + { t=0; //početno vrijeme + while (t<t2) {t = t+1;}// (t5); //vrijeme čekanja + } + if (Stanje == 0) //provjera stanja + { + Upali_1(); //pozivanje funkcije + } + else if (Stanje == 1) //provjera stanja + { + Upali_2(); //pozivanje funkcije + } + else if (Stanje == 2) //provjera stanja + { + Upali_3(); //pozivanje funkcije + } + else Upali_0(); + } +} +