This is my bench sketch :
//Bench.ino
//Maël - 01/03/2013
//Mesure le temps de différentes methodes des lib UTFT et UTouch et envoi les temps sur le port Serie (115200 bauds)
#include <UTFT.h>
#include <UTouch.h>
#include "icon.h"
// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
// Tft, touchscreen for Arduino Mega
UTFT myGLCD(ITDB32S,38,39,40,41);
UTouch myTouch(6,5,4,3,2);
extern unsigned int icon[0x400];
//pointeur de fonction simple
typedef void TFunction(void);
typedef struct
{
TFunction * process; //pointeur sur la methode à chronometrer
String text; //nom du test (apparaitra sur la console)
} TProcessInfo;
void InitTFT()
{
// Setup the LCD, touch screen
myGLCD.InitLCD(LANDSCAPE);
myTouch.InitTouch(LANDSCAPE);
myTouch.setPrecision(PREC_LOW); //PREC_MEDIUM
myGLCD.clrScr();
}
void MeasureDrawPixel(void)
{
myGLCD.drawPixel(0,0);
}
void MeasureDraw10Pixels(void)
{
for (int i = 0; i < 10; i++)
myGLCD.drawPixel(i,i);
}
void MeasureSetColor()
{
myGLCD.setColor(255, 255, 255);
}
void MeasureSetBackColor()
{
myGLCD.setBackColor(64, 64, 64);
}
void MeasureFillRoundRect()
{
myGLCD.fillRoundRect(10, 10, 50, 50);
}
void MeasureDrawRoundRect()
{
myGLCD.drawRoundRect(110, 10, 150, 50);
}
void MeasureDrawLine()
{
myGLCD.drawLine(210, 10, 250, 50);
}
void MeasureDrawVLine()
{
myGLCD.drawLine(270, 10, 270, 50);
}
void MeasureDrawHLine()
{
myGLCD.drawLine(230, 20, 270, 20);
}
void MeasureFillRect()
{
myGLCD.fillRect(100, 100, 50, 150);
}
void MeasureSetSmallFont()
{
myGLCD.setFont(SmallFont);
}
void MeasurePrintText()
{
myGLCD.print("001", 1, 1);
}
void MeasurePrintTextAbc()
{
myGLCD.print("Abc", 1, 1);
}
void MeasureSetBigFont()
{
myGLCD.setFont(BigFont);
}
void MeasureclrScr()
{
myGLCD.clrScr();
}
void MeasureBitmap()
{
myGLCD.drawBitmap (200, 10, 32, 32, icon);
}
void MeasurePrintNum()
{
int num = 123;
myGLCD.printNumI(num, 200, 100);
}
void MeasureTouch_dataAvailable()
{
boolean b = myTouch.dataAvailable();
}
void MeasureTouch_read()
{
myTouch.read();
}
void MeasureTouch_getxy()
{
int x=myTouch.getX();
int y=myTouch.getY();
}
//Liste des méthodes à mesurer
#define LIST_COUNT 22
TProcessInfo ListOfMeasures[LIST_COUNT] = {
{ MeasureclrScr, "clrScr" },
{ MeasureDrawPixel, "DrawPixel" },
{ MeasureDraw10Pixels, "DrawPixel x 10" },
{ MeasureSetColor, "SetColor" },
{ MeasureSetBackColor, "SetBackColor" },
{ MeasureFillRoundRect, "FillRoundRect 40x40" },
{ MeasureDrawRoundRect, "DrawRoundRect 40x40" },
{ MeasureDrawLine, "drawLine 40x40" },
{ MeasureDrawVLine, "draw Vertical Line 40" },
{ MeasureDrawHLine, "draw Horizontal Line 40" },
{ MeasureFillRect, "FillRect 40x40" },
{ MeasureSetSmallFont, "SetSmallFont" },
{ MeasurePrintText, "Print 001" },
{ MeasurePrintTextAbc, "Print Abc" },
{ MeasurePrintNum, "printNumI(123)" },
{ MeasureSetBigFont, "SetBigFont" },
{ MeasurePrintText, "Print 001" },
{ MeasurePrintNum, "printNumI(123)" },
{ MeasureBitmap, "draw bitmap 32x32" },
//Mesure des optimisations sur UTouch (en debogage)
{ MeasureTouch_dataAvailable, "Touch Screen DataAvailable"},
{ MeasureTouch_read, "Touch Screen Read"},
{ MeasureTouch_getxy, "Touch Screen getX, getY"}
};
void Measure()
{
Serial.println("start...");
unsigned long ChronoAll = micros();
for (int i = 0; i < LIST_COUNT; i++)
{
if ( ListOfMeasures[i].process != NULL)
{
unsigned long ChronoOne = micros();
ListOfMeasures[i].process();
ChronoOne = micros() - ChronoOne;
Serial.print(ChronoOne, DEC);
Serial.print(" us : ");
Serial.println(ListOfMeasures[i].text);
}
}
ChronoAll = micros() - ChronoAll;
Serial.print("finish in ");
Serial.print(ChronoAll, DEC);
Serial.println(" us.");
}
void setup()
{
Serial.begin(115200);
Serial.println("ready.");
InitTFT();
Measure();
}
void loop()
{
}
Maël.