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

main.cpp

Committer:
julijacapjak
Date:
2022-07-01
Revision:
1:46480da2ba4e
Parent:
0:0f1f798f7d20

File content as of revision 1:46480da2ba4e:

#include "mbed.h"
#include "my_library.h"

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();
    }
}