groep 12 script
Dependencies: MODSERIAL QEI mbed
main.cpp@0:b8b3d2b08eb9, 2016-10-17 (annotated)
- Committer:
- sivuu
- Date:
- Mon Oct 17 08:23:28 2016 +0000
- Revision:
- 0:b8b3d2b08eb9
groep 12
Who changed what in which revision?
User | Revision | Line number | New 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 |