final version

Dependencies:   HIDScope MODSERIAL QEI biquadFilter mbed

Fork of Project_script_union_final by Jorine Oosting

Committer:
MarijkeZondag
Date:
Mon Oct 15 14:03:05 2018 +0000
Revision:
8:895d941a5910
Parent:
7:f32005d13749
Child:
9:c722418997b5
Encoder counts working

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"
MarijkeZondag 8:895d941a5910 3 #include <math.h>
vsluiter 0:c8f15874531b 4
MarijkeZondag 6:f4bbb73f3989 5 DigitalOut directionpin1(D4);
MarijkeZondag 6:f4bbb73f3989 6 PwmOut pwmpin1(D5);
MarijkeZondag 6:f4bbb73f3989 7 AnalogIn potmetervalue1(A1);
MarijkeZondag 6:f4bbb73f3989 8 DigitalIn button2(D9); //klopt dit?
MarijkeZondag 8:895d941a5910 9 InterruptIn encoderA(D9);
MarijkeZondag 8:895d941a5910 10 InterruptIn encoderB(D8);
MarijkeZondag 6:f4bbb73f3989 11
MarijkeZondag 6:f4bbb73f3989 12 DigitalOut directionpin2(D7);
MarijkeZondag 6:f4bbb73f3989 13 PwmOut pwmpin2(D6);
MarijkeZondag 6:f4bbb73f3989 14 AnalogIn potmetervalue2(A2);
MarijkeZondag 6:f4bbb73f3989 15
vsluiter 0:c8f15874531b 16 MODSERIAL pc(USBTX, USBRX);
vsluiter 0:c8f15874531b 17
MarijkeZondag 8:895d941a5910 18 int encoder = 0;
MarijkeZondag 8:895d941a5910 19
MarijkeZondag 8:895d941a5910 20
MarijkeZondag 8:895d941a5910 21 void encoderA_rise()
MarijkeZondag 8:895d941a5910 22 {
MarijkeZondag 8:895d941a5910 23 if(encoderB==false)
MarijkeZondag 8:895d941a5910 24 {
MarijkeZondag 8:895d941a5910 25 encoder++;
MarijkeZondag 8:895d941a5910 26 }
MarijkeZondag 8:895d941a5910 27 else
MarijkeZondag 8:895d941a5910 28 {
MarijkeZondag 8:895d941a5910 29 encoder--;
MarijkeZondag 8:895d941a5910 30 }
MarijkeZondag 8:895d941a5910 31 }
MarijkeZondag 8:895d941a5910 32
MarijkeZondag 8:895d941a5910 33 void encoderA_fall()
MarijkeZondag 8:895d941a5910 34 {
MarijkeZondag 8:895d941a5910 35 if(encoderB==true)
MarijkeZondag 8:895d941a5910 36 {
MarijkeZondag 8:895d941a5910 37 encoder++;
MarijkeZondag 8:895d941a5910 38 }
MarijkeZondag 8:895d941a5910 39 else
MarijkeZondag 8:895d941a5910 40 {
MarijkeZondag 8:895d941a5910 41 encoder--;
MarijkeZondag 8:895d941a5910 42 }
MarijkeZondag 8:895d941a5910 43 }
MarijkeZondag 8:895d941a5910 44
MarijkeZondag 8:895d941a5910 45 void encoderB_rise()
MarijkeZondag 8:895d941a5910 46 {
MarijkeZondag 8:895d941a5910 47 if(encoderA==true)
MarijkeZondag 8:895d941a5910 48 {
MarijkeZondag 8:895d941a5910 49 encoder++;
MarijkeZondag 8:895d941a5910 50 }
MarijkeZondag 8:895d941a5910 51 else
MarijkeZondag 8:895d941a5910 52 {
MarijkeZondag 8:895d941a5910 53 encoder--;
MarijkeZondag 8:895d941a5910 54 }
MarijkeZondag 8:895d941a5910 55 }
MarijkeZondag 8:895d941a5910 56
MarijkeZondag 8:895d941a5910 57 void encoderB_fall()
MarijkeZondag 8:895d941a5910 58 {
MarijkeZondag 8:895d941a5910 59 if(encoderA==false)
MarijkeZondag 8:895d941a5910 60 {
MarijkeZondag 8:895d941a5910 61 encoder++;
MarijkeZondag 8:895d941a5910 62 }
MarijkeZondag 8:895d941a5910 63 else
MarijkeZondag 8:895d941a5910 64 {
MarijkeZondag 8:895d941a5910 65 encoder--;
MarijkeZondag 8:895d941a5910 66 }
MarijkeZondag 8:895d941a5910 67 }
MarijkeZondag 8:895d941a5910 68
MarijkeZondag 8:895d941a5910 69
MarijkeZondag 8:895d941a5910 70
vsluiter 0:c8f15874531b 71 int main()
MarijkeZondag 3:a3ad58758696 72 {
vsluiter 0:c8f15874531b 73 pc.baud(115200);
MarijkeZondag 6:f4bbb73f3989 74 pc.printf("hello\n\r");
MarijkeZondag 6:f4bbb73f3989 75 pwmpin1.period_us(60); //60 microseconds PWM period, 16.7 kHz
MarijkeZondag 6:f4bbb73f3989 76
MarijkeZondag 8:895d941a5910 77 encoderA.rise(&encoderA_rise);
MarijkeZondag 8:895d941a5910 78 encoderA.fall(&encoderA_fall);
MarijkeZondag 8:895d941a5910 79 encoderB.rise(&encoderB_rise);
MarijkeZondag 8:895d941a5910 80 encoderB.fall(&encoderB_fall);
vsluiter 0:c8f15874531b 81
MarijkeZondag 2:2f4444f1504d 82 while (true)
MarijkeZondag 2:2f4444f1504d 83 {
MarijkeZondag 6:f4bbb73f3989 84
MarijkeZondag 6:f4bbb73f3989 85 float u1 = potmetervalue1;
MarijkeZondag 6:f4bbb73f3989 86 float u2 = potmetervalue2;
MarijkeZondag 6:f4bbb73f3989 87
MarijkeZondag 6:f4bbb73f3989 88 float m1 = ((u1*2.0f)-1.0f);
MarijkeZondag 6:f4bbb73f3989 89 float m2 = ((u2*2.0f)-1.0f);
MarijkeZondag 7:f32005d13749 90
MarijkeZondag 7:f32005d13749 91 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 92 directionpin1.write(m1>0); //Indien waar, motor draait rechtsom. Indien niet waar, motor draait linksom.
MarijkeZondag 7:f32005d13749 93 wait(0.01f); //zodat de code niet oneindig doorgaat.
MarijkeZondag 7:f32005d13749 94 pwmpin2 = fabs(m2*0.6f)+0.4f;
MarijkeZondag 8:895d941a5910 95 directionpin2.write(m2>0);
MarijkeZondag 7:f32005d13749 96
MarijkeZondag 8:895d941a5910 97 double angle_encoder = encoder*2*pi/8400
MarijkeZondag 8:895d941a5910 98 pc.printf("Encoder count: %i\n\r",encoder);
vsluiter 0:c8f15874531b 99 }
vsluiter 0:c8f15874531b 100 }
MarijkeZondag 4:fbea05c8fe2b 101