Punjenje i pražnjenje spremnika vode.

main.cpp

Committer:
ipoljak1
Date:
2022-07-15
Revision:
0:f5a0afbce297

File content as of revision 0:f5a0afbce297:

#include "mbed.h"

DigitalOut ledgreen(D4);
DigitalOut ledred(D5);
DigitalOut ledyellow(D6);
InterruptIn button(D2);
Timer debounce;
PwmOut speaker(D9);
Timer speaker1;
Timer ledice;
BusInOut inputSW(D10, D11, D12, D13);

void toggle(void);
void task1(void);
bool flag = false;


int main()
{

    debounce.start();
    button.mode(PullUp);
    button.rise(&toggle);
    inputSW.mode(PullUp);

    while(1) {

        switch(inputSW) {

            case 0x0:

                if(speaker1.read_ms()>2000) {

                    speaker=0;


                    speaker1.reset();
                    speaker1.stop();


                    ledice.start();


                }
                if(ledice.read_ms()>0) {

                    ledgreen = 0;
                    ledred = 0;
                    ledyellow = 0;
                }


                if(ledice.read_ms()>1000) {

                    ledgreen=1;
                }

                if(ledice.read_ms()>3000) {

                    ledred=1;
                }
                if(ledice.read_ms()>5000) {

                    ledyellow=1;
                    ledice.reset();
                    ledice.stop();

                    if(debounce.read_ms()>2000) {
                        task1();
                        wait(2.0);
                        speaker=0;
                        debounce.reset();
                    }


                }
                break;

            case 0x1:

                if(flag==false) {

                    ledyellow=0;
                    wait(0.5);
                    ledyellow=1;
                    wait(0.5);
                    ledyellow=0;
                    wait(0.5);
                    ledyellow=1;
                    wait(0.5);
                    ledyellow=0;

                    if(debounce.read_ms()>2000) {
                        task1();
                        wait(2.0);
                        speaker=0;
                        debounce.reset();
                    }
                    flag = true;
                }
                break;

            case 0x3:

                if(flag==true) {

                    ledred=0;
                    wait(0.5);
                    ledred=1;
                    wait(0.5);
                    ledred=0;
                    wait(0.5);
                    ledred=1;
                    wait(0.5);
                    ledred=0;

                    if(debounce.read_ms()>2000) {
                        task1();
                        wait(2.0);
                        speaker=0;
                        debounce.reset();
                    }
                    flag = false;
                }
                break;

            case 0x7:

                if(flag==false) {

                    ledgreen=0;
                    wait(0.5);
                    ledgreen=1;
                    wait(0.5);
                    ledgreen=0;
                    wait(0.5);
                    ledgreen=1;
                    wait(0.5);
                    ledgreen=0;

                    if(debounce.read_ms()>2000) {
                        task1();
                        wait(2.0);
                        speaker=0;
                        debounce.reset();
                    }
                    flag = true;
                }
                break;

        }




    }
}

void toggle()
{

    if (debounce.read_ms()>200) {

        speaker1.start();
        ledgreen = 1;
        ledred = 1;
        ledyellow = 1;
        task1();

    }
    debounce.reset();
}

void task1()   // task function
{
    speaker.period(1/500.0); // set PWM period
    speaker=0.5;             // set duty cycle
}