Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TFC-RACING-DEMO by
main.cpp
- Committer:
- redxeth
- Date:
- 2014-04-20
- Revision:
- 0:98e98e01a6ce
- Child:
- 1:2ca599933725
File content as of revision 0:98e98e01a6ce:
#include "mbed.h"
#include "TFC.h"
#include "common.h"
#include "Spices.h"
void TFC_TickerUpdate()
{
int i;
for(i=0; i<NUM_TFC_TICKERS; i++)
{
if(TFC_Ticker[i]<0xFFFFFFFF)
{
TFC_Ticker[i]++;
}
}
}
void DemoProgram()
{
uint32_t i,j,t = 0;
float ReadPot0, ReadPot1;
//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)
{
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:
TFC_HBRIDGE_DISABLE;
// if (TFC_HBRIDGE_ENABLED) {
// TFC_HBRIDGE_ENABLED = false;
// }
//Demo mode 1 will just move the servos with the on-board potentiometers
if(TFC_Ticker[0]>=20) // every 40mS...
{
TFC_Ticker[0] = 0; //reset the Ticker
//update the Servos
ReadPot0 = TFC_ReadPot(0);
ReadPot1 = TFC_ReadPot(1);
TFC_SetServo(0,ReadPot0);
TFC_SetServo(1,ReadPot1);
TERMINAL_PRINTF("Pot0 = %1.2f\r\n", ReadPot0);
// TERMINAL_PRINTF("Pot1 = %1.2f\r\n", ReadPot1);
}
//Let's put a pattern on the LEDs
if(TFC_Ticker[1] >= 125) // every 250mS... cycle through LEDs
{
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 :
TFC_HBRIDGE_ENABLE;
ReadPot0 = TFC_ReadPot(0);
ReadPot1 = TFC_ReadPot(1);
// TERMINAL_PRINTF("Pot0 = %1.2f\n", ReadPot0);
// TERMINAL_PRINTF("Pot1 = %1.2f\n", ReadPot1);
TFC_SetMotorPWM(ReadPot0,ReadPot1);
//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);
}
break;
case 3 :
//Demo Mode 3 will be in Freescale Garage Mode. It will beam data from the Camera to the
//Labview Application
//note that there are some issues
if(TFC_Ticker[0]>1000 && TFC_LineScanImageReady>0) // every 2s ...
{
TFC_Ticker[0] = 0;
TFC_LineScanImageReady=0; // must reset to 0 after detecting non-zero
if(t==0)
t=4;
else
t--;
TFC_SetBatteryLED_Level(t);
for(i=0;i<8;i++) // print one line worth of data (128) from Camera 0
{
for(j=0;j<16;j++)
{
TERMINAL_PRINTF("0x%X",TFC_LineScanImage0[(i*16)+j]);
if((i==7) && (j==15)) // when last data reached put in line return
TERMINAL_PRINTF("\r\n",TFC_LineScanImage0[(i*16)+j]);
else
TERMINAL_PRINTF(",",TFC_LineScanImage0[(i*16)+j]);
}
wait_ms(10);
}
/* for(i=0;i<8;i++) // print one line worth of data (128) from Camera 1 ??
{
for(j=0;j<16;j++)
{
TERMINAL_PRINTF("0x%X",TFC_LineScanImage1[(i*16)+j]);
if((i==7) && (j==15)) // when last data reached put in line return
TERMINAL_PRINTF("\r\n",TFC_LineScanImage1[(i*16)+j]);
else
TERMINAL_PRINTF(",",TFC_LineScanImage1[(i*16)+j]);
}
wait_ms(10);
} */
}
break;
} // end case
}
int main()
{
// TERMINAL TYPE
PC.baud(115200); // works with Excel and TeraTerm
//PC.baud(9600); // works with USB Serial Monitor Lite: https://play.google.com/store/apps/details?id=jp.ksksue.app.terminal; doesn't work > 9600
TFC_TickerObj.attach_us(&TFC_TickerUpdate,2000); // update ticker array every 2mS (2000 uS)
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();
// If DIP switch 1 is high, then run MCP, else Demo program
if(TFC_GetDIP_Switch()&0x01)
// Run MCP
MasterControlProgram();
else
// Run Demo Program
DemoProgram();
} // end of infinite for loop
}
