Example program that tests CCD1, Servo 1, and both motors.
Fork of TFC-TEST by
Revision 1:815e9ad229ad, committed 2018-01-12
- Comitter:
- alejandroRL
- Date:
- Fri Jan 12 18:28:21 2018 +0000
- Parent:
- 0:6432166d0781
- Commit message:
- Example program that tests the line scan camera, servo, and motors.
Changed in this revision
FRDM-TFC.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 6432166d0781 -r 815e9ad229ad FRDM-TFC.lib --- a/FRDM-TFC.lib Tue Apr 15 02:38:04 2014 +0000 +++ b/FRDM-TFC.lib Fri Jan 12 18:28:21 2018 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/emh203/code/FRDM-TFC/#fbc2ba3c670a +https://os.mbed.com/users/alejandroRL/code/frdm-tfc/#9c61b6ebc028
diff -r 6432166d0781 -r 815e9ad229ad main.cpp --- a/main.cpp Tue Apr 15 02:38:04 2014 +0000 +++ b/main.cpp Fri Jan 12 18:28:21 2018 +0000 @@ -1,172 +1,157 @@ #include "mbed.h" #include "TFC.h" - + //This macro is to maintain compatibility with Codewarrior version of the sample. This version uses the MBED libraries for serial port access Serial PC(USBTX,USBRX); #define TERMINAL_PRINTF PC.printf - - //This ticker code is used to maintain compability with the Codewarrior version of the sample. This code uses an MBED Ticker for background timing. - + +//This ticker code is used to maintain compability with the Codewarrior version of the sample. This code uses an MBED Ticker for background timing. + #define NUM_TFC_TICKERS 4 Ticker TFC_TickerObj; - + volatile uint32_t TFC_Ticker[NUM_TFC_TICKERS]; - + void TFC_TickerUpdate() { int i; - - for(i=0; i<NUM_TFC_TICKERS; i++) - { - if(TFC_Ticker[i]<0xFFFFFFFF) - { + + for(i=0; i<NUM_TFC_TICKERS; i++) { + if(TFC_Ticker[i]<0xFFFFFFFF) { TFC_Ticker[i]++; } } } - - - - + +int main2() +{ + PC.baud(115200); + TFC_TickerObj.attach_us(&TFC_TickerUpdate,2000); + + TFC_Init(); + //TFC_SetMotorPWM(0,0); + for(;;) { + + } +} + +int mainTestCamera() +{ + uint32_t i,t = 0; + + PC.baud(115200); + TFC_TickerObj.attach_us(&TFC_TickerUpdate,2000); + + TFC_Init(); + + for(;;) { + if(TFC_Ticker[0]>1000 && TFC_LineScanImageReady>0) { + TFC_Ticker[0] = 0; + TFC_LineScanImageReady = 0; + // camera 1 + for(i=0; i<128; i++) { + TERMINAL_PRINTF("%X,",TFC_LineScanImage0[i]); + } + TERMINAL_PRINTF("\r\n"); + } + } + +} + + +int mainTestServo() +{ + uint32_t i,t = 0; + + PC.baud(115200); + TFC_TickerObj.attach_us(&TFC_TickerUpdate,2000); + + TFC_Init(); + float val = -1; //-0.4 is all the way to the right. 0.4 is all the way to the left + TFC_SetServo(0,val); + for(;;) { + val+= 0.5; + if(val>1) { + val = -1; + } + TFC_SetServo(0,val); + wait(1); + } +} + int main() { - uint32_t i,t = 0; - PC.baud(115200); TFC_TickerObj.attach_us(&TFC_TickerUpdate,2000); - TFC_Init(); - - for(;;) - { - //TFC_Task must be called in your main loop. This keeps certain processing happy (I.E. Serial port queue check) - // TFC_Task(); - - //This Demo program will look at the middle 2 switch to select one of 4 demo modes. - //Let's look at the middle 2 switches - switch((TFC_GetDIP_Switch()>>1)&0x03) - { + for(;;) { + PC.printf("Select component to test:\r\n0: Servos\r\n1: Motors\r\n2: Camera (CCD1)\r\n"); + switch(PC.getc()) { default: - case 0 : - //Demo mode 0 just tests the switches and LED's - if(TFC_PUSH_BUTTON_0_PRESSED) - TFC_BAT_LED0_ON; - else - TFC_BAT_LED0_OFF; - - if(TFC_PUSH_BUTTON_1_PRESSED) - TFC_BAT_LED3_ON; - else - TFC_BAT_LED3_OFF; - - - if(TFC_GetDIP_Switch()&0x01) - TFC_BAT_LED1_ON; - else - TFC_BAT_LED1_OFF; - - if(TFC_GetDIP_Switch()&0x08) - TFC_BAT_LED2_ON; - else - TFC_BAT_LED2_OFF; - - break; - - case 1: - - //Demo mode 1 will just move the servos with the on-board potentiometers - if(TFC_Ticker[0]>=20) - { - TFC_Ticker[0] = 0; //reset the Ticker - //Every 20 mSeconds, update the Servos - TFC_SetServo(0,TFC_ReadPot(0)); - TFC_SetServo(1,TFC_ReadPot(1)); + case '0': + PC.printf("Testing Servos. Restart the board to stop.\r\n"); + float val = -1; //-0.4 is all the way to the right. 0.4 is all the way to the left + TFC_SetServo(0,val); + while(1) { + val+= 0.5; + if(val>1) { + val = -1; + } + TFC_SetServo(0,val); + wait(1); } - //Let's put a pattern on the LEDs - if(TFC_Ticker[1] >= 125) - { - TFC_Ticker[1] = 0; - t++; - if(t>4) - { - t=0; - } - TFC_SetBatteryLED_Level(t); - } - - TFC_SetMotorPWM(0,0); //Make sure motors are off - TFC_HBRIDGE_DISABLE; - - break; - - case 2 : - - //Demo Mode 2 will use the Pots to make the motors move - TFC_HBRIDGE_ENABLE; - - TFC_SetMotorPWM(TFC_ReadPot(0),TFC_ReadPot(1)); - - - //Let's put a pattern on the LEDs - if(TFC_Ticker[1] >= 125) - { - TFC_Ticker[1] = 0; - t++; - if(t>4) - { - t=0; - } - TFC_SetBatteryLED_Level(t); - } + case '1' : + PC.printf("Testing Motors. Restart the board to stop.\r\n"); + PC.printf("Enter value between -1 and 1. Format: +xx.xx (must include +/- sign)\r\n"); + char inString[7]; + PC.gets(inString, 7); + PC.printf(inString); + PC.printf("\r\n"); + float duty = atof(inString); + TFC_SetMotorPWM(duty,duty); + while(1) { + PC.printf("Enter value between -1 and 1. Format: +xx.xx (must include +/- sign)\r\n"); + PC.gets(inString, 7); + PC.printf(inString); + PC.printf("\r\n"); + duty = atof(inString); + TFC_SetMotorPWM(duty,duty); + } break; - - case 3 : - - - //Demo Mode 3 will be in Freescale Garage Mode. It will beam data from the Camera to the - //Labview Application - - - if(TFC_Ticker[0]>50 && TFC_LineScanImageReady>0) + case '2' : + PC.printf("Testing Camera. Restart the board to stop.\r\n"); + int t = 0; + while(1) + { + if(TFC_Ticker[0]>50 && TFC_LineScanImageReady>0) { - TFC_Ticker[0] = 0; - TFC_LineScanImageReady=0; - TERMINAL_PRINTF("\r\n"); - TERMINAL_PRINTF("L:"); - + TFC_Ticker[0] = 0; + TFC_LineScanImageReady=0; + TERMINAL_PRINTF("\r\n"); + TERMINAL_PRINTF("L:"); if(t==0) + { t=4; - else + }else{ t--; - - TFC_SetBatteryLED_Level(t); - - // camera 1 - for(i=0;i<128;i++) - { - TERMINAL_PRINTF("%X,",TFC_LineScanImage0[i]); - } - - // camera 2 - for(i=0;i<128;i++) - { - if(i==127) - TERMINAL_PRINTF("%X\r\n",TFC_LineScanImage1[i]); - else - TERMINAL_PRINTF("%X,",TFC_LineScanImage1[i]); - - } + + // camera 1 + for(int i=0; i<128; i++) { + TERMINAL_PRINTF("%X,",TFC_LineScanImage0[i]); + } + } } - + + } break; - } + } } - - + + } - +