ES305H Lanier Turchan / Mbed 2 deprecated ModellingTurret

Dependencies:   QEI mbed

Fork of GainController by ES305H Lanier Turchan

Committer:
LanierUSNA16
Date:
Tue Mar 31 12:48:54 2015 +0000
Revision:
2:eabcd6202bff
Parent:
1:d4c2e72540db
Child:
3:9bdf180baa64
Modelling Turret;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LanierUSNA16 0:8d7b6e55609a 1 #include "mbed.h"
LanierUSNA16 0:8d7b6e55609a 2 #include "QEI.h"
LanierUSNA16 0:8d7b6e55609a 3
LanierUSNA16 0:8d7b6e55609a 4 PwmOut turret_speed(p21);
LanierUSNA16 0:8d7b6e55609a 5 DigitalOut turret_direction(p22);
LanierUSNA16 0:8d7b6e55609a 6
LanierUSNA16 0:8d7b6e55609a 7 QEI myEncoder (p16,p15, NC, 1600);
LanierUSNA16 0:8d7b6e55609a 8 Timer t;
LanierUSNA16 0:8d7b6e55609a 9
LanierUSNA16 0:8d7b6e55609a 10 int main()
LanierUSNA16 0:8d7b6e55609a 11 {
LanierUSNA16 0:8d7b6e55609a 12 int input_dc =50;
LanierUSNA16 0:8d7b6e55609a 13 int user_direction = 0;
LanierUSNA16 1:d4c2e72540db 14 float duty_cycle = 0.0;
LanierUSNA16 0:8d7b6e55609a 15 int pulses = 0;
LanierUSNA16 2:eabcd6202bff 16 float time[500]={0} ;
LanierUSNA16 2:eabcd6202bff 17 float theta[500]={0} ;
LanierUSNA16 2:eabcd6202bff 18 float ang_v[500]={0};
LanierUSNA16 2:eabcd6202bff 19 int counter = 1;
LanierUSNA16 2:eabcd6202bff 20 int k = 0;
LanierUSNA16 2:eabcd6202bff 21
LanierUSNA16 0:8d7b6e55609a 22
LanierUSNA16 0:8d7b6e55609a 23 while(1)
LanierUSNA16 0:8d7b6e55609a 24 {
LanierUSNA16 2:eabcd6202bff 25 printf("Enter duty cycle, 0 to 100:\n");
LanierUSNA16 2:eabcd6202bff 26 scanf("%d", &input_dc);
LanierUSNA16 0:8d7b6e55609a 27
LanierUSNA16 2:eabcd6202bff 28 duty_cycle = input_dc/100.0;
LanierUSNA16 1:d4c2e72540db 29
LanierUSNA16 2:eabcd6202bff 30 printf("\n %f duty cycle set. Enter 0 for CCW or 1 for CW spin direction:\n",duty_cycle);
LanierUSNA16 0:8d7b6e55609a 31 scanf("%d", &user_direction);
LanierUSNA16 2:eabcd6202bff 32
LanierUSNA16 0:8d7b6e55609a 33 turret_speed = duty_cycle;
LanierUSNA16 0:8d7b6e55609a 34 turret_direction = user_direction;
LanierUSNA16 1:d4c2e72540db 35 printf("%f duty cycle. %d spin.\n", duty_cycle, user_direction);
LanierUSNA16 2:eabcd6202bff 36
LanierUSNA16 2:eabcd6202bff 37 t.start();
LanierUSNA16 2:eabcd6202bff 38 while(time[counter-1]<5.05)
LanierUSNA16 2:eabcd6202bff 39 {
LanierUSNA16 2:eabcd6202bff 40 wait(0.01);
LanierUSNA16 2:eabcd6202bff 41 pulses = myEncoder.getPulses();
LanierUSNA16 2:eabcd6202bff 42 theta[counter] = ((float)pulses/ (1600.0*2.0))*-2.0*3.14;
LanierUSNA16 2:eabcd6202bff 43 time[counter] = t.read();
LanierUSNA16 2:eabcd6202bff 44 ang_v[counter]=(theta[counter]-theta[counter-1])/(time[counter]-time[counter-1]);
LanierUSNA16 2:eabcd6202bff 45
LanierUSNA16 2:eabcd6202bff 46 printf("time(%d,1) = %.5f;\n",counter,time[counter]);
LanierUSNA16 2:eabcd6202bff 47 printf("theta(%d,1) = %.5f;\n",counter,theta[counter]);
LanierUSNA16 2:eabcd6202bff 48 printf("ang_v(%d,1) = %.5f; \n",counter,ang_v[counter]);
LanierUSNA16 2:eabcd6202bff 49 counter = counter +1;
LanierUSNA16 2:eabcd6202bff 50 }
LanierUSNA16 2:eabcd6202bff 51 turret_speed = 0;
LanierUSNA16 2:eabcd6202bff 52 t.stop();
LanierUSNA16 0:8d7b6e55609a 53
LanierUSNA16 2:eabcd6202bff 54 for(k=0; k<counter+1; k++)
LanierUSNA16 1:d4c2e72540db 55 {
LanierUSNA16 2:eabcd6202bff 56 printf("time(%d,1) = %.5f;\n",k+1,time[k]);
LanierUSNA16 2:eabcd6202bff 57 printf("theta(%d,1) = %.5f;\n",k+1,theta[k]);
LanierUSNA16 2:eabcd6202bff 58 }
LanierUSNA16 2:eabcd6202bff 59 printf("Duty Cycle = %f", duty_cycle);
LanierUSNA16 2:eabcd6202bff 60
LanierUSNA16 0:8d7b6e55609a 61 }
LanierUSNA16 0:8d7b6e55609a 62 }