added emg to milestone 1 but not completely working yet

Dependencies:   HIDScope MODSERIAL mbed

Fork of Milestone_1 by Casper Kroon

Committer:
CasperK
Date:
Fri Sep 28 11:33:57 2018 +0000
Revision:
3:f00ddd66fe39
Parent:
2:735ca8577f31
Child:
4:fe0b7e7b1de9
Changing direction by potmeter of motor (working version)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CasperK 0:9922b502cbc3 1 #include "mbed.h"
CasperK 0:9922b502cbc3 2 #include "MODSERIAL.h"
CasperK 0:9922b502cbc3 3 #include "HIDScope.h"
CasperK 0:9922b502cbc3 4
CasperK 0:9922b502cbc3 5 PwmOut pwmpin(D6);
CasperK 0:9922b502cbc3 6 PwmOut led(D10);
CasperK 0:9922b502cbc3 7 AnalogIn potmeter(A5);
CasperK 0:9922b502cbc3 8 DigitalIn button(D2);
CasperK 3:f00ddd66fe39 9 DigitalOut directionpin(D7);
CasperK 3:f00ddd66fe39 10 MODSERIAL pc(USBTX, USBRX);
CasperK 0:9922b502cbc3 11
CasperK 0:9922b502cbc3 12 HIDScope scope(2);
CasperK 0:9922b502cbc3 13 Ticker ticker;
CasperK 2:735ca8577f31 14 enum states{forward, stop, backwards};
CasperK 2:735ca8577f31 15 states CurrentState;
CasperK 0:9922b502cbc3 16
CasperK 0:9922b502cbc3 17 volatile float x;
CasperK 0:9922b502cbc3 18 volatile float y;
CasperK 3:f00ddd66fe39 19 volatile float scaled_potmeter;
CasperK 3:f00ddd66fe39 20 volatile float c;
CasperK 0:9922b502cbc3 21
CasperK 0:9922b502cbc3 22 void sendData() {
CasperK 0:9922b502cbc3 23 scope.set(0,potmeter); //set the potmeter data to the first scope
CasperK 1:aa505856416d 24 scope.set(1,x);
CasperK 1:aa505856416d 25 scope.send(); //send the datapoints of the 2 motors
CasperK 0:9922b502cbc3 26 }
CasperK 0:9922b502cbc3 27
CasperK 3:f00ddd66fe39 28 void Proces_states(void){
CasperK 3:f00ddd66fe39 29 switch (CurrentState){
CasperK 3:f00ddd66fe39 30 case forward:
CasperK 3:f00ddd66fe39 31 directionpin = 1;
CasperK 3:f00ddd66fe39 32 pwmpin.write(scaled_potmeter); //pwm of motor is potmeter value
CasperK 3:f00ddd66fe39 33 led.write(scaled_potmeter); //led is potmeter value
CasperK 3:f00ddd66fe39 34 break;
CasperK 3:f00ddd66fe39 35 case stop:
CasperK 3:f00ddd66fe39 36 // do nothing
CasperK 3:f00ddd66fe39 37 break;
CasperK 3:f00ddd66fe39 38 case backwards:
CasperK 3:f00ddd66fe39 39 directionpin = 0;
CasperK 3:f00ddd66fe39 40 c = scaled_potmeter*-1;
CasperK 3:f00ddd66fe39 41 pwmpin.write(c); //pwm of motor is potmeter value
CasperK 3:f00ddd66fe39 42 led.write(c); //led is potmeter value
CasperK 3:f00ddd66fe39 43 break;
CasperK 3:f00ddd66fe39 44 }
CasperK 3:f00ddd66fe39 45 }
CasperK 3:f00ddd66fe39 46
CasperK 2:735ca8577f31 47 int main() {
CasperK 1:aa505856416d 48 x = 1; //placeholder value for potmeter of second motor
CasperK 0:9922b502cbc3 49
CasperK 1:aa505856416d 50 pwmpin.period_us(60); //60 microseconds PWM period, 16.7 kHz
CasperK 1:aa505856416d 51 led.period_us(60); //60 microseconds
CasperK 1:aa505856416d 52 ticker.attach(&sendData, 0.005f); //send data to hidscope at 200Hz
CasperK 0:9922b502cbc3 53
CasperK 3:f00ddd66fe39 54 while (true) {
CasperK 3:f00ddd66fe39 55 scaled_potmeter = (potmeter*2)-1; //scale potmeter from 0-1 to (-1 to 1)
CasperK 3:f00ddd66fe39 56
CasperK 3:f00ddd66fe39 57 if (scaled_potmeter > 0) {
CasperK 3:f00ddd66fe39 58 CurrentState = forward;
CasperK 3:f00ddd66fe39 59 pc.printf("state = forward\r\n");
CasperK 3:f00ddd66fe39 60 Proces_states();
CasperK 3:f00ddd66fe39 61 }
CasperK 3:f00ddd66fe39 62 if (scaled_potmeter == 0) {
CasperK 3:f00ddd66fe39 63 CurrentState = stop;
CasperK 3:f00ddd66fe39 64 pc.printf("state = stop\r\n");
CasperK 3:f00ddd66fe39 65 Proces_states();
CasperK 3:f00ddd66fe39 66 }
CasperK 3:f00ddd66fe39 67 if (scaled_potmeter < 0) {
CasperK 3:f00ddd66fe39 68 CurrentState = backwards;
CasperK 3:f00ddd66fe39 69 pc.printf("state = backwards\r\n");
CasperK 3:f00ddd66fe39 70 Proces_states();
CasperK 3:f00ddd66fe39 71 }
CasperK 3:f00ddd66fe39 72 wait(0.2f);
CasperK 0:9922b502cbc3 73 }
CasperK 2:735ca8577f31 74 }
CasperK 2:735ca8577f31 75
CasperK 2:735ca8577f31 76