void Controler::Kinetics::goForward(long double mm){ setDistance(mm); setLeftForward(); setRightForward(); start(); }
int main(void) { SYSTEMConfigPerformance(10000000); enableInterrupts(); //This function is necessary to use interrupts. initTimer2(); initTimer3(); switch1(); initPWM(); initADC(); initLCD(); state = IDLE_1; volatile float printbuffer = 0; //maybe change to float // double voltPOT = 0; char str[16]; while(1){ // clearLCD(); // snprintf(str, sizeof(str), "%0.2f", (float)potVoltage/1023.0*5.0); // printStringLCD(str); // moveCursorLCD(0,0); switch(state){ voltage = potVoltage*1.0; case IDLE_1: setLeftForward(1); setRightForward(1); setLeftWheelSpeed(0); setRightWheelSpeed(0); break; case D_IDLE_1: delayUs(100); state = FORWARD; break; case FORWARD: CalculatedSpeed(); AD1CON1bits.SAMP = 1; break; case D_FORWARD: delayUs(100); state = IDLE_2; break; case IDLE_2: setLeftWheelSpeed(0); setRightWheelSpeed(0); break; case D_IDLE_2: delayUs(100); state = BACKWARD; break; case BACKWARD: setLeftForward(0); setRightForward(0); CalculatedSpeed(); AD1CON1bits.SAMP = 1; break; case D_BACKWARD: delayUs(100); state = IDLE_1; break; } } return 0; }
void Controler::Kinetics::turnLeft(long double angle){ setDistance((angle * 8.74 * 3.14)/360.0); setLeftBack(); setRightForward(); start(); }