TDP3 Go-Yeti / Mbed 2 deprecated DontKillMbed

Dependencies:   mbed

Committer:
joankangro
Date:
Fri Feb 26 14:13:18 2016 +0000
Revision:
3:d837b1626ac2
Parent:
2:8435af9e917a
Child:
4:464ccaee7062
mideimad;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joankangro 0:e679a1bb6eca 1 #include "mbed.h"
joankangro 0:e679a1bb6eca 2
joankangro 0:e679a1bb6eca 3 //Pull everything up
ibrahim1995 1:94577052d858 4 DigitalOut pull1(PTA1);
ibrahim1995 1:94577052d858 5 DigitalOut pull2(PTA2);
ibrahim1995 1:94577052d858 6 //DigitalOut pull4(PTA12);
ibrahim1995 1:94577052d858 7 //DigitalOut pull5(PTA4);
ibrahim1995 1:94577052d858 8 DigitalOut pull6(PTA5);
ibrahim1995 1:94577052d858 9 DigitalOut pull7(PTC8);
joankangro 0:e679a1bb6eca 10
ibrahim1995 1:94577052d858 11 DigitalOut pull9(PTA13);
ibrahim1995 1:94577052d858 12 DigitalOut pull10(PTD5);
ibrahim1995 1:94577052d858 13 DigitalOut pull11(PTD0);
ibrahim1995 1:94577052d858 14 DigitalOut pull12(PTD2);
ibrahim1995 1:94577052d858 15 DigitalOut pull13(PTD3);
ibrahim1995 1:94577052d858 16 DigitalOut pull14(PTD1);
ibrahim1995 1:94577052d858 17 DigitalOut pull15(PTE0);
ibrahim1995 1:94577052d858 18 DigitalOut pull16(PTE1);
joankangro 0:e679a1bb6eca 19
ibrahim1995 1:94577052d858 20 //DigitalOut pull17(PTC7);
ibrahim1995 1:94577052d858 21 //DigitalOut pull18(PTC0);
ibrahim1995 1:94577052d858 22 DigitalOut pull19(PTC3);
ibrahim1995 1:94577052d858 23 DigitalOut pull20(PTC4);
joankangro 0:e679a1bb6eca 24
ibrahim1995 1:94577052d858 25 DigitalOut pull21(PTC12);
ibrahim1995 1:94577052d858 26 DigitalOut pull22(PTC13);
ibrahim1995 1:94577052d858 27 DigitalOut pull23(PTC16);
ibrahim1995 1:94577052d858 28 DigitalOut pull24(PTC17);
ibrahim1995 1:94577052d858 29 DigitalOut pull25(PTA16);
ibrahim1995 1:94577052d858 30 DigitalOut pull26(PTA17);
ibrahim1995 1:94577052d858 31 DigitalOut pull27(PTE31);
ibrahim1995 1:94577052d858 32 DigitalOut pull28(PTD6);
ibrahim1995 1:94577052d858 33 DigitalOut pull29(PTD7);
ibrahim1995 1:94577052d858 34
joankangro 3:d837b1626ac2 35 //DigitalOut pull30(PTE30);
joankangro 0:e679a1bb6eca 36
ibrahim1995 1:94577052d858 37 //DigitalOut pull38(PTE3);
ibrahim1995 1:94577052d858 38 DigitalOut pull39(PTE2);
ibrahim1995 1:94577052d858 39 //DigitalOut pull50(PTB11);
ibrahim1995 1:94577052d858 40 //DigitalOut pull51(PTB10);
ibrahim1995 1:94577052d858 41 //DigitalOut pull52(PTB9);
ibrahim1995 1:94577052d858 42 //DigitalOut pull53(PTB8);
joankangro 0:e679a1bb6eca 43
ibrahim1995 1:94577052d858 44 //DigitalOut pull34(PTE21);
ibrahim1995 1:94577052d858 45 //DigitalOut pull35(PTE20);
ibrahim1995 1:94577052d858 46 //DigitalOut pull47(PTB1);
ibrahim1995 1:94577052d858 47 //DigitalOut pull48(PTB0);
joankangro 0:e679a1bb6eca 48
joankangro 0:e679a1bb6eca 49
joankangro 0:e679a1bb6eca 50 //motor driver outputs
joankangro 0:e679a1bb6eca 51 DigitalOut IN4(PTC5);
joankangro 0:e679a1bb6eca 52 DigitalOut IN3(PTC6);
joankangro 0:e679a1bb6eca 53 DigitalOut IN2(PTC10);
joankangro 0:e679a1bb6eca 54 DigitalOut IN1(PTC11);
joankangro 0:e679a1bb6eca 55 PwmOut ENA(PTC9);
joankangro 0:e679a1bb6eca 56 PwmOut ENB(PTD4);
joankangro 0:e679a1bb6eca 57
joankangro 3:d837b1626ac2 58 DigitalOut indicator(LED_GREEN);
joankangro 0:e679a1bb6eca 59
joankangro 0:e679a1bb6eca 60 //constant 3.3 volts for sensors
joankangro 0:e679a1bb6eca 61 DigitalOut constant1(PTE5);
joankangro 0:e679a1bb6eca 62 DigitalOut constant2(PTE4);
ibrahim1995 1:94577052d858 63 DigitalOut constant3(PTE3);
ibrahim1995 1:94577052d858 64 DigitalOut constant4(PTC0);
ibrahim1995 1:94577052d858 65 DigitalOut constant5(PTC7);
joankangro 0:e679a1bb6eca 66
joankangro 0:e679a1bb6eca 67 //line following inputs
ibrahim1995 1:94577052d858 68 AnalogIn leftmost(PTB0);
joankangro 0:e679a1bb6eca 69 AnalogIn left(PTC2);
ibrahim1995 1:94577052d858 70 AnalogIn middle(PTB3);
ibrahim1995 1:94577052d858 71 AnalogIn right(PTB2);
ibrahim1995 1:94577052d858 72 AnalogIn rightmost(PTB1);
ibrahim1995 1:94577052d858 73
ibrahim1995 1:94577052d858 74 DigitalIn back(PTB11);
ibrahim1995 1:94577052d858 75 DigitalIn front(PTB10);
joankangro 0:e679a1bb6eca 76
joankangro 0:e679a1bb6eca 77 //debugging led outputs
ibrahim1995 1:94577052d858 78 DigitalOut ledleftmost(PTE20);
ibrahim1995 1:94577052d858 79 DigitalOut ledright(PTE23);
ibrahim1995 1:94577052d858 80 DigitalOut ledmiddle(PTE22);
ibrahim1995 1:94577052d858 81 DigitalOut ledleft(PTE29);
ibrahim1995 1:94577052d858 82 DigitalOut ledrightmost(PTE21);
ibrahim1995 1:94577052d858 83
ibrahim1995 1:94577052d858 84 DigitalOut ledback(PTB8);
ibrahim1995 1:94577052d858 85 DigitalOut ledfront(PTB9);
ibrahim1995 1:94577052d858 86
ibrahim1995 1:94577052d858 87 //ball firing
ibrahim1995 1:94577052d858 88 PwmOut motors(PTA12);
ibrahim1995 1:94577052d858 89 DigitalOut solenoid(PTA4);
joankangro 0:e679a1bb6eca 90
joankangro 3:d837b1626ac2 91 //Ball dispensing
joankangro 3:d837b1626ac2 92 Ticker sine_interrupt;
joankangro 3:d837b1626ac2 93 AnalogOut Aout(PTE30);
joankangro 3:d837b1626ac2 94 double interrupt_f = .00001525878; // (1/2048*32)
joankangro 3:d837b1626ac2 95 static int sine_wave_steps = 32; // number of steps in sine wave
joankangro 3:d837b1626ac2 96 int sine_counter = 0;
joankangro 3:d837b1626ac2 97 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};
joankangro 3:d837b1626ac2 98
joankangro 3:d837b1626ac2 99
joankangro 3:d837b1626ac2 100 void create_sine() { //subroutine for interrupt, creates sine wave
joankangro 3:d837b1626ac2 101 sine_counter = sine_counter + 1; //run through sine array
joankangro 3:d837b1626ac2 102 if (sine_counter >= sine_wave_steps){
joankangro 3:d837b1626ac2 103 sine_counter = 0; //repeat sine wave
joankangro 3:d837b1626ac2 104 }
joankangro 3:d837b1626ac2 105 Aout = sine_val[sine_counter]; //output decimal 0-1 on DAC
joankangro 3:d837b1626ac2 106 }
joankangro 3:d837b1626ac2 107
joankangro 3:d837b1626ac2 108
joankangro 0:e679a1bb6eca 109 int main() {
joankangro 0:e679a1bb6eca 110
ibrahim1995 1:94577052d858 111
ibrahim1995 1:94577052d858 112
ibrahim1995 1:94577052d858 113 pull1=0;
ibrahim1995 1:94577052d858 114 pull2=0;
joankangro 0:e679a1bb6eca 115 //pull3.mode(PullUp);
ibrahim1995 1:94577052d858 116 //pull4=0;
ibrahim1995 1:94577052d858 117 //pull5=0;
ibrahim1995 1:94577052d858 118 pull6=0;
ibrahim1995 1:94577052d858 119 pull7=0;
joankangro 0:e679a1bb6eca 120 //pull8.mode(PullUp);
ibrahim1995 1:94577052d858 121 pull9=0;
ibrahim1995 1:94577052d858 122 pull10=0;
ibrahim1995 1:94577052d858 123 pull11=0;
ibrahim1995 1:94577052d858 124 pull12=0;
ibrahim1995 1:94577052d858 125 pull13=0;
ibrahim1995 1:94577052d858 126 pull14=0;
ibrahim1995 1:94577052d858 127 pull15=0;
ibrahim1995 1:94577052d858 128 pull16=0;
ibrahim1995 1:94577052d858 129 //pull17=0;
ibrahim1995 1:94577052d858 130 //pull18=0;
ibrahim1995 1:94577052d858 131 pull19=0;
ibrahim1995 1:94577052d858 132 pull20=0;
ibrahim1995 1:94577052d858 133 pull21=0;
ibrahim1995 1:94577052d858 134 pull22=0;
ibrahim1995 1:94577052d858 135 pull23=0;
ibrahim1995 1:94577052d858 136 pull24=0;
ibrahim1995 1:94577052d858 137 pull25=0;
ibrahim1995 1:94577052d858 138 pull26=0;
ibrahim1995 1:94577052d858 139 pull27=0;
ibrahim1995 1:94577052d858 140 pull28=0;
ibrahim1995 1:94577052d858 141 pull29=0;
joankangro 3:d837b1626ac2 142 //pull30=0;
ibrahim1995 1:94577052d858 143 //pull34=0;
ibrahim1995 1:94577052d858 144 //pull35=0;
ibrahim1995 1:94577052d858 145 //pull38=0;
ibrahim1995 1:94577052d858 146 pull39=0;
ibrahim1995 1:94577052d858 147 //pull47=0;
ibrahim1995 1:94577052d858 148 //pull48=0;
ibrahim1995 1:94577052d858 149 //pull49=0;
ibrahim1995 1:94577052d858 150 //pull50=0;
ibrahim1995 1:94577052d858 151 //pull51=0;
ibrahim1995 1:94577052d858 152 //pull52=0;
ibrahim1995 1:94577052d858 153 //pull53=0;
ibrahim1995 1:94577052d858 154
ibrahim1995 1:94577052d858 155
ibrahim1995 1:94577052d858 156
ibrahim1995 1:94577052d858 157
ibrahim1995 1:94577052d858 158 motors.period(3.0);
ibrahim1995 1:94577052d858 159 motors.write(0);
ibrahim1995 1:94577052d858 160 solenoid=0;
ibrahim1995 1:94577052d858 161
ibrahim1995 1:94577052d858 162 constant1=1;
ibrahim1995 1:94577052d858 163 constant2=1;
ibrahim1995 1:94577052d858 164 constant3=1;
ibrahim1995 1:94577052d858 165 constant4=1;
ibrahim1995 1:94577052d858 166 constant5=1;
joankangro 0:e679a1bb6eca 167
joankangro 0:e679a1bb6eca 168 indicator=1;
joankangro 0:e679a1bb6eca 169 wait(0.3);
joankangro 0:e679a1bb6eca 170 indicator=0;
joankangro 0:e679a1bb6eca 171 wait(0.3);
joankangro 0:e679a1bb6eca 172 indicator=1;
joankangro 0:e679a1bb6eca 173 wait(0.3);
joankangro 0:e679a1bb6eca 174 indicator=0;
joankangro 0:e679a1bb6eca 175
joankangro 0:e679a1bb6eca 176 ENA.period(0.001);
joankangro 0:e679a1bb6eca 177 ENB.period(0.001);
joankangro 0:e679a1bb6eca 178
joankangro 0:e679a1bb6eca 179 IN1=0;
joankangro 0:e679a1bb6eca 180 IN2=1;
joankangro 0:e679a1bb6eca 181 IN3=0;
joankangro 0:e679a1bb6eca 182 IN4=1;
joankangro 0:e679a1bb6eca 183 //set inital pwm values for motor driver outputs
joankangro 0:e679a1bb6eca 184 ENA=0;
joankangro 0:e679a1bb6eca 185 ENB=0;
joankangro 3:d837b1626ac2 186 //You´ll never be the real slim shady
ibrahim1995 1:94577052d858 187 int counter=0;
ibrahim1995 1:94577052d858 188
joankangro 0:e679a1bb6eca 189 while(1) {
joankangro 0:e679a1bb6eca 190
ibrahim1995 1:94577052d858 191 counter=counter+1;
joankangro 0:e679a1bb6eca 192
ibrahim1995 1:94577052d858 193 if(middle<0.4 & left<0.4 & right<0.4 & leftmost<0.4 & rightmost<0.24){
ibrahim1995 1:94577052d858 194 //skip the loop
ibrahim1995 1:94577052d858 195 ledmiddle=0;
ibrahim1995 1:94577052d858 196 ledleft=0;
ibrahim1995 1:94577052d858 197 ledright=0;
ibrahim1995 1:94577052d858 198 ledleftmost=0;
ibrahim1995 1:94577052d858 199 ledrightmost=0;
joankangro 0:e679a1bb6eca 200 }else{
ibrahim1995 1:94577052d858 201
ibrahim1995 1:94577052d858 202 if(front==1){
ibrahim1995 1:94577052d858 203 ledfront=1;
ibrahim1995 1:94577052d858 204 }else{
ibrahim1995 1:94577052d858 205 ledfront=0;
ibrahim1995 1:94577052d858 206 }
ibrahim1995 1:94577052d858 207
ibrahim1995 1:94577052d858 208 if(back==1){
ibrahim1995 1:94577052d858 209 ledback=1;
ibrahim1995 1:94577052d858 210 }else{
ibrahim1995 1:94577052d858 211 ledback=0;
ibrahim1995 1:94577052d858 212 }
ibrahim1995 1:94577052d858 213
ibrahim1995 1:94577052d858 214 if(back==1 and counter>70){
ibrahim1995 1:94577052d858 215 counter=0;
ibrahim1995 1:94577052d858 216 ENB=0;
ibrahim1995 1:94577052d858 217 ENA=0;
ibrahim1995 1:94577052d858 218 if(front==0){
ibrahim1995 1:94577052d858 219 //shoot balls
joankangro 3:d837b1626ac2 220 motors=0.095;
ibrahim1995 1:94577052d858 221 wait_ms(550);
ibrahim1995 1:94577052d858 222 solenoid=1;
ibrahim1995 1:94577052d858 223 wait_ms(45);
ibrahim1995 1:94577052d858 224 solenoid=0;
joankangro 3:d837b1626ac2 225 }else{
joankangro 3:d837b1626ac2 226 //dispense balls
joankangro 3:d837b1626ac2 227 //sine_interrupt.attach(&create_sine , interrupt_f); // function called by interrupt, frequency of interrupts
ibrahim1995 1:94577052d858 228 }
joankangro 3:d837b1626ac2 229 wait(3);
joankangro 3:d837b1626ac2 230 //__disable_irq();
ibrahim1995 1:94577052d858 231 motors=0;
ibrahim1995 1:94577052d858 232 }
ibrahim1995 1:94577052d858 233
ibrahim1995 1:94577052d858 234
ibrahim1995 1:94577052d858 235
ibrahim1995 1:94577052d858 236 if(middle>0.4){
ibrahim1995 1:94577052d858 237 ledmiddle=1;
ibrahim1995 1:94577052d858 238 ENA=0.5;
ibrahim1995 1:94577052d858 239 ENB=0.5;
ibrahim1995 1:94577052d858 240 }else{
ibrahim1995 1:94577052d858 241 ledmiddle=0;
ibrahim1995 1:94577052d858 242 ENA=0.4;
ibrahim1995 1:94577052d858 243 ENB=0.4;
ibrahim1995 1:94577052d858 244 }
ibrahim1995 1:94577052d858 245
ibrahim1995 1:94577052d858 246 if(left>0.4){
ibrahim1995 1:94577052d858 247 ledleft=1;
ibrahim1995 1:94577052d858 248 indicator=1;
ibrahim1995 1:94577052d858 249 ENA=0.28;
ibrahim1995 1:94577052d858 250 }else{
ibrahim1995 1:94577052d858 251 ledleft=0;
ibrahim1995 1:94577052d858 252 }
joankangro 0:e679a1bb6eca 253
ibrahim1995 1:94577052d858 254 if(right>0.4){
ibrahim1995 1:94577052d858 255 ledright=1;
ibrahim1995 1:94577052d858 256 ENB=0.28;
ibrahim1995 1:94577052d858 257 }else{
ibrahim1995 1:94577052d858 258 ledright=0;
ibrahim1995 1:94577052d858 259 }
ibrahim1995 1:94577052d858 260
ibrahim1995 1:94577052d858 261 if(leftmost>0.4){
ibrahim1995 1:94577052d858 262 ledleftmost=1;
ibrahim1995 1:94577052d858 263 ENA=0;
ibrahim1995 1:94577052d858 264 }else{
ibrahim1995 1:94577052d858 265 ledleftmost=0;
ibrahim1995 1:94577052d858 266 }
joankangro 0:e679a1bb6eca 267
ibrahim1995 1:94577052d858 268 if(rightmost>0.24){
ibrahim1995 1:94577052d858 269 ledrightmost=1;
ibrahim1995 1:94577052d858 270 ENB=0;
ibrahim1995 1:94577052d858 271 }else{
ibrahim1995 1:94577052d858 272 ledrightmost=0;
ibrahim1995 1:94577052d858 273 }
ibrahim1995 1:94577052d858 274
ibrahim1995 1:94577052d858 275
ibrahim1995 1:94577052d858 276 if((left>0.4 or leftmost>0.4)and(right>0.4 or rightmost>0.24)){
ibrahim1995 1:94577052d858 277 ENB=0.4;
ibrahim1995 1:94577052d858 278 ENA=0;
ibrahim1995 1:94577052d858 279 wait(0.5);
ibrahim1995 1:94577052d858 280 }
ibrahim1995 1:94577052d858 281
joankangro 0:e679a1bb6eca 282 }
ibrahim1995 1:94577052d858 283
ibrahim1995 1:94577052d858 284 wait(0.1);
joankangro 0:e679a1bb6eca 285
joankangro 0:e679a1bb6eca 286
joankangro 0:e679a1bb6eca 287 }
joankangro 0:e679a1bb6eca 288 }