int main(void) { char ch; InitializeMCU(); CallEvery(blink, 0, 0.25f); while(1) { Printf("\nRAS Demo for Robotathon 2013\n"); Printf(" 0=UART Demo\n 1=Motor Demo\n"); Printf(" 2=Servo Demo\n 3=I2C Line Sensor Demo\n"); Printf(" 4=IR Sensor Demo\n 5=Encoders Demo\n"); Printf(" 6=GPIO Demo\n 7=GPIO Line Sensor Demo\n"); Printf(">> "); // Read input from User ch = Getc(); Printf("%c", ch); Printf("\n"); switch(ch) { case '0': Printf("\n UART Demo\n"); uartDemo(); break; case '1': Printf("\nMotor Demo\n"); initMotors(); motorDemo(); break; case '2': Printf("\nServo Demo\n"); initServo(); servoDemo(); break; case '3': Printf("\nLine Sensor Demo\n"); initI2CLineSensor(); i2cLineSensorDemo(); break; case '4': Printf("\nIR Sensor Demo\n"); initIRSensor(); IRSensorDemo(); break; case '5': Printf("\nEncoders Demo\n"); initEncoders(); encoderDemo(); break; case '6': Printf("\nGPIO Demo\n"); gpioDemo(); break; case '7': Printf("\nGPIO Line Sensor Demo\n"); initGPIOLineSensor(); gpioLineSensorDemo(); break; } } }
int main(void) { char ch; LockoutProtection(); InitializeMCU(); initUART(); MoveStraight(); /* while(1) { UARTprintf("\nROBZ DEMO\n"); UARTprintf(" 0=UART Demo\n 1=Motor Demo\n"); UARTprintf(" 2=Servo Demo\n 3=Line Sensor\n"); UARTprintf(" 4=IR Sensor Demo\n 5=Encoders Demo\n"); UARTprintf(" 6=MoveStraight\n"); UARTprintf(">> "); ch = getc(); putc(ch); UARTprintf("\n"); if (ch == '0') { UARTprintf("\nUART Demo\n"); uartDemo(); } else if (ch == '1') { UARTprintf("\nMotor Demo\n"); initMotors(); motorDemo(); } else if (ch == '2') { UARTprintf("\nServo Demo\n"); initServo(); servoDemo(); } else if (ch == '3') { UARTprintf("\nLine Sensor Demo\n"); initLineSensor(); lineSensorDemo(); } else if (ch == '4') { UARTprintf("\nIR Sensor Demo\n"); initIRSensor(); IRSensorDemo(); } else if (ch == '5') { UARTprintf("\nEncoders Demo\n"); initEncoders(); encoderDemo(); } else if (ch == '6') { UARTprintf("\nMove Straight\n"); MoveStraight(); } } */ }
int main(void) { InitializeMCU(); // Drive at a slower (not turbo boosted) speed // for a short period to prevent too fast of // an acceleration at the start of the match. setWheelMotors(SPEED, SPEED); Wait(0.2); // Follow the line and cross your fingers. while (1) { followLine(); } }
// //Initialization method // void init(void) { //Necessary inits for chip LockoutProtection(); InitializeMCU(); //Various driver inits //initUART SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); UARTStdioInit(0); //motors InitializeMotors(false, false); }
int main(void) { char ch; LockoutProtection(); InitializeMCU(); initUART(); while(1) { UARTprintf("\nRAS Demo for Robotathon 2012\n"); UARTprintf(" 0=UART Demo\n 1=Motor Demo\n"); UARTprintf(" 2=Servo Demo\n 3=Line Sensor\n"); UARTprintf(" 4=IR Sensor Demo\n 5=Encoders Demo\n"); UARTprintf(">> "); ch = getc(); putc(ch); UARTprintf("\n"); if (ch == '0') { UARTprintf("\nUART Demo\n"); uartDemo(); } else if (ch == '1') { UARTprintf("\nMotor Demo\n"); initMotors(); motorDemo(); } else if (ch == '2') { UARTprintf("\nServo Demo\n"); initServo(); servoDemo(); } else if (ch == '3') { UARTprintf("\nLine Sensor Demo\n"); initLineSensor(); lineSensorDemo(); } else if (ch == '4') { UARTprintf("\nIR Sensor Demo\n"); initIRSensor(); IRSensorDemo(); } else if (ch == '5') { UARTprintf("\nEncoders Demo\n"); initEncoders(); encoderDemo(); } } }
// This is the code that gets called when the processor first starts execution // following a reset event. Only the absolutely necessary set is performed, // after which the application supplied entry() routine is called. Any fancy // actions (such as making decisions based on the reset cause register, and // resetting the bits in that register) are left solely in the hands of the // application. void ResetHandler(void) { register unsigned long *src; register unsigned long *dest; // Copy the data segment initializers from flash to SRAM. src = DATA_LOAD; dest = DATA_START; while (dest < DATA_END) { *dest++ = *src++; } // Zero fill the bss segment. dest = BSS_START; while (dest < BSS_END) { *dest++ = 0; } // Enable the floating-point unit. This must be done here to handle the // case where main() uses floating-point and the function prologue saves // floating-point registers (which will fault if floating-point is not // enabled). Any configuration of the floating-point unit using DriverLib // APIs must be done here prior to the floating-point unit being enabled. // // Note that this does not use DriverLib since it might not be included in // this project. HWREG(NVIC_CPAC) = ((HWREG(NVIC_CPAC) & ~(NVIC_CPAC_CP10_M | NVIC_CPAC_CP11_M)) | NVIC_CPAC_CP10_FULL | NVIC_CPAC_CP11_FULL); // Initialize RASLib InitializeMCU(); // Call the application's entry point. main(); // Enter an infinite loop if we leave main while (1) {} }
void InitBot(void) { //Call initialization functions. LockoutProtection(); InitializeMCU(); initUART(); InitializeEncoders(true,false); PresetEncoderCounts(0,0); InitializeMotors(true,true); InitializeServos(); InitializeLineSensor(); SetDischargeTime(350); //Modified for 4 ADC Ports (assuming all are IR). initADCPorts(); //Initialize state variables. angle = 90; shooting = false; rotate = rotate_time; move = move_time; IRtrig = false; lose_obj = false; //Pin PA3 is James. 0xff is off; 0x00 is on. GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3); GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, 0xff); //Pin PA2 is the trigger; set the pin to perform weak pull-up (not open-drain). SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2); GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); //Setup an interrupt on pin PA2 (flipPancake). IntEnable(INT_GPIOA); GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_2,GPIO_FALLING_EDGE); GPIOPinIntEnable(GPIO_PORTA_BASE, GPIO_PIN_2); }
int main(void){ char i; unsigned char data[16]; short wiichuck[7], xinit=0, yinit=0, l_vel, r_vel; int xpow, ypow; LockoutProtection(); InitializeMCU(); InitializeUART(); InitializeI2C(); InitializeServos(); SetServoPosition(SERVO_0, 140); InitializeMotors(true, false); InitializeEncoders(true, false); // UARTprintf("Initializing Nunchuck\n\n"); // I2CSend(0x52<<1, 2, 0x40, 0x00); // Wait(25); init_nunchuck(); // Wireless Nunchucks Zero @ 128 xinit = yinit = 128; while(1){ //Start Recalculating Values Wait(1); I2CSend(0x52<<1, 1, 0x00); Wait(1); I2CSend(0x52<<1, 1, 0x00); Wait(1); I2CSend(0x52<<1, 1, 0x00); if (I2CMasterErr(I2C0_MASTER_BASE) != I2C_MASTER_ERR_NONE){ UARTprintf("Send Zero Error:\n"); switch(I2CMasterErr(I2C0_MASTER_BASE)){ case I2C_MASTER_ERR_ADDR_ACK: UARTprintf(" I2C_MASTER_ERR_ADDR_ACK\n"); break; case I2C_MASTER_ERR_DATA_ACK: UARTprintf(" I2C_MASTER_ERR_DATA_ACK\n"); break; case I2C_MASTER_ERR_ARB_LOST: UARTprintf(" I2C_MASTER_ERR_ARB_LOST\n"); break; default: UARTprintf("WTF: %d\n", I2CMasterErr(I2C0_MASTER_BASE)); } // Reinitialize Nunchuck on error init_nunchuck(); }else{ Wait(1); I2CRecieve(0x52<<1, data, 6); // Nunchuck data is 6 bytes, but for whatever reason, MEMOREX Wireless Nunchuck wants to send 8... if (I2CMasterErr(I2C0_MASTER_BASE) != I2C_MASTER_ERR_NONE){ UARTprintf("Send Zero Error:\n"); switch(I2CMasterErr(I2C0_MASTER_BASE)){ case I2C_MASTER_ERR_ADDR_ACK: UARTprintf(" I2C_MASTER_ERR_ADDR_ACK\n"); break; case I2C_MASTER_ERR_DATA_ACK: UARTprintf(" I2C_MASTER_ERR_DATA_ACK\n"); break; case I2C_MASTER_ERR_ARB_LOST: UARTprintf(" I2C_MASTER_ERR_ARB_LOST\n"); break; } // Reinitialize Nunchuck on error init_nunchuck(); }else{ //for(i=0; i<6; i++) // data[i] = (data[i] ^ 0x17) + 0x17; // Nintendo decided to encrypt thir data... // Save Joystick Data wiichuck[0] = data[1]; // X Axis Joystick wiichuck[1] = data[0]; // Y Axis Joystick wiichuck[2] = (((unsigned short) data[2]) << 2) + (((unsigned short) data[5]) & (3<<2)); // X Axis Accel wiichuck[3] = (((unsigned short) data[3]) << 2) + (((unsigned short) data[5]) & (3<<4)); // Y Axis Accel wiichuck[4] = (((unsigned short) data[4]) << 2) + (((unsigned short) data[5]) & (3<<6)); // Z Axis Accel wiichuck[5] = data[5] & (1 << 1) ? 0 : 1; //'C' Button wiichuck[6] = data[5] & (1 << 0) ? 0 : 1; //'Z' Button //if (xinit == 0 && yinit == 0){ // xinit = wiichuck[0]-127; // yinit = wiichuck[1]-127; //}else{ xpow = (wiichuck[0]-xinit)/2; ypow = (wiichuck[1]-yinit)/2; l_vel = (xpow - ypow)*2; r_vel = (xpow + ypow)*2; l_vel = l_vel > 127 ? 127 : l_vel; r_vel = r_vel > 127 ? 127 : r_vel; l_vel = l_vel < -127 ? -127 : l_vel; r_vel = r_vel < -127 ? -127 : r_vel; //UARTprintf("X: %d\tY: %d\n", xpow*2, ypow*2); SetMotorPowers(l_vel / (wiichuck[5]==0 ? 2 : 1), r_vel / (wiichuck[5]==0 ? 2 : 1)); UARTprintf("Motor L: %d\tMotor R: %d\n", l_vel, r_vel); SetServoPosition(SERVO_0, wiichuck[6]==1 ? 255 : 140); UARTprintf("Nunchuck Data:\n"); for(i=0; i<7; i++){ UARTprintf(" %d\n", wiichuck[i]); }NL; Wait(100); } } } }
int main(void) { LockoutProtection(); InitializeMCU(); //init uart SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); UARTStdioInit(0); LED_Init(); Jumper_Init(); ADC_Init(); Sonar_Init(); usemotors = Jumper_Value & 0x8; if ((Jumper_Value & 0x7) == 0x1) { if (usemotors) { Motor_Init(false,true); Motor_Set(127,127); } avoid_sonar(0); avoid_ir(filtered_ir); for (;;); } if ((Jumper_Value & 0x7) == 0x2) { Travel_Init(usemotors); Travel_Go(FULL_SPEED); for (;;); } if ((Jumper_Value & 0x7) == 0x3) { if (usemotors) { Motor_Init(false,true); Motor_Set(127,127); } for (;;); } //if no jumpers are set, enter debug mode Encoder_Init(true,false); for (;;c++) { ADC_Background_Read(0); Sonar_Background_Read(0); Encoder_Background_Read(0); Jumper_Read(); UARTprintf("ADC[%3d %3d %3d %3d %3d %3d %3d %3d] S[%7d] E[%3d %3d] J[%1x] c:%d\n", ADC_Values[0],ADC_Values[1],ADC_Values[2],ADC_Values[3],ADC_Values[4],ADC_Values[5],ADC_Values[6],ADC_Values[7], Sonar_Value, Encoder_Values[0],Encoder_Values[1], Jumper_Value, c ); LED_Set(LED_0,c); LED_Set(LED_1,c+64); LED_Set(LED_2,c+128); LED_Set(LED_3,c+192); WaitUS(20000); } }