Konstrukcijski rad Nino Kovačić

Dependencies:   mbed led_Za_KRAJ

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "led_Za_KRAJ.h"
00003 //tipkala kao interupti
00004 InterruptIn tipstart(p5,PullUp);
00005 InterruptIn tipstop(p6,PullUp);
00006 InterruptIn tiplijevo(p7,PullUp);
00007 InterruptIn tipdesno(p8,PullUp);
00008 //ledice izlazi
00009 DigitalOut ledstart(p25);
00010 DigitalOut ledstop(p26);
00011 DigitalOut ledlijevo(p27);
00012 DigitalOut leddesno(p28);
00013 //potenciometar za brzinu
00014 AnalogIn potbrzina(p15);
00015 //PWM u lijevo
00016 PwmOut PWMlijevo(p21);
00017 //PWM u desno
00018 PwmOut PWMdesno(p22);
00019 //PWM buzzer
00020 PwmOut buzzer(p23);
00021 
00022 //definiranje statusa bulovi
00023 volatile  bool vrti=false;
00024 volatile  bool lijevo=false;
00025 volatile  bool desno=true;
00026 
00027 volatile float brzina=0;
00028 
00029 //uključene funkcije
00030 void Buzz(void); //za buzzer
00031 void BuzzTIPKA(void); //za buzzer
00032 void vrtiL(void); //pwm lijevi
00033 void vrtiD(void); //pwm desni
00034 void kreni(void); //za debouncanje
00035 void stani(void); //za debouncanje
00036 void LEFT(void); //za debouncanje
00037 void RIGHT(void); //za debouncanje
00038 
00039 //Ticker
00040 Ticker tStart;
00041 
00042 //Timer
00043 Timer debounce;
00044 Timer tKraj;
00045 
00046 led_Za_KRAJ led(p29); //definirane pina ledice za kraj
00047 
00048 int main()
00049 {
00050 
00051 //pokretanje debounc timera i interupata
00052 
00053     debounce.start();
00054     tipstart.fall(&kreni);
00055     tipstop.fall(&stani);
00056     tiplijevo.fall(&LEFT);
00057     tipdesno.fall(&RIGHT);
00058 
00059     tKraj.start();
00060 
00061 //loop petlja
00062 
00063     while(1) {
00064 
00065 //kreni stani vrti logika
00066 
00067         if(tKraj.read_ms()>10000) {
00068             
00069 
00070             led.ledblink();   //poziva klasu led_Za_KRAJ
00071 
00072         }
00073 
00074 
00075 
00076         if(vrti==true) {
00077             ledstop=0;
00078             ledstart=1;
00079 
00080             if(lijevo==true&desno==false) {
00081                 ledlijevo=1;
00082                 leddesno=0;
00083 
00084                 vrtiL();
00085 
00086             } else if(lijevo==false&desno==true) {
00087                 ledlijevo=0;
00088                 leddesno=1;
00089 
00090                 vrtiD();
00091             }
00092 
00093         } else if(vrti==false) {
00094             ledstop=1;
00095             ledstart=0;
00096             PWMdesno=0;
00097             PWMlijevo=0;
00098 
00099             if(lijevo==true&desno==false) {
00100                 ledlijevo=1;
00101                 leddesno=0;
00102 
00103             } else if(lijevo==false&desno==true) {
00104                 ledlijevo=0;
00105                 leddesno=1;
00106             }
00107 
00108 
00109         }
00110     }
00111 }
00112 
00113 //moje funkcije
00114 void vrtiL()
00115 {
00116 
00117     brzina=potbrzina;
00118     PWMlijevo.period(0.001);
00119     PWMlijevo=brzina;
00120     PWMdesno=0;
00121     wait(0.1);
00122 }
00123 
00124 void vrtiD()
00125 {
00126 
00127     brzina=potbrzina;
00128     PWMdesno.period(0.001);
00129     PWMdesno=brzina;
00130     PWMlijevo=0;
00131     wait(0.1);
00132 }
00133 
00134 void Buzz()
00135 {
00136     buzzer.period(0.002);
00137     buzzer=0.5;
00138     wait(0.2);
00139     buzzer=0;
00140 }
00141 
00142 void BuzzTIPKA()
00143 {
00144     buzzer.period(0.001);
00145     buzzer=0.5;
00146     wait(0.2);
00147     buzzer=0;
00148 }
00149 
00150 //debouncanje funckije
00151 void kreni()
00152 {
00153     if(debounce.read_ms()>100) {
00154         vrti=true;
00155         BuzzTIPKA();
00156         tStart.attach(&Buzz, 2); //pokretanje buzera 1sec
00157         debounce.reset();
00158     }
00159 }
00160 void stani()
00161 {
00162     if(debounce.read_ms()>100) {
00163         vrti=false;
00164         BuzzTIPKA();
00165         tStart.detach(); //zaustavljanje buzzera
00166         debounce.reset();
00167     }
00168 }
00169 void LEFT()
00170 {
00171     if(debounce.read_ms()>100) {
00172         lijevo=true;
00173         desno=false;
00174         BuzzTIPKA();
00175         debounce.reset();
00176     }
00177 }
00178 void RIGHT()
00179 {
00180     if(debounce.read_ms()>100) {
00181         lijevo=false;
00182         desno=true;
00183         BuzzTIPKA();
00184         debounce.reset();
00185     }
00186 }