Dependencies:   UniGraphic

Committer:
amouroug
Date:
Thu Oct 08 00:20:18 2020 -0500
Revision:
1:f27de729d8f8
Parent:
0:deb3a37d60f8
Updated main.cpp to account for mbed-os 6.3 changes.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
amouroug 0:deb3a37d60f8 1 #include "stdio.h"
amouroug 0:deb3a37d60f8 2 #include "mbed.h"
amouroug 0:deb3a37d60f8 3 #include "string"
amouroug 0:deb3a37d60f8 4 #include "Arial12x12.h"
amouroug 0:deb3a37d60f8 5 #include "Arial24x23.h"
amouroug 0:deb3a37d60f8 6 #include "Arial43x48_numb.h"
amouroug 0:deb3a37d60f8 7 #include <ILI9341.h>
amouroug 0:deb3a37d60f8 8
amouroug 0:deb3a37d60f8 9
amouroug 0:deb3a37d60f8 10 ILI9341 myLCD(SPI_16, 12000000, PB_5,PB_4, PB_3, PA_10, PA_8, PB_10,"myLCD"); // Spi 16bit, 12MHz, mosi, miso, sclk, cs, reset, dc
amouroug 0:deb3a37d60f8 11
amouroug 0:deb3a37d60f8 12 Timer t;
amouroug 0:deb3a37d60f8 13
amouroug 0:deb3a37d60f8 14 //unsigned short backgroundcolor=White;
amouroug 0:deb3a37d60f8 15 //unsigned short foregroundcolor=Black;
amouroug 0:deb3a37d60f8 16 unsigned short backgroundcolor=Black;
amouroug 0:deb3a37d60f8 17 unsigned short foregroundcolor=White;
amouroug 0:deb3a37d60f8 18
amouroug 0:deb3a37d60f8 19 char orient=1;
amouroug 0:deb3a37d60f8 20 int main()
amouroug 0:deb3a37d60f8 21 {
amouroug 0:deb3a37d60f8 22 // myLCD.set_contrast(26);//for uc1608
amouroug 0:deb3a37d60f8 23 // myLCD.set_contrast(46);//for ist3020
amouroug 0:deb3a37d60f8 24 myLCD.set_orientation(orient);
amouroug 0:deb3a37d60f8 25 int time, time2;
amouroug 1:f27de729d8f8 26 printf("\n\nSystem Core Clock = %.3f MHZ\r\n",(float)SystemCoreClock/1000000);
amouroug 0:deb3a37d60f8 27 t.start();
amouroug 0:deb3a37d60f8 28 // myLCD.set_font((unsigned char*) Terminal6x8);
amouroug 0:deb3a37d60f8 29 // myLCD.claim(stdout); // send stdout to the LCD display
amouroug 0:deb3a37d60f8 30 //myLCD.claim(stderr); // send stderr to the LCD display
amouroug 0:deb3a37d60f8 31 myLCD.background(backgroundcolor); // set background to black
amouroug 0:deb3a37d60f8 32 myLCD.foreground(foregroundcolor); // set chars to white
amouroug 0:deb3a37d60f8 33
amouroug 0:deb3a37d60f8 34 while(1) {
amouroug 0:deb3a37d60f8 35 myLCD.set_orientation((orient++)%4);
amouroug 0:deb3a37d60f8 36 myLCD.cls(); // clear the screen
amouroug 0:deb3a37d60f8 37 myLCD.locate(0,30);
amouroug 0:deb3a37d60f8 38 myLCD.printf("Display ID: %.8X\r\n", myLCD.tftID);
amouroug 1:f27de729d8f8 39 printf("Display ID: %.8X\r\n", myLCD.tftID);
amouroug 0:deb3a37d60f8 40 // mem write/read test
amouroug 0:deb3a37d60f8 41 unsigned short readback;
amouroug 0:deb3a37d60f8 42 unsigned short colorstep = (0x10000/myLCD.width());
amouroug 0:deb3a37d60f8 43 for(unsigned short i=0; i<myLCD.width(); i++) {
amouroug 0:deb3a37d60f8 44 myLCD.pixel(i,0,i*colorstep); // write line
amouroug 0:deb3a37d60f8 45 }
amouroug 0:deb3a37d60f8 46 bool readerror=false;
amouroug 0:deb3a37d60f8 47 for(unsigned short i=0; i<myLCD.width(); i++) { // verify line
amouroug 0:deb3a37d60f8 48 readback = myLCD.pixelread(i,0);
amouroug 0:deb3a37d60f8 49 if(readback!=i*colorstep) {
amouroug 0:deb3a37d60f8 50 readerror=true;
amouroug 1:f27de729d8f8 51 printf("pix %.4X readback %.4X\r\n", i*colorstep, readback);
amouroug 0:deb3a37d60f8 52 }
amouroug 0:deb3a37d60f8 53 }
amouroug 0:deb3a37d60f8 54 myLCD.locate(0,10);
amouroug 0:deb3a37d60f8 55 myLCD.printf("pixelread test %s\r\n", readerror ? "FAIL":"PASS");
amouroug 1:f27de729d8f8 56 ThisThread::sleep_for(2s);
amouroug 0:deb3a37d60f8 57
amouroug 0:deb3a37d60f8 58 myLCD.cls();
amouroug 0:deb3a37d60f8 59 myLCD.set_font((unsigned char*) Terminal6x8,32,127,false); //variable width disabled
amouroug 0:deb3a37d60f8 60 myLCD.locate(0,0);
amouroug 0:deb3a37d60f8 61 myLCD.printf("Display Test\r\nSome text just to see if auto carriage return works correctly");
amouroug 0:deb3a37d60f8 62 myLCD.set_font((unsigned char*) Terminal6x8);
amouroug 0:deb3a37d60f8 63 myLCD.printf("\r\nDisplay Test\r\nSome text just to see if auto carriage return works correctly");
amouroug 1:f27de729d8f8 64 printf(" Display Test \r\n");
amouroug 1:f27de729d8f8 65 ThisThread::sleep_for(3s);
amouroug 0:deb3a37d60f8 66 t.reset();
amouroug 0:deb3a37d60f8 67 myLCD.cls();
amouroug 1:f27de729d8f8 68 time=t.elapsed_time().count();
amouroug 0:deb3a37d60f8 69 myLCD.locate(2,55);
amouroug 0:deb3a37d60f8 70 myLCD.printf("cls: %.3fms", (float)time/1000);
amouroug 1:f27de729d8f8 71 printf("cls: %.3fms\r\n", (float)time/1000);
amouroug 1:f27de729d8f8 72 ThisThread::sleep_for(3s);
amouroug 0:deb3a37d60f8 73
amouroug 0:deb3a37d60f8 74 myLCD.cls();
amouroug 0:deb3a37d60f8 75 t.reset();
amouroug 0:deb3a37d60f8 76 // draw some graphics
amouroug 0:deb3a37d60f8 77 //myLCD.cls();
amouroug 0:deb3a37d60f8 78 myLCD.set_font((unsigned char*) Arial24x23);
amouroug 0:deb3a37d60f8 79 myLCD.locate(10,10);
amouroug 0:deb3a37d60f8 80 myLCD.printf("Test");
amouroug 0:deb3a37d60f8 81
amouroug 0:deb3a37d60f8 82 myLCD.line(0,0,myLCD.width()-1,0,foregroundcolor);
amouroug 0:deb3a37d60f8 83 myLCD.line(0,0,0,myLCD.height()-1,foregroundcolor);
amouroug 0:deb3a37d60f8 84 myLCD.line(0,0,myLCD.width()-1,myLCD.height()-1,foregroundcolor);
amouroug 0:deb3a37d60f8 85
amouroug 0:deb3a37d60f8 86 myLCD.rect(10,30,50,40,foregroundcolor);
amouroug 0:deb3a37d60f8 87 myLCD.fillrect(60,30,100,40,foregroundcolor);
amouroug 0:deb3a37d60f8 88
amouroug 0:deb3a37d60f8 89 myLCD.circle(150,32,30,foregroundcolor);
amouroug 0:deb3a37d60f8 90 myLCD.fillcircle(140,20,10,foregroundcolor);
amouroug 0:deb3a37d60f8 91
amouroug 0:deb3a37d60f8 92 double s;
amouroug 0:deb3a37d60f8 93
amouroug 0:deb3a37d60f8 94 for (unsigned short i=0; i<myLCD.width(); i++) {
amouroug 0:deb3a37d60f8 95 s =10 * sin((long double) i / 10 );
amouroug 0:deb3a37d60f8 96 myLCD.pixel(i,40 + (int)s,foregroundcolor);
amouroug 0:deb3a37d60f8 97 }
amouroug 0:deb3a37d60f8 98
amouroug 0:deb3a37d60f8 99
amouroug 1:f27de729d8f8 100 time=t.elapsed_time().count();
amouroug 0:deb3a37d60f8 101 myLCD.locate(2,55);
amouroug 0:deb3a37d60f8 102 myLCD.set_font((unsigned char*) Terminal6x8);
amouroug 0:deb3a37d60f8 103 myLCD.printf("plot: %.3fms", (float)time/1000);
amouroug 1:f27de729d8f8 104 printf("plot: %.3fms\r\n", (float)time/1000);
amouroug 1:f27de729d8f8 105 ThisThread::sleep_for(3s);
amouroug 0:deb3a37d60f8 106 myLCD.cls();
amouroug 0:deb3a37d60f8 107 t.reset();
amouroug 0:deb3a37d60f8 108 myLCD.set_font((unsigned char*) Arial43x48_numb, 46, 58, false); //only numbers, variable-width disabled
amouroug 0:deb3a37d60f8 109 t.reset();
amouroug 0:deb3a37d60f8 110 myLCD.locate(0,0);
amouroug 0:deb3a37d60f8 111 myLCD.printf("%d", 12345);
amouroug 1:f27de729d8f8 112 time=t.elapsed_time().count();
amouroug 0:deb3a37d60f8 113 myLCD.locate(2,55);
amouroug 0:deb3a37d60f8 114 myLCD.set_font((unsigned char*) Terminal6x8);
amouroug 0:deb3a37d60f8 115 myLCD.printf("Big Font: %.3fms", (float)time/1000);
amouroug 1:f27de729d8f8 116 printf("Big Font: %.3fms\r\n", (float)time/1000);
amouroug 1:f27de729d8f8 117 ThisThread::sleep_for(3s);
amouroug 0:deb3a37d60f8 118 // sparse pixels test
amouroug 0:deb3a37d60f8 119 myLCD.cls();
amouroug 0:deb3a37d60f8 120 myLCD.FastWindow(true);
amouroug 0:deb3a37d60f8 121 t.reset();
amouroug 0:deb3a37d60f8 122 for(unsigned int i=0; i<20000; i++) {
amouroug 0:deb3a37d60f8 123 myLCD.pixel((i+(i*89)%myLCD.width()), (i+(i*61)%myLCD.height()), White);
amouroug 0:deb3a37d60f8 124 }
amouroug 0:deb3a37d60f8 125 myLCD.copy_to_lcd();
amouroug 1:f27de729d8f8 126 time=t.elapsed_time().count();
amouroug 0:deb3a37d60f8 127 myLCD.cls();
amouroug 0:deb3a37d60f8 128 myLCD.FastWindow(false);
amouroug 0:deb3a37d60f8 129 t.reset();
amouroug 0:deb3a37d60f8 130 for(unsigned int i=0; i<20000; i++) {
amouroug 0:deb3a37d60f8 131 myLCD.pixel((i+(i*89)%myLCD.width()), (i+(i*61)%myLCD.height()), White);
amouroug 0:deb3a37d60f8 132 }
amouroug 0:deb3a37d60f8 133 myLCD.copy_to_lcd();
amouroug 1:f27de729d8f8 134 time2=t.elapsed_time().count();
amouroug 0:deb3a37d60f8 135 myLCD.locate(2,55);
amouroug 0:deb3a37d60f8 136 myLCD.printf("std:%.3fms fastw:%.3fms", (float)time2/1000, (float)time/1000);
amouroug 1:f27de729d8f8 137 printf("std: %.3fms fastw: %.3fms\r\n", (float)time2/1000, (float)time/1000);
amouroug 1:f27de729d8f8 138 ThisThread::sleep_for(3s);
amouroug 0:deb3a37d60f8 139
amouroug 0:deb3a37d60f8 140 // scroll test, only for TFT
amouroug 0:deb3a37d60f8 141 myLCD.cls();
amouroug 0:deb3a37d60f8 142 myLCD.set_font((unsigned char*) Arial24x23);
amouroug 0:deb3a37d60f8 143 myLCD.locate(2,10);
amouroug 0:deb3a37d60f8 144 myLCD.printf("Scrolling");
amouroug 0:deb3a37d60f8 145 myLCD.rect(0,0,myLCD.width()-1,myLCD.height()-1,White);
amouroug 0:deb3a37d60f8 146 myLCD.rect(1,1,myLCD.width()-2,myLCD.height()-2,Blue);
amouroug 0:deb3a37d60f8 147 myLCD.setscrollarea(0,myLCD.sizeY());
amouroug 1:f27de729d8f8 148 ThisThread::sleep_for(1s);
amouroug 0:deb3a37d60f8 149 myLCD.scroll(1); //up 1
amouroug 1:f27de729d8f8 150 ThisThread::sleep_for(1s);
amouroug 0:deb3a37d60f8 151 myLCD.scroll(0); //center
amouroug 1:f27de729d8f8 152 ThisThread::sleep_for(1s);
amouroug 0:deb3a37d60f8 153 myLCD.scroll(myLCD.sizeY()-1); //down 1
amouroug 1:f27de729d8f8 154 ThisThread::sleep_for(1s);
amouroug 0:deb3a37d60f8 155 myLCD.scroll(myLCD.sizeY()); // same as 0, center
amouroug 1:f27de729d8f8 156 ThisThread::sleep_for(1s);
amouroug 0:deb3a37d60f8 157 myLCD.scroll(myLCD.sizeY()>>1); // half screen
amouroug 1:f27de729d8f8 158 ThisThread::sleep_for(1s);
amouroug 0:deb3a37d60f8 159 myLCD.scrollreset(); // center
amouroug 1:f27de729d8f8 160 ThisThread::sleep_for(1s);
amouroug 0:deb3a37d60f8 161 for(unsigned short i=1; i<=myLCD.sizeY(); i++) {
amouroug 0:deb3a37d60f8 162 myLCD.scroll(i);
amouroug 1:f27de729d8f8 163 ThisThread::sleep_for(2ms);
amouroug 0:deb3a37d60f8 164 }
amouroug 1:f27de729d8f8 165 ThisThread::sleep_for(2s);
amouroug 0:deb3a37d60f8 166 // color inversion
amouroug 0:deb3a37d60f8 167 for(unsigned short i=0; i<=8; i++) {
amouroug 0:deb3a37d60f8 168 myLCD.invert(i&1);
amouroug 1:f27de729d8f8 169 ThisThread::sleep_for(200ms);
amouroug 0:deb3a37d60f8 170 }
amouroug 1:f27de729d8f8 171 ThisThread::sleep_for(2s);
amouroug 0:deb3a37d60f8 172 }
amouroug 0:deb3a37d60f8 173 }