Konstrukcijski rad Nino Kovačić
Dependencies: mbed led_Za_KRAJ
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 }
Generated on Thu Aug 4 2022 16:27:51 by
1.7.2
TVZ2020