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.
main.cpp
- Committer:
- julijacapjak
- Date:
- 2022-07-01
- Revision:
- 0:0f1f798f7d20
- Child:
- 1:46480da2ba4e
File content as of revision 0:0f1f798f7d20:
#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(); } }