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
main.cpp@5:9827fabbc692, 2018-11-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |