Projektni zadatak iz Mikroupravljača - Mladenko Jurković

Dependencies:   mbed SeeedShieldBot BluetoothSerial

main.cpp

Committer:
mjurkovic
Date:
2020-11-24
Revision:
0:b530fb5242f7

File content as of revision 0:b530fb5242f7:

#include"mbed.h"
DigitalOut LEDcrvena(D7); //LED svjetlo za vozila
DigitalOut LEDzuta(D6);     //LED svjetlo za vozila
DigitalOut LEDzelena(D5);   //LED svjetlo za vozila

DigitalOut LEDzelenapjesaci(D2);    //LED svjetlo za pješake
DigitalOut LEDcrvenapjesaci(D3);    //LED svjetlo za pješake

PwmOut z(D9);               //PWM izlaz za zvučnik
InterruptIn tipkalo(D4);    //Tipkalo za pješake

Ticker zv;              //Ticker za pozivanje zvuka
Timer debounce;         //Timer za debounce
void pjesaci(void);     //definiranje funkcije pjesaci
void zvuk(void);        //definiranje funkcije zvuk

int main()
{
    debounce.start();
    tipkalo.rise(&pjesaci);  //pozivanje funkcije "pjesaci" koja odmah pali zeleno svjetlo za pješake, ukoliko je uključeno zeleno za vozila

    while(1) {
        zv.attach(&zvuk, 0.5);

        LEDcrvena=1;
        LEDcrvenapjesaci=1;
        LEDzuta=0;
        LEDzelena=0;
        LEDzelenapjesaci=0;
        wait(1);              //crveno svjetlo vozilima, sigurnosni prijelaz između svjetla za vozila i pješake

        LEDcrvena=1;
        LEDcrvenapjesaci=0;
        LEDzuta=0;
        LEDzelena=0;
        LEDzelenapjesaci=1;
        wait(12);       //zeleno za pješake

        LEDcrvena=1;
        LEDcrvenapjesaci=1;
        LEDzuta=0;
        LEDzelena=0;
        LEDzelenapjesaci=0;
        wait(1);        //pali se crvena za pješake, priprema za žuto odnosno zeleno svjetlo vozilima

        LEDcrvena=1;
        LEDcrvenapjesaci=1;
        LEDzuta=1;
        LEDzelena=0;
        LEDzelenapjesaci=0;
        wait(3);        //pali se žuto svjetlo - priprema za kretanje vozila

        LEDcrvena=0;
        LEDcrvenapjesaci=1;
        LEDzuta=0;
        LEDzelena=1;
        LEDzelenapjesaci=0;
        wait(15);       //zeleno svjetlo vozilima

        LEDcrvena=0;
        LEDcrvenapjesaci=1;
        LEDzuta=1;
        LEDzelena=0;
        LEDzelenapjesaci=0;
        wait(4);        //pali se žuto svjetlo, upozorenje da slijedi crveno svjetlo
    }
}
void pjesaci()
{
    if(debounce.read_ms()>200) {
        if(LEDzelena==1) {      //ako je zeleno svjetlo za vozila uključeno

            z.period(0.5);
            z=0.5;
            wait(2);        //nakon pritiska tipke, zeleno svjetlo svjetli još 2 sekunde

            LEDcrvena=0;
            LEDcrvenapjesaci=1;
            LEDzuta=1;
            LEDzelena=0;
            LEDzelenapjesaci=0;
            z.period(0.5);
            z=0.5;                 //zvuk za crveno svjetlo pjesacima
            wait(4);            //pali se žuto svjetlo, priprema za crveno

            LEDcrvena=1;
            LEDcrvenapjesaci=1;
            LEDzuta=0;
            LEDzelena=0;
            LEDzelenapjesaci=0;
            z.period(0.5);
            z=0.5;          //zvuk za crveno svjetlo pjesacima
            wait(1);        //crveno svjetlo vozilima, sigurnosni prijelaz između svjetla za vozila i pješake

            LEDcrvena=1;
            LEDcrvenapjesaci=0;
            LEDzuta=0;
            LEDzelena=0;
            LEDzelenapjesaci=1;
            z.period(0.1);
            z=0.5;              //zvuk za zeleno svjetlo pjesacima
            wait(6);            //upalilo se crveno svjetlo vozilima, zeleno je pješacima

            LEDcrvena=1;
            LEDcrvenapjesaci=1;
            LEDzuta=0;
            LEDzelena=0;
            LEDzelenapjesaci=0;
            z.period(0.5);
            z=0.5;              //zvuk za crveno svjetlo pjesacima
            wait(1);           //pali se crveno pješacima

            LEDcrvena=1;
            LEDcrvenapjesaci=1;
            LEDzuta=1;
            LEDzelena=0;
            LEDzelenapjesaci=0;
            z.period(0.5);
            z=0.5;              //zvuk za crveno svjetlo pjesacima
            wait(4);            //uz crveno pješacima, pali se žuto svjetlo, priprema za zeleno za vozila

            LEDcrvena=0;
            LEDcrvenapjesaci=1;
            LEDzuta=0;
            LEDzelena=1;
            LEDzelenapjesaci=0;
            z.period(0.5);
            z=0.5;              //zvuk za crveno svjetlo pjesacima
            wait(15);           //pali se zeleno svjetlo za vozila

            LEDcrvena=0;
            LEDcrvenapjesaci=1;
            LEDzuta=1;
            LEDzelena=0;
            LEDzelenapjesaci=0;
            z.period(0.5);
            z=0.5;              //zvuk za crveno svjetlo pjesacima
            wait(4);            //pali se žuto svjetlo, priprema za crveno svjetlo vozilima

        }
        debounce.reset();
    }
}
void zvuk()
{
    if(LEDzelenapjesaci==1) {
        z.period(0.1); // definiranje PWM perioda za zvučnik --> zvuk za zeleno svjetlo pjesacima
        z=0.5;  //aktivni ciklus na 50%, PWM frekvencija definira visinu reproduciranog zvuka
    } else if(LEDzelenapjesaci==0) {
        z.period(0.5);      //zvuk za crveno svjetlo pjesacima
        z=0.5;          
    }
}