V0.1

Dependencies:   mbed QEI

Fork of motor_calibration by Kenneth Weisbeek

main.cpp

Committer:
kweisbeek
Date:
2018-10-26
Revision:
2:ea985bb173f6
Parent:
1:53bb5928adcf
Child:
3:d519ec330c31

File content as of revision 2:ea985bb173f6:

#include "mbed.h"


//initial allocations
DigitalOut dirpin(D4);
DigitalOut dirpin2(D7);
PwmOut pwmpin(D5);
PwmOut pwmpin2(D6);
QEI Encoder(D12,D13,NC,64,QEI::X4_ENCODING);



//volatiles
volatile counts_prev=0;



//functions (2 functions not finished)
int counts(){
    int counts=Encoder.getPulses();     //MAAK NOG AF MET PREVIOUS COUNTS ONTHOUDEN.
    return counts;

int pos_store(a){}                       //store position in counts to know count location of the ends of bridge
    
void translation_start(a,b);            //start rail motor
        dirpin.write(a);
        pwmpin = b;                        
void translation_stop();                //stop rail motor
        pwmpin = 0;     
void rotate_start(a,b){}                    //start rotation of disk
        dirpin2.write(a);
        pwmpin2 = b; 
void rotate_stop(){}                     //stop rotation of disk
        pwmpin2 = 0; 


//main function
int main(){
    pwmpin.period_us(60);
    
    //parameters
    int caltime=30;             //calibration time until condition has been met, caltime=(time/0.1)  
    float speed=0.50f;
    int dir=0;
    int counts_end=;          //amount of counts for 360 degrees rotation of main disk --> many revolutions of motor
    
    //move towards end
    for (m=1;2;m++){
        translation_start(dir,speed);
        //when motor counts do not change anymore, change direction
        int n=1;
        while(n=1){
            for (n=1;caltime;n++){
                if (counts()!=counts_prev){
                    n=0;}
                else {}
                wait(0.1);}
            translation_stop();    
            int position=counts();}
        dir=dir+1;
        pos_store(position);}   //stores position integer
    
    //Check if a full circle can be made without obstruction
        //Try adding a timer as well, you know how long it should take, how long does it actually take? Does that matter?
    rotate_start();
    while(1){
        if counts2_zero()>=counts2_end{
            break;}
        else {}
        wait(0.01);}
    rotate_stop();
    pos_store(counts2());   
    //End sequence?    
    }