encoder

Dependencies:   MODSERIAL mbed HIDScope biquadFilter

Fork of Project_script by Marijke Zondag

Committer:
MarijkeZondag
Date:
Tue Oct 30 09:37:29 2018 +0000
Revision:
23:c027e5c57cc8
Parent:
9:c722418997b5
Child:
24:b9dd6cf5c366
Encoder counts potmeter value aansturing motoren

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