
motor aansturing moet lineair zijn is het niet
Dependencies: MODSERIAL Encoder mbed HIDScope
main.cpp
- Committer:
- Zeekat
- Date:
- 2015-10-02
- Revision:
- 10:b2742f42de44
- Parent:
- 9:f907915f269c
- Child:
- 11:d31b03b05f59
File content as of revision 10:b2742f42de44:
#include "mbed.h" #include "MODSERIAL.h" #include "encoder.h" #include "HIDScope.h" Serial pc(USBTX,USBRX); HIDScope scope(2); Ticker mod; //MOTOR // motor 1 en 2 zijn omgedraait // pinnen motor 1 -> pinnen motor 2 //motor 1 gegevens PwmOut motor1_aan(D6); // PWM signaal motor 2 (uit sheets) DigitalOut motor1_rich(D7); // digitaal signaal voor richting // einde motor 1 //motor 2 gegevens PwmOut motor2_aan(D5); // PWM signaal motor 1 (uit sheets) DigitalOut motor2_rich(D4); // digitaal signaal voor richting // einde motor 1 //EINDE MOTOR // ENCODER Encoder motor1_enc(D12,D11); Encoder motor2_enc(D10,D9); //POTMETERS AnalogIn potleft(A1); AnalogIn potright(A0); DigitalIn button(PTA4); int button_on = 0; void move_mot1(double left) { if(left < 0.4) { double calc1 = left - 1; double calc2 = abs(calc1); double leftin1 = (calc2-0.6)*2.5 ; motor1_aan.write(leftin1); motor1_rich.write(0); } else if(left > 0.4 && left < 0.6) { motor1_aan.write(0); } else if(left > 0.6) { double leftin2 = (left-0.6)*2.5; motor1_aan.write(leftin2); motor1_rich.write(1); } } void move_mot2(double right) { if(right < 0.4) { double calc3 = right - 1; double calc4 = abs(calc3); double rightin1 = (calc4-0.6)*2.5 ; motor2_aan.write(rightin1); motor2_rich.write(0); } else if(right > 0.4 && right < 0.6) { motor2_aan.write(0); } else if(right > 0.6) { double rightin2 = (right-0.6)*2.5; motor2_aan.write(rightin2); motor2_rich.write(1); } } void send() { int counts1 = motor1_enc.getPosition(); int counts2 = motor2_enc.getPosition(); pc.printf("motor 1 counts, %d motor 2 counts %d \n", counts1, counts2); } double get_radians(double counts) { double pi = 3.14159265359; double radians = (counts/4200)*2*pi; return radians; } int main() { pc.baud(115200); mod.attach(&send,1); while(true) { double left = potleft.read(); double right = potright.read(); move_mot1(left); move_mot2(right); int counts1 = motor1_enc.getPosition(); int counts2 = motor2_enc.getPosition(); double radians_1 = get_radians(counts1); double radians_2 = get_radians(counts2); if( button.read() == button_on) { motor1_enc.setPosition(0); motor2_enc.setPosition(0); } scope.set(0,radians_1); scope.set(1,radians_2); scope.send(); wait(0.01f); // is noodzakelijk voor functioneren gradual increase, waarom???? } }