Code for the first milestone of Project Biorobotics. Make 2 motors turn with a speed indicated by the Pod-meters

Dependencies:   FastPWM HIDScope MODSERIAL mbed

Committer:
Mirjam
Date:
Thu Nov 01 08:52:14 2018 +0000
Revision:
5:9827fabbc692
Parent:
4:c73ced5d5754
Working potmeter demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mirjam 0:50c494034326 1 #include "mbed.h"
Mirjam 0:50c494034326 2 #include "FastPWM.h"
Mirjam 0:50c494034326 3 #include "MODSERIAL.h"
Mirjam 0:50c494034326 4 #include "HIDScope.h"
Mirjam 0:50c494034326 5
Mirjam 0:50c494034326 6
Mirjam 5:9827fabbc692 7 /*
Mirjam 5:9827fabbc692 8 Hallo!
Mirjam 5:9827fabbc692 9
Mirjam 5:9827fabbc692 10 Het is tijd om de demo mode met behulp van potmeters te laten draaien :)
Mirjam 5:9827fabbc692 11 Zorg ervoor dat de potmeters met de draadjes aan de juiste poorten op de MBed zijn gekoppeld.
Mirjam 5:9827fabbc692 12 Het zijn de twee helemaal links onderin.
Mirjam 5:9827fabbc692 13
Mirjam 5:9827fabbc692 14 Veel succes ermee en wees voorzichtig!
Mirjam 5:9827fabbc692 15 */
Mirjam 5:9827fabbc692 16
Mirjam 0:50c494034326 17 AnalogIn potmeter1(PTC10);
Mirjam 0:50c494034326 18 AnalogIn potmeter2(PTC11);
Mirjam 0:50c494034326 19 MODSERIAL pc(USBTX, USBRX);
Mirjam 5:9827fabbc692 20
Mirjam 0:50c494034326 21 //D4 is a digital input for the microcontroller, so should be an digitalOut
Mirjam 5:9827fabbc692 22 //from the K64F. It will tell the motor shield to let Motor1 turn clockwise
Mirjam 5:9827fabbc692 23 //or counter clockwise (CW of CCW). D7 for motor 2
Mirjam 0:50c494034326 24 DigitalOut directionM1(D4);
Mirjam 0:50c494034326 25 DigitalOut directionM2(D7);
Mirjam 0:50c494034326 26 //D5 is a PWM input for the motor controller and determines the PWM signal
Mirjam 5:9827fabbc692 27 //that the motor controller gives to Motor 1. Higher PWM, higher average voltage.
Mirjam 5:9827fabbc692 28 //D6 for motor 2
Mirjam 0:50c494034326 29 FastPWM motor1_pwm(D5);
Mirjam 0:50c494034326 30 FastPWM motor2_pwm(D6);
Mirjam 0:50c494034326 31
Mirjam 2:840f7aa50e55 32 // Voor het laten zien van de data op de pc.
Mirjam 2:840f7aa50e55 33 HIDScope scope(2); // Aantal kanalen wat doorgegeven wordt aan de hidscope
Mirjam 2:840f7aa50e55 34 Ticker AInTicker;
Mirjam 4:c73ced5d5754 35 float U1;
Mirjam 4:c73ced5d5754 36 float U2;
Mirjam 2:840f7aa50e55 37 float potwaarde1;
Mirjam 2:840f7aa50e55 38 float potwaarde2;
Mirjam 2:840f7aa50e55 39
Mirjam 2:840f7aa50e55 40 void ReadAnalogIn()
Mirjam 2:840f7aa50e55 41 {
Mirjam 4:c73ced5d5754 42 scope.set(0,U1); // Zet de potwaarde in de eerste plot bij de HID scope. Deze wordt automatisch tegen de tijd geplot
Mirjam 4:c73ced5d5754 43 scope.set(1,U2);
Mirjam 2:840f7aa50e55 44 scope.send(); // Zendt de waardes naar de pc
Mirjam 2:840f7aa50e55 45 }
Mirjam 2:840f7aa50e55 46
Mirjam 0:50c494034326 47 int main(void)
Mirjam 0:50c494034326 48 {
Mirjam 1:d6acc3c6261a 49 motor1_pwm.period_ms(60); // period is 60 ms
Mirjam 2:840f7aa50e55 50 AInTicker.attach(&ReadAnalogIn,0.01f); //Elke 0.01 sec. Lees de analoge waarde
Mirjam 2:840f7aa50e55 51
Mirjam 0:50c494034326 52 while(true){
Mirjam 4:c73ced5d5754 53 potwaarde1 = potmeter1.read(); // Lees de potwaardes uit. Tussen 0 en 1
Mirjam 2:840f7aa50e55 54 potwaarde2 = potmeter2.read();
Mirjam 4:c73ced5d5754 55
Mirjam 5:9827fabbc692 56 U1 = potwaarde1 -0.5; // Scale van -0.5 tot 0.5 ipv. 0 tot 1
Mirjam 5:9827fabbc692 57 U2 = potwaarde2 -0.5;
Mirjam 4:c73ced5d5754 58
Mirjam 4:c73ced5d5754 59 // Gebruik de absolute waarde van de scaled U waardes als input voor de motor.
Mirjam 4:c73ced5d5754 60 // Negatieve waardes kunnen niet naar de motor gestuurd worden.
Mirjam 4:c73ced5d5754 61 motor1_pwm.write(fabs(U1));
Mirjam 4:c73ced5d5754 62 motor2_pwm.write(fabs(U2));
Mirjam 4:c73ced5d5754 63
Mirjam 4:c73ced5d5754 64 directionM1 = U1 > 0.0f; //either true or false
Mirjam 4:c73ced5d5754 65 directionM2 = U2 > 0.0f;
Mirjam 4:c73ced5d5754 66
Mirjam 4:c73ced5d5754 67 wait(0.002f);
Mirjam 0:50c494034326 68 }
Mirjam 0:50c494034326 69 }