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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "TFC.h"
00003 
00004 #include "common.h"
00005 #include "Spices.h"
00006 
00007 
00008 void TFC_TickerUpdate()
00009 {
00010     int i;
00011  
00012     for(i=0; i<NUM_TFC_TICKERS; i++)
00013      {
00014         if(TFC_Ticker[i]<0xFFFFFFFF) 
00015         {
00016             TFC_Ticker[i]++;
00017         }
00018     }
00019 }
00020 
00021 void DemoProgram()
00022 {
00023   uint32_t i,j,t = 0;
00024  // float ReadPot0, ReadPot1;
00025 
00026       //Labview Application
00027       //note that there are some issues 
00028       if(TFC_Ticker[0]>1000 && TFC_LineScanImageReady>0) // every 2s ...
00029           {
00030            TFC_Ticker[0] = 0;
00031            TFC_LineScanImageReady=0; // must reset to 0 after detecting non-zero
00032           
00033               if(t==0)
00034                   t=4;
00035               else
00036                   t--;
00037               
00038                TFC_SetBatteryLED_Level(t);
00039               
00040                for(i=0;i<8;i++) // print one line worth of data (128) from Camera 0
00041                {
00042                   for(j=0;j<16;j++)
00043                   {
00044                        
00045                        TERMINAL_PRINTF("0x%X",TFC_LineScanImage0[(i*16)+j]);
00046                       
00047                        if((i==7) && (j==15))  // when last data reached put in line return
00048                            TERMINAL_PRINTF("\r\n",TFC_LineScanImage0[(i*16)+j]);
00049                        else
00050                            TERMINAL_PRINTF(",",TFC_LineScanImage0[(i*16)+j]);
00051                       
00052                   }
00053                   wait_ms(10);
00054                }                 
00055 }}
00056 
00057  
00058 int main()
00059 {
00060     // TERMINAL TYPE  
00061     PC.baud(115200); // works with Excel and TeraTerm 
00062     //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
00063     TFC_TickerObj.attach_us(&TFC_TickerUpdate,2000); // update ticker array every 2mS (2000 uS)
00064    
00065     TFC_Init();
00066     
00067     for(;;)
00068     {      
00069         //TFC_Task must be called in your main loop.  This keeps certain processing happy (I.E. Serial port queue check)
00070         //   TFC_Task();
00071 
00072 
00073         // If DIP switch 1 is high, then run MCP, else Demo program
00074         if(TFC_GetDIP_Switch()&0x01)
00075           // Run MCP
00076           MasterControlProgram();
00077         else      
00078           // Run Demo Program
00079           DemoProgram();
00080  
00081     } // end of infinite for loop
00082     
00083  
00084 }
00085