Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 4:e360384c268b, committed 2020-06-08
- Comitter:
- bfotak
- Date:
- Mon Jun 08 17:48:51 2020 +0000
- Parent:
- 3:bd92b23688ae
- Commit message:
- seminarski rad
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spi.h Mon Jun 08 17:48:51 2020 +0000 @@ -0,0 +1,24 @@ +//master program + +SPI spi_port(D11, D12, D13); // mosi, miso, sclk +DigitalOut ss(D10); //slave select pin +Serial pc(USBTX, USBRX); + + +int main() +{ + char podatak; + int i = 0; + led = 0; + int vrijeme = 0.005; + + spi_port.format(8,1); // 8 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + while (1) { + ss = 1; //digni SS pin u jedinici, aktivan je u jedinici (oznaci slave) + podatak = spi_port.write(0xFF & i); //posalji podatak + ss = 0; //spusti SS pin u nulu (odznaci slave) + + wait(vrijeme); + } +} \ No newline at end of file
--- a/suncokret.h Fri Feb 07 19:27:04 2020 +0000 +++ b/suncokret.h Mon Jun 08 17:48:51 2020 +0000 @@ -1,36 +1,27 @@ #include "mbed.h" -#define DULJINA_PULSA1 0.001 +#define VRIJEME_KRETANJA 0.1 #define STANI 0 #define CW 0.0035 #define CCW 0.006 + Serial pc(SERIAL_TX, SERIAL_RX); + AnalogIn in0(A0); AnalogIn in1(A1); AnalogIn in2(A2); AnalogIn in3(A3); DigitalOut ledica(D4); -Timeout cekanje; - -PwmOut pwmd(D5); -PwmOut pwmg(D6); - float fotootp1=0, fotootp2=0, fotootp3=0, fotootp4=0; -//float gore, dolje, lijevo, desno, sum; -float ref, refV, refM; - +float a12, a13, a14, a21, a23, a24, a31, a32, a34, a41, a42, a43; int pozicija; -/* -void sumiranje(){ - gore = fotootp1 + fotootp2; - dolje = fotootp3 + fotootp4; - lijevo = fotootp1 + fotootp3; - desno = fotootp2 + fotootp4; - - sum = fotootp1+fotootp2+fotootp3+fotootp4; - } -*/ +PwmOut pwmd(D5); +PwmOut pwmg(D9); + +Timeout cekanje; + + void ocitanje(){ /* fotootp1 = in0.read(); fotootp2 = in2.read(); @@ -46,16 +37,77 @@ fotootp4 = in3.read(); printf("\n\r%f\n\n", fotootp4); wait(2); - - //sumiranje(); - } +void zakljucivanje(){ + a12= fotootp1 - fotootp2; + a13= fotootp1 - fotootp3; + a14= fotootp1 - fotootp4; + + a21 = fotootp2 - fotootp1; + a23 = fotootp2 - fotootp3; + a24 = fotootp2 - fotootp4; + + a31 = fotootp3 - fotootp1; + a32 = fotootp3 - fotootp2; + a34 = fotootp3 - fotootp4; + + a41 = fotootp4 - fotootp1; + a42 = fotootp4 - fotootp2; + a43 = fotootp4 - fotootp3; + + if (a12 >= 0.2 && a13 >= 0.2 && a14 >= 0.2){ + pozicija = 1; + } + + else if (a21 >= 0.2 && a23 >= 0.2 && a24 >= 0.2){ + pozicija = 2; + } + + else if (a31 >= 0.2 && a32 >= 0.2 && a34 >= 0.2){ + pozicija = 3; + } + + else if (a41 >= 0.2 && a42 >= 0.2 && a43 >= 0.2){ + pozicija = 4; + } + + else if (!(a12 >= 0.2 )&& a13 >= 0.2 && a14 >= 0.2){ + pozicija = 5; + } + + else if (a21 >= 0.2 && !(a23 >= 0.2) && a24 >= 0.2){ + pozicija = 6; + } + + else if (a31 >= 0.2 && a32 >= 0.2 && !(a34 >= 0.2)){ + pozicija = 7; + } + + else if (!(a41 >= 0.2) && a42 >= 0.2 && a43 >= 0.2){ + pozicija = 8; + } + else { + pozicija = 9; + } + + +} + +//OUTPUT ------------------------------------ +void stani(){ + pwmg.period_ms(20); + while(1){ + pwmg.pulsewidth(STANI); + break; + } + } void gore(){ pwmg.period_ms(20); while(1){ pwmg.pulsewidth(CCW); + break; } } @@ -63,6 +115,7 @@ pwmd.period_ms(20); while(1){ pwmd.pulsewidth(CCW); + break; } } @@ -70,6 +123,7 @@ pwmg.period_ms(20); while(1){ pwmg.pulsewidth(CW); + break; } } @@ -77,23 +131,53 @@ pwmd.period_ms(20); while(1){ pwmd.pulsewidth(CW); + break; } } +//OUTPUT ------------------------- void pozicioniranje(){ switch(pozicija){ case 1: - cekanje.attach(&gore, 0.1); + cekanje.attach(&gore, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); break; case 2: - cekanje.attach(&desno, 0.1); + cekanje.attach(&desno, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); break; case 3: - cekanje.attach(&dolje, 0.1); + cekanje.attach(&dolje, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); break; case 4: - cekanje.attach(&lijevo, 0.1); + cekanje.attach(&lijevo, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 5: + cekanje.attach(&desno, VRIJEME_KRETANJA); + cekanje.attach(&gore, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 6: + cekanje.attach(&desno, VRIJEME_KRETANJA); + cekanje.attach(&dolje, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 7: + cekanje.attach(&lijevo, VRIJEME_KRETANJA); + cekanje.attach(&dolje, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 8: + cekanje.attach(&lijevo, VRIJEME_KRETANJA); + cekanje.attach(&gore, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 9: + cekanje.attach(&stani, VRIJEME_KRETANJA); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); break; default: pc.printf("pogresna informacija"); @@ -101,24 +185,16 @@ } } -void logika(){ - - } +/* + + + void trazenje(){ - pwmd.period_ms(20); while(1){ - //ocitanje(); - //pozicioniranje(); - //logika(); - refV = ref + 0.2; - refM = ref - 0.2; - //if(sum >= refV & sum <= refV){ - //pwmd.pulsewidth(0.020); - pwmd=0.9; - ledica=1; - pc.printf("AAAAAAAAAAA"); - // } + //logika za trazenje (spremanje neke vrijednosti) // 3 timera jedan koji broji kolko treba vremena, + //jedan se reseta kada nađe najvecu i jedan za odbrojavanje do pozicije + //logika(); } } - +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/suncokret1.h Mon Jun 08 17:48:51 2020 +0000 @@ -0,0 +1,206 @@ +#include "mbed.h" +#define VRIJEME_KRETANJA 0.1 +#define STANI 0 +#define CW 0.0014 +#define CCW 0.0015 + + +Serial pc(SERIAL_TX, SERIAL_RX); + +AnalogIn in0(A0); +AnalogIn in1(A1); +AnalogIn in2(A2); +AnalogIn in3(A3); + + +float fotootp1=0, fotootp2=0, fotootp3=0, fotootp4=0; +float a12, a13, a14, a21, a23, a24, a31, a32, a34, a41, a42, a43; +int pozicija; + +PwmOut pwmd(D4); +PwmOut pwmg(D9); + +Timeout cekanje; +Timer tKrug, tPozicija, tOstatak; +int logikaVrmena, t2=0, t3=0; + + +void ocitanje() +{ + + fotootp1 = in0.read(); + printf("\n\r%f", fotootp1); + fotootp2 = in1.read(); + printf("\n\r%f", fotootp2); + fotootp3 = in2.read(); + printf("\n\r%f", fotootp3); + fotootp4 = in3.read(); + printf("\n\r%f\n\n", fotootp4); + wait(0.01); +} + +void zakljucivanje() +{ + a12= fotootp1 - fotootp2; + a13= fotootp1 - fotootp3; + a14= fotootp1 - fotootp4; + + a21 = fotootp2 - fotootp1; + a23 = fotootp2 - fotootp3; + a24 = fotootp2 - fotootp4; + + a31 = fotootp3 - fotootp1; + a32 = fotootp3 - fotootp2; + a34 = fotootp3 - fotootp4; + + a41 = fotootp4 - fotootp1; + a42 = fotootp4 - fotootp2; + a43 = fotootp4 - fotootp3; + + if (a12 >= 0.2 && a13 >= 0.2 && a14 >= 0.2) { + pozicija = 1; + } + + else if (a21 >= 0.2 && a23 >= 0.2 && a24 >= 0.2) { + pozicija = 2; + } + + else if (a31 >= 0.2 && a32 >= 0.2 && a34 >= 0.2) { + pozicija = 3; + } + + else if (a41 >= 0.2 && a42 >= 0.2 && a43 >= 0.2) { + pozicija = 4; + } + + else if (!(a12 >= 0.2 )&& a13 >= 0.2 && a14 >= 0.2) { + pozicija = 5; + } + + else if (a21 >= 0.2 && !(a23 >= 0.2) && a24 >= 0.2) { + pozicija = 6; + } + + else if (a31 >= 0.2 && a32 >= 0.2 && !(a34 >= 0.2)) { + pozicija = 7; + } + + else if (!(a41 >= 0.2) && a42 >= 0.2 && a43 >= 0.2) { + pozicija = 8; + } else { + pozicija = 9; + } + + +} + +//OUTPUT ------------------------------------ +void stani() +{ + pwmg.period_ms(20); + while(1) { + pwmg.pulsewidth(STANI); + break; + } +} + +void gore() +{ + pwmg.period_ms(20); + while(1) { + pwmg.pulsewidth(CCW); + break; + } +} + + +void desno() +{ + pwmd.period_ms(20); + while(1) { + pwmd.pulsewidth(CCW); + break; + } +} + +void dolje() +{ + pwmg.period_ms(20); + while(1) { + pwmg.pulsewidth(CW); + break; + } +} + +void lijevo() +{ + pwmd.period_ms(20); + while(1) { + pwmd.pulsewidth(CW); + break; + } +} + +//OUTPUT ------------------------- + +void pozicioniranje() +{ + switch(pozicija) { + case 1: + gore(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 2: + desno(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 3: + dolje(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 4: + lijevo(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 5: + desno(); + gore(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 6: + desno(); + dolje(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 7: + lijevo(); + dolje(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 8: + lijevo(); + gore(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + case 9: + stani(); + pc.printf("\n\nNALAZIMO SE U POZICIJI %d\n", pozicija); + break; + default: + pc.printf("pogresna informacija"); + break; + } +} + + +void trazenje() +{ + while(1) { + //logika za trazenje (spremanje neke vrijednosti) // 3 timera jedan koji broji kolko treba vremena, + //jedan se reseta kada nađe najvecu i jedan za odbrojavanje do pozicije + //logika(); + + + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uart.h Mon Jun 08 17:48:51 2020 +0000 @@ -0,0 +1,28 @@ +#include "mbed.h" +Serial app(PA_2,PA_3); +short ping; +int t; +void start() +{ + char pin; + pin=app.getc(); + ping=pin; + +} +int main() +{ + app.baud(9600); + app.attach(&start, Serial::RxIrq); + while(1) { + pc.printf("Primljeni podatak: %d\n",ping); + if(ping==1) { + //start program + t=1; + } + if(ping==0) { + //stop program + t=0; + } + wait(1); + } +} \ No newline at end of file