Alle functies van de motoren werken
Dependencies: MODSERIAL QEI mbed
Fork of worknotjet by
main.cpp
- Committer:
- Frostworks
- Date:
- 2016-10-14
- Revision:
- 2:4fb733fffd1f
- Parent:
- 1:833c73834749
- Child:
- 3:dfb4b8d37bab
File content as of revision 2:4fb733fffd1f:
#include "mbed.h" #include "MODSERIAL.h" DigitalOut M1_rotate(D2); // voltage only base rotation PwmOut M1_Speed(D3); // voltage only base rotation DigitalOut M2_rotate(D4); // encoder side pot 2 translation PwmOut M2_Speed(D5); // encoder side pot 2 translation DigitalOut M3_rotate(D7); // encoder side pot 1 spatel rotation PwmOut M3_Speed(D6); // encoder side pot 1 spatel rotation DigitalIn links(SW3); DigitalIn rechts(SW2); //DigitalOut M2_rotate(D6); //PwmOut M2_Speed(D7); AnalogIn pot1(A4); // pot 1 motor 1 AnalogIn pot2(A3); // pot 2 motor 3 MODSERIAL pc(USBTX, USBRX); int main() { pc.baud(115200); pc.printf("hoi\n"); M1_rotate = 1; M2_rotate = 1; M3_rotate = 1; a = 1; float GetReferenceVelocity() { // Returns reference velocity in rad/s. // Positive value means clockwise rotation. const float maxVelocity=8.4; // in rad/s of course! float referenceVelocity; // in rad/s if (a) { // Clockwise rotation referenceVelocity = potMeterIn * maxVelocity; } else { // Counterclockwise rotation referenceVelocity = -1*potMeterIn * maxVelocity; } return referenceVelocity; } void SetMotor1(float motorValue) { // Given -1<=motorValue<=1, this sets the PWM and direction // bits for motor 1. Positive value makes motor rotating // clockwise. motorValues outside range are truncated to // within range if (motorValue >=0) { motor1DirectionPin=1; } else { motor1DirectionPin=0; } if (fabs(motorValue)>1) { motor1MagnitudePin = 1; } else { motor1MagnitudePin = fabs(motorValue); } } void SetMotor2(float motorValue) { // Given -1<=motorValue<=1, this sets the PWM and direction // bits for motor 1. Positive value makes motor rotating // clockwise. motorValues outside range are truncated to // within range if (motorValue >=0) { motor2DirectionPin=1; } else { motor2DirectionPin=0; } if (fabs(motorValue)>1) { motor2MagnitudePin = 1; } else { motor2MagnitudePin = fabs(motorValue); } } void SetMotor3(float motorValue) { // Given -1<=motorValue<=1, this sets the PWM and direction // bits for motor 1. Positive value makes motor rotating // clockwise. motorValues outside range are truncated to // within range if (motorValue >=0) { motor3DirectionPin=1; } else { motor3DirectionPin=0; } if (fabs(motorValue)>1) { motor3MagnitudePin = 1; } else { motor3MagnitudePin = fabs(motorValue); } } bool GetDirections() { bool draairechts = false; bool draailinks = false; if (rechts == 1 && draairechts = false) { //Als je rechts aanspant en hij draait nog niet naar rechts draairechts = true; } else if (rechts == 1 && draairechts = true) { //Als je rechts aanspant en hij draait al naar rechts draairechts = false; } else if (links == 1 && draailinks = false) { //Als je links aanspant en hij draait nog niet naar links draailinks = true; } else if (links == 1 && draailinks = true) { // Als je links aanspant en hij draait al naar links draailinks = false; } else if (links == 1 && draairechts = true) { // Als je links aanspant en hij draait nog naar rechts draailinks = true; draairechts = false; } else if (rechts == 1 && draailinks = true) { // Als je rechts aanspant en hij draait nog naar links draairechts = true; draailinks = false; } return draailinks; return draairechts; } while (true) { GetDirections(); if (draailinks == true) { M1_Speed = 0.5; M1_Rotate = 0; } else if (draairechts == true) { M1_Speed = 0.5; M1_Rotate = 1; } else { M1_Speed = 0; } /* float M2 = M2_rotate.read(); float potje1 = pot1.read(); float potje2 = pot2.read(); M1_Speed.write(potje1); M3_Speed.write(potje2); wait(0.1); pc.printf("motor 1 %f, motor 2 %f, motor 3 %f \n \r ", potje1, M2, potje2); */ } }