groep 12 script

Dependencies:   MODSERIAL QEI mbed

Committer:
sivuu
Date:
Mon Oct 17 08:23:28 2016 +0000
Revision:
0:b8b3d2b08eb9
groep 12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sivuu 0:b8b3d2b08eb9 1 #include "mbed.h" //standaard bieb mbed
sivuu 0:b8b3d2b08eb9 2 #include "QEI.h" //bieb voor encoderfuncties in c++
sivuu 0:b8b3d2b08eb9 3 #include "MODSERIAL.h" //bieb voor modserial
sivuu 0:b8b3d2b08eb9 4 InterruptIn sw3(SW3);
sivuu 0:b8b3d2b08eb9 5 DigitalIn encoder1A(D13);
sivuu 0:b8b3d2b08eb9 6 DigitalIn encoder1B(D12);
sivuu 0:b8b3d2b08eb9 7 DigitalIn button_cw(D11);
sivuu 0:b8b3d2b08eb9 8 DigitalIn encoder2A(D15);
sivuu 0:b8b3d2b08eb9 9 DigitalIn encoder2B(D14);
sivuu 0:b8b3d2b08eb9 10 DigitalIn button_ccw(D9);
sivuu 0:b8b3d2b08eb9 11 DigitalOut ledcw(D10);
sivuu 0:b8b3d2b08eb9 12 DigitalOut ledccw(D2);
sivuu 0:b8b3d2b08eb9 13 MODSERIAL pc(USBTX, USBRX);
sivuu 0:b8b3d2b08eb9 14 DigitalOut richting_motor1(D4);
sivuu 0:b8b3d2b08eb9 15 PwmOut pwm_motor1(D5);
sivuu 0:b8b3d2b08eb9 16 DigitalOut richting_motor2(D7);
sivuu 0:b8b3d2b08eb9 17 PwmOut pwm_motor2(D6);
sivuu 0:b8b3d2b08eb9 18
sivuu 0:b8b3d2b08eb9 19
sivuu 0:b8b3d2b08eb9 20 int n = 0; //start van de teller wordt op nul gesteld
sivuu 0:b8b3d2b08eb9 21
sivuu 0:b8b3d2b08eb9 22 void SwitchN() { // maakt simpele functie die 1 bij n optelt
sivuu 0:b8b3d2b08eb9 23 n++;
sivuu 0:b8b3d2b08eb9 24 }
sivuu 0:b8b3d2b08eb9 25
sivuu 0:b8b3d2b08eb9 26 //constanten voor de encoder
sivuu 0:b8b3d2b08eb9 27 const int CW = 1; //definitie rechtsom 'lage waarde'
sivuu 0:b8b3d2b08eb9 28 const int CCW =0; //definitie linksom 'hoge waarde'
sivuu 0:b8b3d2b08eb9 29 const float gearboxratio=131; // gearboxratio van encoder naar motor
sivuu 0:b8b3d2b08eb9 30 const int rev_rond=32; // aantal revoluties per omgang van de encoder
sivuu 0:b8b3d2b08eb9 31
sivuu 0:b8b3d2b08eb9 32
sivuu 0:b8b3d2b08eb9 33 int main()
sivuu 0:b8b3d2b08eb9 34 {
sivuu 0:b8b3d2b08eb9 35 pc.baud(115200); // zorgt voor de link voor putty, 115200 is snelheid
sivuu 0:b8b3d2b08eb9 36 QEI Encoder1(D12,D13, NC, rev_rond); // maakt een encoder aan! D12/D13 ingangen, rev_rond zijn aantal pulsen per revolutie! Bovenaan in te stellen.
sivuu 0:b8b3d2b08eb9 37 QEI Encoder2(D15,D14, NC, rev_rond);
sivuu 0:b8b3d2b08eb9 38 float counts_encoder1; //variabele counts aanmaken
sivuu 0:b8b3d2b08eb9 39 float rev_counts_motor1; //variabele motor rondjes aanmaken in radialen!!
sivuu 0:b8b3d2b08eb9 40 float counts_encoder2;
sivuu 0:b8b3d2b08eb9 41 float rev_counts_motor2;
sivuu 0:b8b3d2b08eb9 42
sivuu 0:b8b3d2b08eb9 43 const float a=1.0; //voltingang motor 1
sivuu 0:b8b3d2b08eb9 44 const float b=12;//voltingang motor 2
sivuu 0:b8b3d2b08eb9 45
sivuu 0:b8b3d2b08eb9 46 while (true) { // zorgt er voor dat de code oneindig doorgelopen wordt
sivuu 0:b8b3d2b08eb9 47
sivuu 0:b8b3d2b08eb9 48
sivuu 0:b8b3d2b08eb9 49 if (button_cw==0) // als s ingedrukt wordt gebeurd het volgende
sivuu 0:b8b3d2b08eb9 50 {
sivuu 0:b8b3d2b08eb9 51
sivuu 0:b8b3d2b08eb9 52 richting_motor1 = CW;
sivuu 0:b8b3d2b08eb9 53 pwm_motor1 = a;
sivuu 0:b8b3d2b08eb9 54 counts_encoder1 = Encoder1.getPulses(); //tellen van de pulsen in
sivuu 0:b8b3d2b08eb9 55 rev_counts_motor1=counts_encoder1/(gearboxratio*rev_rond); //berekenen van het aantal rondjes van motor. Gedeeld door gearboxratio en rev rond, om naar motorrondjes te gaan in plaats van pulsen van encoder!
sivuu 0:b8b3d2b08eb9 56 pc.printf("motor rondjes motor1: %f \r\n", rev_counts_motor1); //weergeven
sivuu 0:b8b3d2b08eb9 57
sivuu 0:b8b3d2b08eb9 58
sivuu 0:b8b3d2b08eb9 59 // als s is ingedrukt maar het getal is niet even (dus oneven) gebeurdt het onderstaande
sivuu 0:b8b3d2b08eb9 60
sivuu 0:b8b3d2b08eb9 61 pc.printf("n is odd \n\r"); // print lijn "n is odd"
sivuu 0:b8b3d2b08eb9 62 pc.printf("left \n\r"); // print lijn "left"
sivuu 0:b8b3d2b08eb9 63 richting_motor2 = CCW;
sivuu 0:b8b3d2b08eb9 64 pwm_motor2 = b;
sivuu 0:b8b3d2b08eb9 65 counts_encoder2 = Encoder2.getPulses(); //tellen van de pulsen in
sivuu 0:b8b3d2b08eb9 66 rev_counts_motor2=counts_encoder2/(gearboxratio*rev_rond); //weergeven van het aantal rondjes
sivuu 0:b8b3d2b08eb9 67 pc.printf("motor rondjes motor2: %f \r\n", rev_counts_motor2);
sivuu 0:b8b3d2b08eb9 68 }
sivuu 0:b8b3d2b08eb9 69
sivuu 0:b8b3d2b08eb9 70 else{
sivuu 0:b8b3d2b08eb9 71 // pc.printf("motor staat stil \n\r");
sivuu 0:b8b3d2b08eb9 72 pwm_motor2=0;
sivuu 0:b8b3d2b08eb9 73 pwm_motor1=0;
sivuu 0:b8b3d2b08eb9 74 }
sivuu 0:b8b3d2b08eb9 75 }
sivuu 0:b8b3d2b08eb9 76 }
sivuu 0:b8b3d2b08eb9 77