
motor aansturing moet lineair zijn is het niet
Dependencies: MODSERIAL Encoder mbed HIDScope
main.cpp@9:f907915f269c, 2015-10-02 (annotated)
- Committer:
- Zeekat
- Date:
- Fri Oct 02 10:56:17 2015 +0000
- Revision:
- 9:f907915f269c
- Parent:
- 8:83d522d8f2b8
- Child:
- 10:b2742f42de44
werkende simpele besturing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Zeekat | 0:5ea1875b307a | 1 | #include "mbed.h" |
Zeekat | 4:e171c9fa5447 | 2 | #include "MODSERIAL.h" |
Zeekat | 9:f907915f269c | 3 | #include "encoder.h" |
Zeekat | 4:e171c9fa5447 | 4 | |
Zeekat | 4:e171c9fa5447 | 5 | Serial pc(USBTX,USBRX); |
Zeekat | 4:e171c9fa5447 | 6 | |
Zeekat | 4:e171c9fa5447 | 7 | Ticker mod; |
Zeekat | 0:5ea1875b307a | 8 | |
Zeekat | 0:5ea1875b307a | 9 | //MOTOR |
Zeekat | 0:5ea1875b307a | 10 | // motor 1 en 2 zijn omgedraait |
Zeekat | 0:5ea1875b307a | 11 | // pinnen motor 1 -> pinnen motor 2 |
Zeekat | 0:5ea1875b307a | 12 | |
Zeekat | 0:5ea1875b307a | 13 | //motor 1 gegevens |
Zeekat | 0:5ea1875b307a | 14 | PwmOut motor1_aan(D6); // PWM signaal motor 2 (uit sheets) |
Zeekat | 0:5ea1875b307a | 15 | DigitalOut motor1_rich(D7); // digitaal signaal voor richting |
Zeekat | 0:5ea1875b307a | 16 | // einde motor 1 |
Zeekat | 0:5ea1875b307a | 17 | |
Zeekat | 0:5ea1875b307a | 18 | //motor 2 gegevens |
Zeekat | 0:5ea1875b307a | 19 | PwmOut motor2_aan(D5); // PWM signaal motor 1 (uit sheets) |
Zeekat | 0:5ea1875b307a | 20 | DigitalOut motor2_rich(D4); // digitaal signaal voor richting |
Zeekat | 0:5ea1875b307a | 21 | // einde motor 1 |
Zeekat | 0:5ea1875b307a | 22 | //EINDE MOTOR |
Zeekat | 0:5ea1875b307a | 23 | |
Zeekat | 9:f907915f269c | 24 | // ENCODER |
Zeekat | 9:f907915f269c | 25 | Encoder motor1_enc(D12,D11); |
Zeekat | 9:f907915f269c | 26 | Encoder motor2_enc(D10,D9); |
Zeekat | 4:e171c9fa5447 | 27 | |
Zeekat | 0:5ea1875b307a | 28 | |
Zeekat | 0:5ea1875b307a | 29 | //POTMETERS |
Zeekat | 0:5ea1875b307a | 30 | AnalogIn potleft(A1); |
Zeekat | 0:5ea1875b307a | 31 | AnalogIn potright(A0); |
Zeekat | 0:5ea1875b307a | 32 | |
Zeekat | 5:46dae55f0ab0 | 33 | DigitalIn button(PTA4); |
Zeekat | 5:46dae55f0ab0 | 34 | int button_on = 0; |
Zeekat | 4:e171c9fa5447 | 35 | |
Zeekat | 9:f907915f269c | 36 | |
Zeekat | 8:83d522d8f2b8 | 37 | void move_mot1(double left) |
Zeekat | 0:5ea1875b307a | 38 | { |
Zeekat | 6:3031e8abb052 | 39 | if(left < 0.400) |
Zeekat | 1:8918d924f625 | 40 | { |
Zeekat | 8:83d522d8f2b8 | 41 | double calc1 = left - 1; |
Zeekat | 8:83d522d8f2b8 | 42 | double calc2 = abs(calc1); |
Zeekat | 8:83d522d8f2b8 | 43 | double leftin1 = (calc2-0.6)*2.5 ; |
Zeekat | 6:3031e8abb052 | 44 | motor1_aan.write(leftin1); |
Zeekat | 0:5ea1875b307a | 45 | motor1_rich.write(0); |
Zeekat | 0:5ea1875b307a | 46 | } |
Zeekat | 6:3031e8abb052 | 47 | else if(left > 0.4000 && left < 0.6000) |
Zeekat | 0:5ea1875b307a | 48 | { |
Zeekat | 0:5ea1875b307a | 49 | motor1_aan.write(0); |
Zeekat | 0:5ea1875b307a | 50 | } |
Zeekat | 6:3031e8abb052 | 51 | else if(left > 0.6000) |
Zeekat | 0:5ea1875b307a | 52 | { |
Zeekat | 8:83d522d8f2b8 | 53 | double leftin2 = (left-0.6)*2.5; |
Zeekat | 6:3031e8abb052 | 54 | motor1_aan.write(leftin2); |
Zeekat | 0:5ea1875b307a | 55 | motor1_rich.write(1); |
Zeekat | 0:5ea1875b307a | 56 | } |
Zeekat | 0:5ea1875b307a | 57 | } |
Zeekat | 0:5ea1875b307a | 58 | |
Zeekat | 8:83d522d8f2b8 | 59 | void move_mot2(double right) |
Zeekat | 0:5ea1875b307a | 60 | { |
Zeekat | 6:3031e8abb052 | 61 | if(right < 0.4000) |
Zeekat | 0:5ea1875b307a | 62 | { |
Zeekat | 8:83d522d8f2b8 | 63 | double calc3 = right - 1; |
Zeekat | 8:83d522d8f2b8 | 64 | double calc4 = abs(calc3); |
Zeekat | 8:83d522d8f2b8 | 65 | double rightin1 = (calc4-0.6)*2.5 ; |
Zeekat | 6:3031e8abb052 | 66 | motor2_aan.write(rightin1); |
Zeekat | 0:5ea1875b307a | 67 | motor2_rich.write(0); |
Zeekat | 0:5ea1875b307a | 68 | } |
Zeekat | 6:3031e8abb052 | 69 | else if(right > 0.4000 && right < 0.6000) |
Zeekat | 0:5ea1875b307a | 70 | { |
Zeekat | 0:5ea1875b307a | 71 | motor2_aan.write(0); |
Zeekat | 0:5ea1875b307a | 72 | } |
Zeekat | 6:3031e8abb052 | 73 | else if(right > 0.6000) |
Zeekat | 0:5ea1875b307a | 74 | { |
Zeekat | 8:83d522d8f2b8 | 75 | double rightin2 = (right-0.6)*2.5; |
Zeekat | 6:3031e8abb052 | 76 | motor2_aan.write(rightin2); |
Zeekat | 0:5ea1875b307a | 77 | motor2_rich.write(1); |
Zeekat | 0:5ea1875b307a | 78 | } |
Zeekat | 0:5ea1875b307a | 79 | } |
Zeekat | 0:5ea1875b307a | 80 | |
Zeekat | 4:e171c9fa5447 | 81 | void send() |
Zeekat | 4:e171c9fa5447 | 82 | { |
Zeekat | 9:f907915f269c | 83 | int counts1 = motor1_enc.getPosition(); |
Zeekat | 9:f907915f269c | 84 | int counts2 = motor2_enc.getPosition(); |
Zeekat | 9:f907915f269c | 85 | pc.printf("motor 1 counts, %d motor 2 counts %d \n", counts1, counts2); |
Zeekat | 9:f907915f269c | 86 | } |
Zeekat | 4:e171c9fa5447 | 87 | |
Zeekat | 0:5ea1875b307a | 88 | |
Zeekat | 0:5ea1875b307a | 89 | int main() |
Zeekat | 0:5ea1875b307a | 90 | { |
Zeekat | 4:e171c9fa5447 | 91 | pc.baud(115200); |
Zeekat | 4:e171c9fa5447 | 92 | mod.attach(&send,1); |
Zeekat | 0:5ea1875b307a | 93 | while(true) |
Zeekat | 0:5ea1875b307a | 94 | { |
Zeekat | 8:83d522d8f2b8 | 95 | double left = potleft.read(); |
Zeekat | 9:f907915f269c | 96 | double right = potright.read(); |
Zeekat | 4:e171c9fa5447 | 97 | move_mot1(left); |
Zeekat | 4:e171c9fa5447 | 98 | move_mot2(right); |
Zeekat | 9:f907915f269c | 99 | if( button.read() == button_on) |
Zeekat | 7:eb239942830d | 100 | { |
Zeekat | 9:f907915f269c | 101 | motor1_enc.setPosition(0); |
Zeekat | 9:f907915f269c | 102 | motor2_enc.setPosition(0); |
Zeekat | 7:eb239942830d | 103 | } |
Zeekat | 9:f907915f269c | 104 | wait(0.01f); // is noodzakelijk voor functioneren gradual increase, waarom???? |
Zeekat | 4:e171c9fa5447 | 105 | |
Zeekat | 0:5ea1875b307a | 106 | } |
Zeekat | 0:5ea1875b307a | 107 | } |