j
Dependencies: Encoder HIDScope mbed
Fork of Motor_component_testing by
main.cpp
- Committer:
- phgbartels
- Date:
- 2014-10-27
- Revision:
- 3:c6b8499a9021
- Parent:
- 2:b7d757570748
- Child:
- 4:71ada7709c46
File content as of revision 3:c6b8499a9021:
#include "mbed.h" #include "encoder.h" #include "HIDScope.h" #include "PwmOut.h" /*definieren pinnen Motor 1*/ #define M1_PWM PTA5 #define M1_DIR PTA4 #define M2_PWM PTC8 #define M2_DIR PTC9 /*Definieren minimale waarden PWM per motor*/ #define PWM1_min_30 0.529 /*met koppelstuk!*/ #define PWM2_min_50 0.519 /*aanpassen! Klopt nog niet met koppelstuk*/ /*Definieren om de hoeveel seconden er gegevens naar de HID-scope gestuurd worden.*/ #define TSAMP 0.005 Encoder motor1(PTD3,PTD1); Encoder motor2(PTD5, PTD0); PwmOut pwm_motor1(M1_PWM); PwmOut pwm_motor2(M2_PWM); DigitalOut motordir1(M1_DIR); DigitalOut motordir2(M2_DIR); DigitalOut LED(LED_GREEN); volatile bool looptimerflag; int PWM1_percentage = 1; int PWM2_percentage = 1; float PWM1 = ((1-PWM1_min_30)/100)*PWM1_percentage + PWM1_min_30; float PWM2 = ((1-PWM2_min_50)/100)*PWM2_percentage + PWM1_min_30; HIDScope scope(3); //Ticker tick; /*void PWMc() { PWM = abs(PWM-0.1); pwm_motor1.write(PWM); scope.set(0, motor1.getPosition()); scope.set(1, DigitalIn(PTD3)); scope.set(2, DigitalIn(PTD1)); scope.send(); }*/ void setlooptimerflag(void) //Ticker maakt een constructie die zoveel keer per seconde een functie uitvoerd, met sampingling freq TSAMP { looptimerflag = true; } int main() { //tick.attach(&PWMc, 5); pwm_motor1.period_us(100); pwm_motor2.period_us(100); pwm_motor1.write(PWM1); pwm_motor2.write(PWM2); LED = 0; motordir1 = 0; motordir2 = 0; Ticker looptimer; // looptimer = variabele van het type ticker(niet int of float), Daarmee is looptimer een classe. Omdat een classe is heeft het methods oftewel functies, zoals attach. Setlooptimerflag is een functie looptimer.attach(setlooptimerflag,TSAMP); // attach betekend het koppelen van een functie aan een classe. while(true) { //wait(3); //pwm_motor1.write(0.4); LED = 1; //wait(1); //PWM = PWM + 0.05; //pwm_motor1.pulsewidth_us(50); while(!looptimerflag) //Hierdoor zeg je eigenlijk tegen je systeem; voer dit script uit na elke TSAMP s. { /*do nothing*/ //Zolang dit waar is, doe je niets. } looptimerflag = false; //clear flag scope.set(0, motor1.getPosition()); scope.set(1, motor1.getSpeed()); scope.set(2, motor2.getPosition()); scope.set(3, motor2.getSpeed()); scope.send(); } }