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.

https://os.mbed.com/media/uploads/julijacapjak/shema_fotka.png

Committer:
julijacapjak
Date:
Fri Jul 01 06:29:45 2022 +0000
Revision:
0:0f1f798f7d20
Child:
1:46480da2ba4e
Mikroupravljaci, konstrukcijski zadatak

Who changed what in which revision?

UserRevisionLine numberNew contents of line
julijacapjak 0:0f1f798f7d20 1 #include "mbed.h"
julijacapjak 0:0f1f798f7d20 2 #include "my_library.h"
julijacapjak 0:0f1f798f7d20 3
julijacapjak 0:0f1f798f7d20 4 AnalogIn Pot(A0); //definiranje pina za potenciometar
julijacapjak 0:0f1f798f7d20 5 InterruptIn button(D7); //definiranje tipke za hardverski prekid
julijacapjak 0:0f1f798f7d20 6
julijacapjak 0:0f1f798f7d20 7 Timer debounce; //timer koji koristimo za debounce (uklanjanje neželjenog titranja)
julijacapjak 0:0f1f798f7d20 8
julijacapjak 0:0f1f798f7d20 9 float t5, t2;
julijacapjak 0:0f1f798f7d20 10
julijacapjak 0:0f1f798f7d20 11 void confirm()
julijacapjak 0:0f1f798f7d20 12 {if (debounce.read_ms() > 200) //provjera je li brid smetnja
julijacapjak 0:0f1f798f7d20 13 {
julijacapjak 0:0f1f798f7d20 14 t5 = 5000000 * Pot;
julijacapjak 0:0f1f798f7d20 15 t2 = 2000000 * Pot;
julijacapjak 0:0f1f798f7d20 16 debounce.reset(); //reset timer-a
julijacapjak 0:0f1f798f7d20 17 }
julijacapjak 0:0f1f798f7d20 18 }
julijacapjak 0:0f1f798f7d20 19
julijacapjak 0:0f1f798f7d20 20 float t;
julijacapjak 0:0f1f798f7d20 21 int main(){
julijacapjak 0:0f1f798f7d20 22 t5 = 5000000; //proizvoljno vrijeme čekanja
julijacapjak 0:0f1f798f7d20 23 t2 = 2000000; //proizvoljno vrijeme čekanja
julijacapjak 0:0f1f798f7d20 24 debounce.start(); //debounce počinje brojati
julijacapjak 0:0f1f798f7d20 25 button.rise(&confirm); //dodijeljivanje prekidne funckije
julijacapjak 0:0f1f798f7d20 26
julijacapjak 0:0f1f798f7d20 27 while (1)
julijacapjak 0:0f1f798f7d20 28 {
julijacapjak 0:0f1f798f7d20 29 if ((Stanje == 1) || (Stanje == 3)) //provjera stanja
julijacapjak 0:0f1f798f7d20 30 { t=0; //početno vrijeme
julijacapjak 0:0f1f798f7d20 31 while (t<t5){ t = t+1;}// (t5); //vrijeme čekanja
julijacapjak 0:0f1f798f7d20 32 }
julijacapjak 0:0f1f798f7d20 33 else
julijacapjak 0:0f1f798f7d20 34 { t=0; //početno vrijeme
julijacapjak 0:0f1f798f7d20 35 while (t<t2) {t = t+1;}// (t5); //vrijeme čekanja
julijacapjak 0:0f1f798f7d20 36 }
julijacapjak 0:0f1f798f7d20 37 if (Stanje == 0) //provjera stanja
julijacapjak 0:0f1f798f7d20 38 {
julijacapjak 0:0f1f798f7d20 39 Upali_1(); //pozivanje funkcije
julijacapjak 0:0f1f798f7d20 40 }
julijacapjak 0:0f1f798f7d20 41 else if (Stanje == 1) //provjera stanja
julijacapjak 0:0f1f798f7d20 42 {
julijacapjak 0:0f1f798f7d20 43 Upali_2(); //pozivanje funkcije
julijacapjak 0:0f1f798f7d20 44 }
julijacapjak 0:0f1f798f7d20 45 else if (Stanje == 2) //provjera stanja
julijacapjak 0:0f1f798f7d20 46 {
julijacapjak 0:0f1f798f7d20 47 Upali_3(); //pozivanje funkcije
julijacapjak 0:0f1f798f7d20 48 }
julijacapjak 0:0f1f798f7d20 49 else Upali_0();
julijacapjak 0:0f1f798f7d20 50 }
julijacapjak 0:0f1f798f7d20 51 }
julijacapjak 0:0f1f798f7d20 52