
Position calibration added to encoder code
Dependencies: Encoder MODSERIAL mbed
Fork of Assignment_3_3_encoder by
Diff: main.cpp
- Revision:
- 0:1907291f2887
- Child:
- 1:9330bbc04857
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Oct 01 14:27:53 2018 +0000 @@ -0,0 +1,47 @@ +#include "mbed.h" +#include "MODSERIAL.h" +#include "encoder.h" //getPosition(), setPosition(), getSpeed() + +PwmOut pwmpin(D6); +PwmOut led(D10); +DigitalIn button(D2); +DigitalOut directionpin(D7); +Encoder motor1(D13,D12); +MODSERIAL pc(USBTX, USBRX); + +int main() +{ + int counts; //number of counts, + const int max_counts = 8400; //maximum number of counts from the X4 encoding + int motor_angle; + pc.printf("** reset **\r\n"); + directionpin = 1; //turn forward + led = 1; //turn led on + +/* this could be placed in the while loop + //"lompe" functions to let the counter count from 0-8400 and from -8400 to 0, could possibly be done better + if (counts > max_counts) {counts = 0;} + else if (counts < 0) {counts = max_counts;} + else if (counts < -1*max_counts) {counts = 0;} + + //converting the counts to degrees + degrees_per_count = 360/max_counts; + motor_angle = counts*degrees_per_counts; +*/ + + while (true) { + //if the button is pressed, turn of the led and turn the motor + if (button == false){ + pwmpin = 0.6; + led = 0; + } + //if the button is not pressed, keep the led on and the motor off + else { + pwmpin = 0; + led = 1; + } + counts = motor1.getPosition(); //get the number of counts from the encoder. Will keep counting up/down if not reset or stopped + pc.printf("%i\r\n", counts); + wait(0.1f); + } +} \ No newline at end of file