Programming Milestone 1 Group 7 BMT M9: Making robots move at different velocities/directions by adjusting potmeter.

Dependencies:   FastPWM MODSERIAL mbed

Fork of Programming_Milestone_1 by Marie-Laure Snijders

Committer:
MAHCSnijders
Date:
Tue Sep 25 15:57:25 2018 +0000
Revision:
3:cb0a931ff019
Parent:
2:6d3f3d1bcef7
Test om Podmeter te laten werken, deze versie negeren maar vanaf vorige werken.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MAHCSnijders 0:1e216b50d323 1 #include "mbed.h"
MAHCSnijders 1:67b19c59b8c9 2 #include "FastPWM.h"
MAHCSnijders 1:67b19c59b8c9 3 #include "MODSERIAL.h"
MAHCSnijders 2:6d3f3d1bcef7 4 MODSERIAL pc(USBTX, USBRX);
MAHCSnijders 1:67b19c59b8c9 5
MAHCSnijders 1:67b19c59b8c9 6 Ticker motor; // ticker function
MAHCSnijders 2:6d3f3d1bcef7 7 FastPWM pwmpin1(D5); // SPECIFIC PIN (hoeft niet aangesloten te worden) Tells you how fast the motor has to go (later: pwmpin.write will tell you the duty cycle, aka how much voltage the motor gets)
MAHCSnijders 2:6d3f3d1bcef7 8 FastPWM pwmpin2(D6); // SPECIFIC PIN (hoeft niet aangesloten te worden) Tells you how fast the motor has to go (later: pwmpin.write will tell you the duty cycle, aka how much voltage the motor gets)
MAHCSnijders 1:67b19c59b8c9 9 DigitalOut directionpin1(D4); // SPECIFIC PIN (hoeft niet aangesloten te worden) Direction value (0-1) that the mbed will give the motor: in which direction the motor must rotate
MAHCSnijders 1:67b19c59b8c9 10 DigitalOut directionpin2(D7); // SPECIFIC PIN (hoeft niet aangesloten te worden) Direction value (0-1) that the mbed will give the motor: in which direction the motor must rotate
MAHCSnijders 1:67b19c59b8c9 11 AnalogIn potmeter1(A0); // Analoge input van potmeter 1
MAHCSnijders 1:67b19c59b8c9 12 AnalogIn potmeter2(A1); // Analoge input van potmeter 2
MAHCSnijders 0:1e216b50d323 13
MAHCSnijders 2:6d3f3d1bcef7 14 volatile float pot1;
MAHCSnijders 2:6d3f3d1bcef7 15 volatile float pot2;
MAHCSnijders 2:6d3f3d1bcef7 16 volatile float pot1_scale;
MAHCSnijders 2:6d3f3d1bcef7 17 volatile float pot2_scale;
MAHCSnijders 2:6d3f3d1bcef7 18 volatile float u1;
MAHCSnijders 2:6d3f3d1bcef7 19 volatile float u2;
MAHCSnijders 2:6d3f3d1bcef7 20
MAHCSnijders 1:67b19c59b8c9 21 void motorfunction()
MAHCSnijders 2:6d3f3d1bcef7 22 { pot1 = potmeter1.read(); // Reads out value potmeter 1 between 0-1
MAHCSnijders 2:6d3f3d1bcef7 23 pot1_scale = pot1*2 -1; // Scales value potmeter from 0-1 to -1 - 1.
MAHCSnijders 2:6d3f3d1bcef7 24 pot2 = potmeter2.read();
MAHCSnijders 2:6d3f3d1bcef7 25 pot2_scale = pot2*2 -1; // Scales value potmeter from 0-1 to -1 - 1.
MAHCSnijders 2:6d3f3d1bcef7 26 u1 = pot1_scale; // motor control signal
MAHCSnijders 2:6d3f3d1bcef7 27 u2 = pot2_scale; // motor control signal
MAHCSnijders 2:6d3f3d1bcef7 28 directionpin1 = u1 > 0.0f; //either true or false, determines direction (0 or 1)
MAHCSnijders 2:6d3f3d1bcef7 29 directionpin2 = u2 > 0.0f; //either true or false
MAHCSnijders 2:6d3f3d1bcef7 30 pwmpin1 = fabs(u1); //pwm duty cycle can only be positive, floating point absolute value (if value is >0, the there still will be a positive value).
MAHCSnijders 2:6d3f3d1bcef7 31 pwmpin2 = fabs(u2); //pwm duty cycle can only be positive, floating point absolute value (if value is >0, the there still will be a positive value).
MAHCSnijders 1:67b19c59b8c9 32 }
MAHCSnijders 0:1e216b50d323 33
MAHCSnijders 0:1e216b50d323 34 int main()
MAHCSnijders 0:1e216b50d323 35 {
MAHCSnijders 2:6d3f3d1bcef7 36 pwmpin1.period_us(60.0); //60 microseconds PWM period, 16.7 kHz, defines all PWM pins (only needs to be done once)
MAHCSnijders 2:6d3f3d1bcef7 37 pc.baud(115200);
MAHCSnijders 3:cb0a931ff019 38 //motor.attach(motorfunction,0.5);
MAHCSnijders 3:cb0a931ff019 39
MAHCSnijders 3:cb0a931ff019 40 pwmpin1=(0);
MAHCSnijders 3:cb0a931ff019 41 pwmpin2=(0);
MAHCSnijders 3:cb0a931ff019 42 directionpin2 = false;
MAHCSnijders 3:cb0a931ff019 43 directionpin1 = true;
MAHCSnijders 0:1e216b50d323 44 }