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 13:36:54 2022 +0000
Revision:
1:46480da2ba4e
Parent:
0:0f1f798f7d20
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 Timer debounce; //timer koji koristimo za debounce (uklanjanje neželjenog titranja)
julijacapjak 0:0f1f798f7d20 5
julijacapjak 0:0f1f798f7d20 6 float t5, t2;
julijacapjak 0:0f1f798f7d20 7
julijacapjak 0:0f1f798f7d20 8 void confirm()
julijacapjak 0:0f1f798f7d20 9 {if (debounce.read_ms() > 200) //provjera je li brid smetnja
julijacapjak 0:0f1f798f7d20 10 {
julijacapjak 0:0f1f798f7d20 11 t5 = 5000000 * Pot;
julijacapjak 0:0f1f798f7d20 12 t2 = 2000000 * Pot;
julijacapjak 0:0f1f798f7d20 13 debounce.reset(); //reset timer-a
julijacapjak 0:0f1f798f7d20 14 }
julijacapjak 0:0f1f798f7d20 15 }
julijacapjak 0:0f1f798f7d20 16
julijacapjak 0:0f1f798f7d20 17 float t;
julijacapjak 0:0f1f798f7d20 18 int main(){
julijacapjak 0:0f1f798f7d20 19 t5 = 5000000; //proizvoljno vrijeme čekanja
julijacapjak 0:0f1f798f7d20 20 t2 = 2000000; //proizvoljno vrijeme čekanja
julijacapjak 0:0f1f798f7d20 21 debounce.start(); //debounce počinje brojati
julijacapjak 0:0f1f798f7d20 22 button.rise(&confirm); //dodijeljivanje prekidne funckije
julijacapjak 0:0f1f798f7d20 23
julijacapjak 0:0f1f798f7d20 24 while (1)
julijacapjak 0:0f1f798f7d20 25 {
julijacapjak 0:0f1f798f7d20 26 if ((Stanje == 1) || (Stanje == 3)) //provjera stanja
julijacapjak 0:0f1f798f7d20 27 { t=0; //početno vrijeme
julijacapjak 0:0f1f798f7d20 28 while (t<t5){ t = t+1;}// (t5); //vrijeme čekanja
julijacapjak 0:0f1f798f7d20 29 }
julijacapjak 0:0f1f798f7d20 30 else
julijacapjak 0:0f1f798f7d20 31 { t=0; //početno vrijeme
julijacapjak 0:0f1f798f7d20 32 while (t<t2) {t = t+1;}// (t5); //vrijeme čekanja
julijacapjak 0:0f1f798f7d20 33 }
julijacapjak 0:0f1f798f7d20 34 if (Stanje == 0) //provjera stanja
julijacapjak 0:0f1f798f7d20 35 {
julijacapjak 0:0f1f798f7d20 36 Upali_1(); //pozivanje funkcije
julijacapjak 0:0f1f798f7d20 37 }
julijacapjak 0:0f1f798f7d20 38 else if (Stanje == 1) //provjera stanja
julijacapjak 0:0f1f798f7d20 39 {
julijacapjak 0:0f1f798f7d20 40 Upali_2(); //pozivanje funkcije
julijacapjak 0:0f1f798f7d20 41 }
julijacapjak 0:0f1f798f7d20 42 else if (Stanje == 2) //provjera stanja
julijacapjak 0:0f1f798f7d20 43 {
julijacapjak 0:0f1f798f7d20 44 Upali_3(); //pozivanje funkcije
julijacapjak 0:0f1f798f7d20 45 }
julijacapjak 0:0f1f798f7d20 46 else Upali_0();
julijacapjak 0:0f1f798f7d20 47 }
julijacapjak 0:0f1f798f7d20 48 }
julijacapjak 0:0f1f798f7d20 49