Make 2 motors turn

Dependencies:   MODSERIAL mbed HIDScope biquadFilter

Fork of Minor_test_serial by Marijke Zondag

Committer:
MarijkeZondag
Date:
Mon Oct 15 14:16:33 2018 +0000
Revision:
9:c722418997b5
Parent:
8:895d941a5910
Child:
10:39ec51206c8b
Overzichtelijke code met potmetervalue aansturing motor en encoder counts.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vsluiter 0:c8f15874531b 1 #include "mbed.h"
vsluiter 0:c8f15874531b 2 #include "MODSERIAL.h"
vsluiter 0:c8f15874531b 3
MarijkeZondag 9:c722418997b5 4 AnalogIn potmetervalue1 (A1);
MarijkeZondag 9:c722418997b5 5 AnalogIn potmetervalue2 (A2);
MarijkeZondag 9:c722418997b5 6 DigitalIn button2 (D10); //Let op, is deze niet bezet?
MarijkeZondag 9:c722418997b5 7 InterruptIn encoderA (D9);
MarijkeZondag 9:c722418997b5 8 InterruptIn encoderB (D8);
MarijkeZondag 6:f4bbb73f3989 9
MarijkeZondag 9:c722418997b5 10 DigitalOut directionpin1 (D4);
MarijkeZondag 9:c722418997b5 11 DigitalOut directionpin2 (D7);
MarijkeZondag 9:c722418997b5 12 PwmOut pwmpin1 (D5);
MarijkeZondag 9:c722418997b5 13 PwmOut pwmpin2 (D6);
MarijkeZondag 9:c722418997b5 14
MarijkeZondag 6:f4bbb73f3989 15
vsluiter 0:c8f15874531b 16 MODSERIAL pc(USBTX, USBRX);
vsluiter 0:c8f15874531b 17
MarijkeZondag 9:c722418997b5 18
MarijkeZondag 9:c722418997b5 19 //Global variables
MarijkeZondag 8:895d941a5910 20 int encoder = 0;
MarijkeZondag 8:895d941a5910 21
MarijkeZondag 9:c722418997b5 22
MarijkeZondag 9:c722418997b5 23 //Functions
MarijkeZondag 8:895d941a5910 24 void encoderA_rise()
MarijkeZondag 8:895d941a5910 25 {
MarijkeZondag 8:895d941a5910 26 if(encoderB==false)
MarijkeZondag 8:895d941a5910 27 {
MarijkeZondag 8:895d941a5910 28 encoder++;
MarijkeZondag 8:895d941a5910 29 }
MarijkeZondag 8:895d941a5910 30 else
MarijkeZondag 8:895d941a5910 31 {
MarijkeZondag 8:895d941a5910 32 encoder--;
MarijkeZondag 8:895d941a5910 33 }
MarijkeZondag 8:895d941a5910 34 }
MarijkeZondag 8:895d941a5910 35
MarijkeZondag 8:895d941a5910 36 void encoderA_fall()
MarijkeZondag 8:895d941a5910 37 {
MarijkeZondag 8:895d941a5910 38 if(encoderB==true)
MarijkeZondag 8:895d941a5910 39 {
MarijkeZondag 8:895d941a5910 40 encoder++;
MarijkeZondag 8:895d941a5910 41 }
MarijkeZondag 8:895d941a5910 42 else
MarijkeZondag 8:895d941a5910 43 {
MarijkeZondag 8:895d941a5910 44 encoder--;
MarijkeZondag 8:895d941a5910 45 }
MarijkeZondag 8:895d941a5910 46 }
MarijkeZondag 8:895d941a5910 47
MarijkeZondag 8:895d941a5910 48 void encoderB_rise()
MarijkeZondag 8:895d941a5910 49 {
MarijkeZondag 8:895d941a5910 50 if(encoderA==true)
MarijkeZondag 8:895d941a5910 51 {
MarijkeZondag 8:895d941a5910 52 encoder++;
MarijkeZondag 8:895d941a5910 53 }
MarijkeZondag 8:895d941a5910 54 else
MarijkeZondag 8:895d941a5910 55 {
MarijkeZondag 8:895d941a5910 56 encoder--;
MarijkeZondag 8:895d941a5910 57 }
MarijkeZondag 8:895d941a5910 58 }
MarijkeZondag 8:895d941a5910 59
MarijkeZondag 8:895d941a5910 60 void encoderB_fall()
MarijkeZondag 8:895d941a5910 61 {
MarijkeZondag 8:895d941a5910 62 if(encoderA==false)
MarijkeZondag 8:895d941a5910 63 {
MarijkeZondag 8:895d941a5910 64 encoder++;
MarijkeZondag 8:895d941a5910 65 }
MarijkeZondag 8:895d941a5910 66 else
MarijkeZondag 8:895d941a5910 67 {
MarijkeZondag 8:895d941a5910 68 encoder--;
MarijkeZondag 8:895d941a5910 69 }
MarijkeZondag 8:895d941a5910 70 }
MarijkeZondag 8:895d941a5910 71
MarijkeZondag 8:895d941a5910 72
MarijkeZondag 9:c722418997b5 73 // Main function start.
MarijkeZondag 8:895d941a5910 74
vsluiter 0:c8f15874531b 75 int main()
MarijkeZondag 3:a3ad58758696 76 {
vsluiter 0:c8f15874531b 77 pc.baud(115200);
MarijkeZondag 6:f4bbb73f3989 78 pc.printf("hello\n\r");
MarijkeZondag 6:f4bbb73f3989 79 pwmpin1.period_us(60); //60 microseconds PWM period, 16.7 kHz
MarijkeZondag 6:f4bbb73f3989 80
MarijkeZondag 8:895d941a5910 81 encoderA.rise(&encoderA_rise);
MarijkeZondag 8:895d941a5910 82 encoderA.fall(&encoderA_fall);
MarijkeZondag 8:895d941a5910 83 encoderB.rise(&encoderB_rise);
MarijkeZondag 8:895d941a5910 84 encoderB.fall(&encoderB_fall);
vsluiter 0:c8f15874531b 85
MarijkeZondag 2:2f4444f1504d 86 while (true)
MarijkeZondag 2:2f4444f1504d 87 {
MarijkeZondag 6:f4bbb73f3989 88
MarijkeZondag 6:f4bbb73f3989 89 float u1 = potmetervalue1;
MarijkeZondag 6:f4bbb73f3989 90 float u2 = potmetervalue2;
MarijkeZondag 6:f4bbb73f3989 91
MarijkeZondag 6:f4bbb73f3989 92 float m1 = ((u1*2.0f)-1.0f);
MarijkeZondag 6:f4bbb73f3989 93 float m2 = ((u2*2.0f)-1.0f);
MarijkeZondag 7:f32005d13749 94
MarijkeZondag 7:f32005d13749 95 pwmpin1 = fabs(m1*0.6f)+0.4f; //pwm duty cycle can only be positive, floating, 0.4f is "inefficiënt", dit tellen we erbij op, en keer 0.6 om te corrigeren voor de helling.
MarijkeZondag 7:f32005d13749 96 directionpin1.write(m1>0); //Indien waar, motor draait rechtsom. Indien niet waar, motor draait linksom.
MarijkeZondag 7:f32005d13749 97 wait(0.01f); //zodat de code niet oneindig doorgaat.
MarijkeZondag 7:f32005d13749 98 pwmpin2 = fabs(m2*0.6f)+0.4f;
MarijkeZondag 8:895d941a5910 99 directionpin2.write(m2>0);
MarijkeZondag 9:c722418997b5 100
MarijkeZondag 9:c722418997b5 101 pc.printf("Encoder count: %i \n\r",encoder); //We moeten de encoder counts nog omzetten naar radialen of graden?
vsluiter 0:c8f15874531b 102 }
vsluiter 0:c8f15874531b 103 }
MarijkeZondag 4:fbea05c8fe2b 104