This is an example program that actually allows the car to race using the FRDM-TFC library!

Dependencies:   FRDM-TFC

Fork of TFC-RACING-DEMO by Daniel Hadad

Committer:
morgonXak
Date:
Mon Apr 28 15:05:37 2014 +0000
Revision:
1:2ca599933725
Parent:
0:98e98e01a6ce
jguh; \; ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
redxeth 0:98e98e01a6ce 1 #include "mbed.h"
redxeth 0:98e98e01a6ce 2 #include "TFC.h"
redxeth 0:98e98e01a6ce 3
redxeth 0:98e98e01a6ce 4 #include "common.h"
redxeth 0:98e98e01a6ce 5 #include "Spices.h"
redxeth 0:98e98e01a6ce 6
redxeth 0:98e98e01a6ce 7
redxeth 0:98e98e01a6ce 8 void TFC_TickerUpdate()
redxeth 0:98e98e01a6ce 9 {
redxeth 0:98e98e01a6ce 10 int i;
redxeth 0:98e98e01a6ce 11
redxeth 0:98e98e01a6ce 12 for(i=0; i<NUM_TFC_TICKERS; i++)
redxeth 0:98e98e01a6ce 13 {
redxeth 0:98e98e01a6ce 14 if(TFC_Ticker[i]<0xFFFFFFFF)
redxeth 0:98e98e01a6ce 15 {
redxeth 0:98e98e01a6ce 16 TFC_Ticker[i]++;
redxeth 0:98e98e01a6ce 17 }
redxeth 0:98e98e01a6ce 18 }
redxeth 0:98e98e01a6ce 19 }
redxeth 0:98e98e01a6ce 20
redxeth 0:98e98e01a6ce 21 void DemoProgram()
redxeth 0:98e98e01a6ce 22 {
redxeth 0:98e98e01a6ce 23 uint32_t i,j,t = 0;
morgonXak 1:2ca599933725 24 // float ReadPot0, ReadPot1;
redxeth 0:98e98e01a6ce 25
redxeth 0:98e98e01a6ce 26 //Labview Application
redxeth 0:98e98e01a6ce 27 //note that there are some issues
redxeth 0:98e98e01a6ce 28 if(TFC_Ticker[0]>1000 && TFC_LineScanImageReady>0) // every 2s ...
redxeth 0:98e98e01a6ce 29 {
redxeth 0:98e98e01a6ce 30 TFC_Ticker[0] = 0;
redxeth 0:98e98e01a6ce 31 TFC_LineScanImageReady=0; // must reset to 0 after detecting non-zero
redxeth 0:98e98e01a6ce 32
redxeth 0:98e98e01a6ce 33 if(t==0)
redxeth 0:98e98e01a6ce 34 t=4;
redxeth 0:98e98e01a6ce 35 else
redxeth 0:98e98e01a6ce 36 t--;
redxeth 0:98e98e01a6ce 37
redxeth 0:98e98e01a6ce 38 TFC_SetBatteryLED_Level(t);
redxeth 0:98e98e01a6ce 39
redxeth 0:98e98e01a6ce 40 for(i=0;i<8;i++) // print one line worth of data (128) from Camera 0
redxeth 0:98e98e01a6ce 41 {
redxeth 0:98e98e01a6ce 42 for(j=0;j<16;j++)
redxeth 0:98e98e01a6ce 43 {
redxeth 0:98e98e01a6ce 44
redxeth 0:98e98e01a6ce 45 TERMINAL_PRINTF("0x%X",TFC_LineScanImage0[(i*16)+j]);
redxeth 0:98e98e01a6ce 46
redxeth 0:98e98e01a6ce 47 if((i==7) && (j==15)) // when last data reached put in line return
redxeth 0:98e98e01a6ce 48 TERMINAL_PRINTF("\r\n",TFC_LineScanImage0[(i*16)+j]);
redxeth 0:98e98e01a6ce 49 else
redxeth 0:98e98e01a6ce 50 TERMINAL_PRINTF(",",TFC_LineScanImage0[(i*16)+j]);
redxeth 0:98e98e01a6ce 51
redxeth 0:98e98e01a6ce 52 }
redxeth 0:98e98e01a6ce 53 wait_ms(10);
morgonXak 1:2ca599933725 54 }
morgonXak 1:2ca599933725 55 }}
redxeth 0:98e98e01a6ce 56
redxeth 0:98e98e01a6ce 57
redxeth 0:98e98e01a6ce 58 int main()
redxeth 0:98e98e01a6ce 59 {
redxeth 0:98e98e01a6ce 60 // TERMINAL TYPE
redxeth 0:98e98e01a6ce 61 PC.baud(115200); // works with Excel and TeraTerm
redxeth 0:98e98e01a6ce 62 //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
redxeth 0:98e98e01a6ce 63 TFC_TickerObj.attach_us(&TFC_TickerUpdate,2000); // update ticker array every 2mS (2000 uS)
redxeth 0:98e98e01a6ce 64
redxeth 0:98e98e01a6ce 65 TFC_Init();
redxeth 0:98e98e01a6ce 66
redxeth 0:98e98e01a6ce 67 for(;;)
redxeth 0:98e98e01a6ce 68 {
redxeth 0:98e98e01a6ce 69 //TFC_Task must be called in your main loop. This keeps certain processing happy (I.E. Serial port queue check)
redxeth 0:98e98e01a6ce 70 // TFC_Task();
redxeth 0:98e98e01a6ce 71
redxeth 0:98e98e01a6ce 72
redxeth 0:98e98e01a6ce 73 // If DIP switch 1 is high, then run MCP, else Demo program
redxeth 0:98e98e01a6ce 74 if(TFC_GetDIP_Switch()&0x01)
redxeth 0:98e98e01a6ce 75 // Run MCP
redxeth 0:98e98e01a6ce 76 MasterControlProgram();
redxeth 0:98e98e01a6ce 77 else
redxeth 0:98e98e01a6ce 78 // Run Demo Program
redxeth 0:98e98e01a6ce 79 DemoProgram();
redxeth 0:98e98e01a6ce 80
redxeth 0:98e98e01a6ce 81 } // end of infinite for loop
redxeth 0:98e98e01a6ce 82
redxeth 0:98e98e01a6ce 83
redxeth 0:98e98e01a6ce 84 }
redxeth 0:98e98e01a6ce 85