Juggler Position Control Parsing
Dependencies: MODSERIAL mbed Servo
Fork of juggler_mbed_position_control by
main.cpp
- Committer:
- Symplectomorphism
- Date:
- 2017-01-15
- Revision:
- 3:dcaf3c1e4ed6
- Parent:
- 2:b4aef96e0cd7
- Child:
- 4:a3720ed072d2
File content as of revision 3:dcaf3c1e4ed6:
#include "mbed.h" #include "MODSERIAL/MODSERIAL.h" #include "SerialComm/SerialComm.h" #include <stdlib.h> #include <stdio.h> #include <math.h> #define NUM_FLOATS 10 #define USHRT_MAX 65535 #define USHRT_MIN 0 #define POWER_OFF 32768 #define BACKWARD_MAX 0 #define FORWARD_MAX USHRT_MAX MODSERIAL pcSerial(USBTX, USBRX); // Initialize a pins t//o perform analog and digital output fucntions AnalogOut aout(p18); PwmOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); PwmOut motorPwm(p26); AnalogOut motorAna(p18); DigitalOut motorEnable(p12); Ticker aTimer; AnalogIn potentiometer(p20); DigitalIn potentiometerEnable(p21); //Serial pc(USBTX, USBRX); float valueFloats[NUM_FLOATS]; float voltage; SerialComm serialComm(&pcSerial); bool readyToSendNext; void timerFcn() { readyToSendNext = true; } int main(void) { led2 = 0; led3 = 0; motorEnable = 0; // turn off motor motorAna.write_u16(POWER_OFF); // set motor pwm to zero uint16_t motorCommandReceived = 0; uint16_t motorCommand = motorCommandReceived; uint16_t motorCommandToSend = 0; pcSerial.baud(115200); pcSerial.printf("Start!\n"); readyToSendNext = false; //aTimer.attach(&timerFcn, 0.002); // the address of the function to be attached (flip) and the interval (2 seconds) while(1) { if(serialComm.checkIfNewMessage()) { //fReceived = serialComm.getFloat(); motorCommandReceived = serialComm.getUnsignedShort(); led2 = potentiometerEnable; if(potentiometerEnable) { motorEnable = 1; //CHANGE TO 1 led3 = 1; } else { motorEnable = 0; led3 = 0; //motorAna.write_u16(POWER_OFF); } motorCommand = potentiometer.read_u16(); led1 = potentiometer; motorAna.write_u16(motorCommand); //motorAna.write_u16(motorCommandReceived); //motorAna.write_u16(USHRT_MAX); readyToSendNext = true; } if(readyToSendNext == true) { motorCommandToSend = motorCommandReceived; // / 3.3f; //led1 = fToSend; // voltage larger than 0.5*3.3 //i++; // led1 = (ftemp > 0.5f) ? !led1 : 0; // voltage larger than 0.5*3.3 serialComm.sendUnsignedShort(motorCommandToSend); // write it back readyToSendNext = false; } } }