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.
Dependencies: mbed
Revision 0:cfb92c6612f9, committed 2016-03-11
- Comitter:
- rv456
- Date:
- Fri Mar 11 16:55:57 2016 +0000
- Child:
- 1:848d1e47c027
- Commit message:
- yerysert
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Mar 11 16:55:57 2016 +0000 @@ -0,0 +1,419 @@ +#include "mbed.h" + +//Pull everything up +DigitalOut pull1(PTE2); +DigitalOut pull2(PTA2); +//DigitalOut pull4(PTA12); +//DigitalOut pull5(PTA4); +DigitalOut pull6(PTA5); +//DigitalOut pull7(PTC8); + +DigitalOut pull9(PTA13); +DigitalOut pull10(PTD5); +DigitalOut pull11(PTD0); +DigitalOut pull12(PTD2); +DigitalOut pull13(PTD3); +DigitalOut pull14(PTD1); +DigitalOut pull15(PTE0); +DigitalOut pull16(PTE1); + +//DigitalOut pull17(PTC7); +//DigitalOut pull18(PTC0); +//DigitalOut pull19(PTC3); +DigitalOut pull20(PTC4); + + +DigitalOut pull27(PTE31); +DigitalOut pull28(PTD6); +DigitalOut pull29(PTD7); + +//DigitalOut pull30(PTE30); + +//DigitalOut pull38(PTE3); +//DigitalOut pull39(PTE2); +//DigitalOut pull50(PTB11); +//DigitalOut pull51(PTB10); +//DigitalOut pull52(PTB9); +//DigitalOut pull53(PTB8); + +//DigitalOut pull34(PTE21); +//DigitalOut pull35(PTE20); +//DigitalOut pull47(PTB1); +//DigitalOut pull48(PTB0); +DigitalOut pull100(PTA20); + +//motor driver outputs +DigitalOut IN4(PTC5); +DigitalOut IN3(PTC6); +DigitalOut IN2(PTC10); +DigitalOut IN1(PTC11); +PwmOut ENA(PTC9); +PwmOut ENB(PTD4); + +DigitalOut indicator(LED_BLUE); + +//constant 3.3 volts for sensors +DigitalOut constant1(PTE5); +DigitalOut constant2(PTE4); +DigitalOut constant3(PTE3); +DigitalOut constant4(PTC0); +DigitalOut constant5(PTC7); +DigitalOut constant6 (PTC3); + +//line following inputs +AnalogIn leftmost(PTB0); +AnalogIn left(PTC2); +AnalogIn middle(PTB3); +AnalogIn right(PTB2); +AnalogIn rightmost(PTB1); + +DigitalIn back(PTB10); +DigitalIn midbar(PTB11); +DigitalIn front(PTA1); + +//debugging led outputs +DigitalOut ledleftmost(PTE20); +DigitalOut ledright(PTE23); +DigitalOut ledmiddle(PTE22); +DigitalOut ledleft(PTE29); +DigitalOut ledrightmost(PTE21); + +DigitalOut ledback(PTC4); +DigitalOut ledmidbar(PTB8); +DigitalOut ledfront(PTB9); + +//ball firing +PwmOut motors(PTA12); +DigitalOut solenoid(PTA4); + +//Ball dispensing +PwmOut dispenser(PTC8); + +//Ball Counter +DigitalOut constant7(PTC16); +DigitalOut bcd1(PTC17); +DigitalOut bcd0(PTE31); +DigitalOut bcd3(PTA17); +DigitalOut bcd2(PTA16); +InterruptIn ball_trigger(PTD7); + + +//Old +/*Ticker sine_interrupt; +AnalogOut Aout(PTE30); +double interrupt_f = .00001525878; // (1/2048*32) +static int sine_wave_steps = 32; // number of steps in sine wave +int sine_counter = 0; +static float sine_val[] = {.5,.5976,.6914,.7773,.8535,.9160,.9619,.9902,1,.9902,.9619,.9160,.8535,.7773,.6914,.5976,.5,.4023,.3085,.2226,.1464,.0839,.0380,.0097,0,.0097,.0380,.0839,.1464,.2226,.3085,.4023}; + + +void create_sine() { //subroutine for interrupt, creates sine wave + sine_counter = sine_counter + 1; //run through sine array + if (sine_counter >= sine_wave_steps){ + sine_counter = 0; //repeat sine wave + } + Aout = sine_val[sine_counter]; //output decimal 0-1 on DAC +}*/ +int counter = 0; +int bar=0; +int i=0; +static int ballcount=0; + + + + +void display() +{ + +if (ballcount == 0) { + bcd0 = 0; + bcd1 = 0; + bcd2 = 0; + bcd3 = 0; + } + if (ballcount == 1) { + bcd0 = 1; + bcd1 = 0; + bcd2 = 0; + bcd3 = 0; + } + if (ballcount == 2) { + bcd0 = 0; + bcd1 = 1; + bcd2 = 0; + bcd3 = 0; + } + if (ballcount == 3) { + bcd0 = 1; + bcd1 = 1; + bcd2 = 0; + bcd3 = 0; + } + if (ballcount == 4) { + bcd0 = 0; + bcd1 = 0; + bcd2 = 1; + bcd3 = 0; + } + if (ballcount == 5) { + bcd0 = 1; + bcd1 = 0; + bcd2 = 1; + bcd3 = 0; + } +} + +void count() +{ + wait_ms(0.0015); + if(ball_trigger==0) { + ballcount++; + indicator = 0; + wait (0.25); + indicator = 1; + display(); + + } +} + +int barcode() +{ + if(front==1) { + ledfront=1; + ENA=0.25; + ENB=0.25; + } else { + ledfront=0; + } + + if(midbar==1) { + ledmidbar=1; + //ENA=0.25; + //ENB=0.25; + } else { + ledmidbar=0; + } + + if(back==1) { + ledback=1; + ENA=0.25; + ENB=0.25; + } else { + ledback=0; + } + + if(midbar==1 and back==1) { + //shoot balls + ballcount--; + ENA=0; + ENB=0; + motors=0.095; + wait_ms(550); + solenoid=1; + wait_ms(45); + solenoid=0; + wait(3); + motors=0; + display(); + return bar==1; + } else if(front==1 and midbar==0 and back==1) { //test barcode + ENA=0; + ENB=0; + /*motors=0.095; + wait(1); + motors=0;*/ + wait(5); + return bar==1; + + } + + //sine_interrupt.detach(); + wait(0.1); + return bar ==0; +} +int main() +{ + + + pull100=0; + pull1=0; + pull2=0; + //pull3.mode(PullUp); + //pull4=0; + //pull5=0; + pull6=0; + //pull7=0; + //pull8.mode(PullUp); + pull9=0; + pull10=0; + pull11=0; + pull12=0; + pull13=0; + pull14=0; + pull15=0; + pull16=0; + //pull17=0; + //pull18=0; + //pull19=0; + pull20=0; + //pull21=0; + //pull22=0; + //pull23=0; + //pull24=0; + //pull25=0; + //pull26=0; + pull27=0; + pull28=0; + pull29=0; + //pull30=0; + //pull34=0; + //pull35=0; + //pull38=0; + //pull39=0; + //pull47=0; + //pull48=0; + //pull49=0; + //pull50=0; + //pull51=0; + //pull52=0; + //pull53=0; + + + + + motors.period(3.0); + motors.write(0); + solenoid=0; + + + + constant1=1; + constant2=1; + constant3=1; + constant4=1; + constant5=1; + constant6=1; + + indicator=1; + wait(0.3); + indicator=0; + wait(0.3); + indicator=1; + wait(0.3); + indicator=0; + + //define pwn freq for dispenser + dispenser.period(1/2048); + + + dispenser=0.5; + + ENA.period(0.001); + ENB.period(0.001); + + IN1=0; + IN2=1; + IN3=0; + IN4=1; + //set inital pwm values for motor driver outputs + ENA=0; + ENB=0; + //You´ll never be the real slim shady + //int counter=0; + + bcd0 = 0; + bcd1 = 0; + bcd2 = 0; + bcd3 = 0; + constant7 = 1; + ballcount=0; + + ball_trigger.fall(&count); + //sine_interrupt.attach(&create_sine , interrupt_f); + + while(1) { + + //sine_interrupt.attach(&create_sine , interrupt_f); + //sine_interrupt.detach(); + + bar = 0; + //counter=counter+1; + //zonecounter=zonecounter+1; + + if(middle<0.4 & left<0.4 & right<0.4 & leftmost<0.4 & rightmost<0.4) { + //skip the loop + ledmiddle=0; + ledleft=0; + ledright=0; + ledleftmost=0; + ledrightmost=0; + } else { + + + if(middle>0.4) { + ledmiddle=1; + ENA=0.5; + ENB=0.5; + } else { + ledmiddle=0; + ENA=0.45; + ENB=0.45; + } + + if(left>0.4) { + ledleft=1; + ENA=0.25; + } else { + ledleft=0; + } + + if(right>0.4) { + ledright=1; + ENB=0.25; + } else { + ledright=0; + } + + + + if(leftmost>0.4) { + ledleftmost=1; + ENA=0; + } else { + ledleftmost=0; + } + + + + if(rightmost>0.4) { + ledrightmost=1; + ENB=0; + } else { + ledrightmost=0; + } + + + + if((left>0.4 or leftmost>0.4)and(right>0.4 or rightmost>0.4)) { + ENB=0.38; + ENA=0; + wait(2); + + } + + + + if(bar == 0) { + barcode(); + } + + + + + wait(0.01); + + + } + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Mar 11 16:55:57 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/87f2f5183dfb \ No newline at end of file