This Example measures the speed of the screen.
TI LaunchPad
Educational BoosterPack MKII
None. This basic example just uses your LaunchPad and BoosterPack only.
/// /// @file LCD_protocol100.ino /// @brief Main sketch /// /// @details Measure the speed of the screen /// @n @a Developed with [embedXcode+](http://embedXcode.weebly.com) /// /// @author Rei VILO /// @author http://embeddedcomputing.weebly.com /// @date Oct 05, 2013 /// @version 104 /// /// @copyright (c) Rei VILO, 2013 /// @copyright CC = BY SA NC /// /// @see ReadMe.txt for references /// @n /// // Core library for code-sense #if defined(WIRING) // Wiring specific #include "Wiring.h" #elif defined(MAPLE_IDE) // Maple specific #include "WProgram.h" #elif defined(MPIDE) // chipKIT specific #include "WProgram.h" #elif defined(DIGISPARK) // Digispark specific #include "Arduino.h" #elif defined(ENERGIA) // LaunchPad MSP430, Stellaris and Tiva, Experimeter Board FR5739 specific #include "Energia.h" #elif defined(CORE_TEENSY) // Teensy specific #include "WProgram.h" #elif defined(ARDUINO) && (ARDUINO >= 100) // Arduino 1.0 and 1.5 specific #include "Arduino.h" #elif defined(ARDUINO) && (ARDUINO < 100) // Arduino 23 specific #include "WProgram.h" #else // error #error Platform not defined #endif // Include application, user and local libraries #include "SPI.h" // Screen selection #define HX8353E // HX8353E K35 HI32 W32 ILI9225B HY28A ST7735 PicasoSPE PicasoSGC #if defined(ILI9225B) #include "screen_ILI9225B.h" Screen_ILI9225B myScreen; #elif defined(HX8353E) #include "Screen_HX8353E.h" Screen_HX8353E myScreen; #elif defined(W32) #include "screen_W32.h" Screen_W32 myScreen; #elif defined(K35) #include "screen_K35.h" Screen_K35 myScreen; #elif defined(HY28A) #include "screen_HY28A.h" Screen_HY28A myScreen; #elif defined(HI32) #include "screen_HI32.h" Screen_HI32 myScreen; #elif defined(ST7735) #include "screen_ST7735.h" Screen_ST7735 myScreen(ST7735R_RED_TAB); #elif defined(PicasoSPE) #include "screen_PicasoSPE.h" #if defined(__LM4F120H5QR__) //#include "SoftwareSerial.h" //SoftwareSerial mySerial(PB_0, PB_1); #define mySerial Serial1 Screen_PicasoSPE myScreen(PA_2, &mySerial); #else #define mySerial Serial1 Screen_PicasoSPE myScreen(4, &mySerial); #endif #elif defined(PicasoSGC) #include "screen_PicasoSGC.h" #define mySerial Serial1 Screen_PicasoSGC myScreen(20, &mySerial); #else #error Unknown screen #endif // Define variables and constants //uint32_t chrono; /// /// @brief protocolSquare /// @details measure time to draw a square with side=pixels /// @param pixels number of pixels of one side /// void protocolSquare(uint16_t pixels) { if ((pixels < myScreen.screenSizeX()) && (pixels < myScreen.screenSizeY()) && (pixels > 48)) { myScreen.setOrientation(0); myScreen.setPenSolid(false); uint16_t x100 = (myScreen.screenSizeX()-pixels)/2; uint16_t y100 = (myScreen.screenSizeY()-pixels)/2; myScreen.dRectangle(x100-1, y100-1, pixels+2, pixels+2, whiteColour); myScreen.setPenSolid(true); uint32_t chrono = millis(); myScreen.dRectangle(x100, y100, pixels, pixels, grayColour); chrono = millis() - chrono; myScreen.setFontSize(myScreen.fontMax()); myScreen.gText(x100 +2, y100 +2, "(" + i32toa(pixels) + ")"); myScreen.gText(x100 +2, y100 +pixels -myScreen.fontSizeY() -2, i32toa(chrono) + " ms"); Serial.print("Square("); Serial.print(pixels, DEC); Serial.print(")\t"); Serial.println(chrono, DEC); } } /// /// @brief protocolCopyPaste /// @details measure time to copy-paste a 64x64 area /// @param orientation default=1 /// void protocolCopyPaste(uint8_t orientation = 1) { uint32_t chrono; myScreen.clear(); myScreen.setOrientation(orientation); // Image chrono = millis(); for (uint8_t i=0; i<64; i++) { for (uint8_t j=0; j<64; j++) { myScreen.point(i, j, myScreen.calculateColour(4*i, 4*j, 254-2*i-2*j)); } } myScreen.setPenSolid(false); myScreen.rectangle(1, 1, 62, 62, blackColour); myScreen.line(0, 0, 63, 63, whiteColour); myScreen.line(32, 0, 63, 63, whiteColour); myScreen.line(0, 32, 63, 63, whiteColour); myScreen.dRectangle(0, 0, 64, 64, whiteColour); chrono = millis() - chrono; myScreen.setFontSize(0); myScreen.gText(0, 66, "0: Original"); myScreen.setFontSize(1); myScreen.gText(0, 76, i32toa(chrono) + " ms"); Serial.print("Original(="); Serial.print(orientation, DEC); Serial.print(")\t"); Serial.println(chrono, DEC); // Method 1 chrono = millis(); for (uint16_t i=0; i<64; i++) { for (uint16_t j=0; j<64; j++) { myScreen.point(myScreen.screenSizeX()/2+i, j, myScreen.readPixel(i, j)); } } chrono = millis() - chrono; myScreen.setFontSize(0); myScreen.gText(myScreen.screenSizeX()/2, 66, "1. point readPixel"); myScreen.setFontSize(1); myScreen.gText(myScreen.screenSizeX()/2, 76, i32toa(chrono) + " ms"); Serial.print("point(readPixel())\t"); Serial.println(chrono, DEC); // Method 2 chrono = millis(); myScreen.copyPaste(0, 0, 0, myScreen.screenSizeY()/2, 64, 64); chrono = millis() - chrono; myScreen.setFontSize(0); myScreen.gText(0, myScreen.screenSizeY()/2 +66, "2. copyPaste"); myScreen.setFontSize(1); myScreen.gText(0, myScreen.screenSizeY()/2 +76, i32toa(chrono) + " ms"); Serial.print("copyPaste()\t"); Serial.println(chrono, DEC); // Method 3 if (myScreen.isStorage()) { uint32_t address; chrono = millis(); address = 100; myScreen.copyArea(0, 0, 64, 64, address); address = 100; myScreen.pasteArea(myScreen.screenSizeX()/2, myScreen.screenSizeY()/2, 64, 64, address); chrono = millis() - chrono; myScreen.setFontSize(0); myScreen.gText(myScreen.screenSizeX()/2, myScreen.screenSizeY()/2 +66, "3. copy-paste SRAM"); myScreen.setFontSize(1); myScreen.gText(myScreen.screenSizeX()/2, myScreen.screenSizeY()/2 +76, i32toa(chrono) + " ms"); Serial.print("copyArea()+pasteArea() SRAM\t"); Serial.println(chrono, DEC); } } /// /// @brief protocolText /// @details measure time to draw text in 3 fonts, 4 orientations, 10x /// void protocolText() { uint32_t chrono1, chrono2; uint16_t colour; uint8_t k = 0; // Serial.print("fast gText... "); myScreen.clear(grayColour); myScreen.setFontSolid(true); chrono1 = millis(); for (uint8_t j=0; j<10; j++) { for (uint8_t i=0; i<4; i++) { if (k==1) colour = redColour; else if (k==2) colour = yellowColour; else if (k==3) colour = greenColour; else if (k==4) colour = cyanColour; else if (k==5) colour = blueColour; else colour = violetColour; k++; k %= 7; myScreen.setPenSolid(false); myScreen.dRectangle(0, 0, myScreen.screenSizeX(), myScreen.screenSizeY(), colour); myScreen.setOrientation(i); myScreen.setFontSize(0); myScreen.gText(4, 4, "font 0 on " + String(i), colour); myScreen.setFontSize(1); myScreen.gText(4, 14, "font 1 on " + String(i), colour); myScreen.setFontSize(2); myScreen.gText(4, 34, "font 2 on " + String(i), colour); } } chrono1 = millis()-chrono1; Serial.print("10xFontSolid(true)\t"); Serial.println(chrono1, DEC); // Serial.print("slow gText... "); myScreen.clear(grayColour); myScreen.setFontSolid(false); chrono2 = millis(); for (uint8_t j=0; j<10; j++) { for (uint8_t i=0; i<4; i++) { if (k==1) colour = redColour; else if (k==2) colour = yellowColour; else if (k==3) colour = greenColour; else if (k==4) colour = cyanColour; else if (k==5) colour = blueColour; else colour = violetColour; k++; k %= 7; myScreen.setPenSolid(false); myScreen.dRectangle(0, 0, myScreen.screenSizeX(), myScreen.screenSizeY(), colour); myScreen.setOrientation(i); myScreen.setFontSize(0); myScreen.gText(4, 4, "font 0 on " + String(i), colour); myScreen.setFontSize(1); myScreen.gText(4, 14, "font 1 on " + String(i), colour); myScreen.setFontSize(2); myScreen.gText(4, 34, "font 2 on " + String(i), colour); } } chrono2 = millis()-chrono2; Serial.print("10xFontSolid(false)\t"); Serial.println(chrono2, DEC); Serial.print("Ratio%\t"); Serial.println((uint32_t)((uint64_t)(chrono1*100)/chrono2), DEC); } // Add setup code void setup() { Serial.begin(9600); delay(100); Serial.println("*** LCD_protocol"); Serial.println("(All times in ms)"); #if defined(PicasoSPE) mySerial.begin(9600); #endif; myScreen.begin(); Serial.println(myScreen.WhoAmI()); Serial.print(myScreen.screenSizeX(), DEC); Serial.print("x"); Serial.println(myScreen.screenSizeY(), DEC); #if defined(PicasoSPE) myScreen.setSpeed((uint32_t) 38400); // 38400 ok, 57600 ok, 115200 nok, 256000 nok mySerial.begin((uint32_t) 38400); Serial.println((uint32_t) 38400, DEC); #endif; myScreen.setFontSize(myScreen.fontMax()); myScreen.clear(darkGrayColour); protocolSquare(300); protocolSquare(200); protocolSquare(100); protocolSquare(50); delay(2000); protocolText(); delay(2000); if (myScreen.isReadable()) { protocolCopyPaste(1); delay(2000); } myScreen.clear(); Serial.println("---"); Serial.println(); } // Add loop code void loop() { }