tau
Dependencies: HIDScope QEI mbed
Fork of Tau by
Diff: main.cpp
- Revision:
- 0:cf88b023a080
- Child:
- 1:d2fe9abf5082
diff -r 000000000000 -r cf88b023a080 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Oct 31 13:51:16 2017 +0000 @@ -0,0 +1,84 @@ +#include "mbed.h" +#include "HIDScope.h" +#include "QEI.h" +#include "iostream" + +//Leds +DigitalOut ledb(LED_BLUE); +DigitalOut ledr(LED_RED); +DigitalOut ledg(LED_GREEN); + +//Motor +DigitalOut motor1DC(D7); +PwmOut motor1PWM(D6); + +//Button +DigitalIn button1(SW2); + +//PC +Serial pc(USBTX, USBRX); + +// HIDscope +HIDScope scope(1); + +// Encoder +int counts; +QEI Encoder(A0,A1,NC,32); +Ticker tick; +float F = 0.02; + +//Minimum wait time between rolls +float t = 1; + +// Encoder measurement function +void Measure() +{ + // Get pulses and send to HIDScope + counts = Encoder.getPulses(); + + float angle_pc = 1/87; + float angle = counts * angle_pc; + + scope.set(0, angle); + scope.send(); + + pc.printf("Counts:%i. \n Angle:%i. \n",counts,angle); +} + +//Dice rolling function +void Roll() +{ + ledg = 1; // green led off + ledr = 0; // red led on = rolling + + motor1PWM = 1; // motor on -> roll dice + wait(1.5); + motor1PWM = 0; // motor off + + motor1DC = abs(motor1DC-1); // rotate other way next time + + ledr = 1; // red led off + ledb = 0; // blue led on +} + +int main() +{ + motor1DC = 1; + ledb = 1; + ledr = 1; + ledg = 0; + + + + while (true) + { + if(button1==0) + { + Roll(); + wait(t); // wait before next roll to protect motors + ledb = 1; + ledg = 0; // green led on = ready to roll + } + Measure(); + } +} \ No newline at end of file