Ramon Waninge / Mbed 2 deprecated Milestone1

Dependencies:   FastPWM mbed QEI biquadFilter HIDScope MODSERIAL

main.cpp

Committer:
efvanmarrewijk
Date:
2018-10-12
Revision:
13:6556cd086d07
Parent:
11:3efd6a324f16
Child:
14:e21cb701ccb8

File content as of revision 13:6556cd086d07:

#include "mbed.h"
#include "FastPWM.h"    
#include "QEI.h"        // Includes library for encoder
#include "MODSERIAL.h"
#include "HIDScope.h"
#include "BiQuad.h"

AnalogIn pot1(A1);
AnalogIn pot2(A2);
InterruptIn button1(D0);
InterruptIn button2(D1);
InterruptIn emergencybutton(SW2);  /* This is not yet implemented! 
The button SW2 on the K64F is the emergency button: if you press this, 
everything will abort as soon as possible
*/

DigitalIn pin8(D8);     // Encoder 1 u3
DigitalIn pin9(D9);     // Encoder 1 A
DigitalIn pin10(D10);   // Encoder 2 u3
DigitalIn pin11(D11);   // Encoder 2 A
DigitalIn pin12(D12);   // Encoder 3 u3
DigitalIn pin13(D13);   // Encoder 3 A

DigitalOut pin2(D2);    // Motor 3 direction
FastPWM pin3(D3);       // Motor 3 pwm
DigitalOut pin4(D4);    // Motor 2 direction
FastPWM pin5(D5);       // Motor 2 pwm
FastPWM pin6(D6);       // Motor 1 pwm
DigitalOut pin7(D7);    // Motor 1 direction
//float u1  = pot1;

Ticker motor;
float u3 = 0.0;         // Normalised variable for the movement of motor 3

void draaibuttons()         
{   /*  Pressing button 2 concludes in a change of speed. While button 1 is pressed,
        the direction of change of speed is reversed. So pressing button 1 and 2
        simultaneously results for the turning speed of motor 3 in a slower movement,
        and eventually the motor will turn the other way around.
    */
    if (button1 == 1)
    {   if (button2 == 1)
        {   u3 = u3 + 0.1f;  //In stapjes van 0.1
            pin3 = fabs(u3);
            if (u3>1.0f)
            {   u3 = 1.0f;
            }
        }
    }
    else if (button1 == 0)
    {   if (button2 == 1)
        {   u3 = u3 - 0.1f;
            pin3 = fabs(u3);
            if (u3>1.0f)
            {   u3 = 1.0f;
            }
        }
    }
}

void draai()    
/*  Function for the movement of all motors, using the potmeters for the moving
    direction and speed of motor 1 and 2, and using button 1 and 2 on the biorobotics
    shield for the moving direction and speed of motor 3.
*/
{      
    float u1 = 2.0*(pot1 - 0.5);    // Normalised variable for the movement of motor 1
    if (u1>0)
    {   pin4 = true;
    }
    else if(u1<0)
    {   pin4 = false;    
    }
    pin5 = fabs(u1);
    
    float u2 = 2.0*(pot2 - 0.5);    // Normalised variable for the movement of motor 2
    if (u2<0)
    {   pin7 = true;
    }
    else if(u2>0)
    {   pin7 = false;    
    }
    pin6 = fabs(u2);  
    
    if (u3>0)
    {   pin2 = true;
    }
    else if(u3<0)
    {   pin2 = false; 
    }
    else
    {   pin3 = 0;
    }   
}

int main()
{
    pin5.period(1.0/10000);
    button1.rise(&draaibuttons);       
    button2.rise(&draaibuttons);
    
    pin3.period_us(50);
    motor.attach(draai, 0.001);
   
    pin5.period_us(50);
    motor.attach(draai, 0.001);
    
    pin6.period_us(50);
    motor.attach(draai, 0.001);
    while(true)
    {
    }
}