code to drive the motors to the right position

Dependencies:   HIDScope QEI mbed

Fork of BMT-K9_potmeter_fade by First Last

main.cpp

Committer:
ewoud
Date:
2015-09-23
Revision:
3:6a97e1d68511
Parent:
2:6a4a2e355cd9
Child:
4:e481566a5b54

File content as of revision 3:6a97e1d68511:

#include "mbed.h"
#include "HIDScope.h"
#include "QEI.h"

// myled is an object of class PwmOut. It uses the LED_RED pin
// in human speech: myled is an output that can be controlled with PWM. LED_RED is the pin which is connected to the output
PwmOut myled2(D5);
PwmOut myled1(D6);

DigitalOut motor1direction(D7);
// pot is an object of class AnalogIn. It uses the PTB0 pin
// in human speech: pot is an analog input. You can read the voltage on pin PTB0
AnalogIn pot1(A0);
AnalogIn pot2(A1);

//HIDScope scope(1);
Serial pc(USBTX, USBRX);
QEI wheel (D12, D13, NC, 624);
float lastpotread = 0;
int countsPerRound = 32*131;
float gototick;
int currentpulses;
//start 'main' function. Should be done once in every C(++) program
int main()
{
    //setup some stuff
    //period of PWM signal is 10kHz. Every 100 microsecond a new PWM period is started
    myled1.period_ms(0.1);
    myled2.period_ms(0.1);
    myled1=0.5;
    //motor1=1;
    //while 1 is unequal to zero. For humans: loop forever
    while(1) {
        currentpulses=wheel.getPulses();
        gototick = pot1.read()*countsPerRound;
        if (lastpotread != pot1.read()){
            lastpotread=pot1.read();
            pc.printf("potvalue: %f, position: %d \n\r",gototick,currentpulses);
        }
        
        if (gototick > wheel.getPulses())
        {
            motor1direction=0;
            
        }
        else
        {
            motor1direction=1;
        }
        
        
        //myled1.write(pot1.read());
        //myled2.write(pot2.read());
        //wait some time to give the LED output a few PWM cycles. Otherwise a new value is written before the previously set PWM period (of 100microseconds) is finished
        //This loop executes at roughly 100Hz (1/0.01s)
        wait(0.01);
    }
}