Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE mbed
Fork of uVGAII_demo by
main.cpp
- Committer:
- 4180_1
- Date:
- 2013-11-17
- Revision:
- 3:454d1f4c8fd7
- Parent:
- 2:75727e89a717
- Child:
- 4:25a266a74a4c
File content as of revision 3:454d1f4c8fd7:
//
// TFT_4DGL is a class to drive 4D Systems TFT touch screens
//
// Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
//
// TFT_4DGL is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// TFT_4DGL is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with TFT_4DGL. If not, see <http://www.gnu.org/licenses/>.
#include "mbed.h"
#include "uLCD_4DGL.h"
#define SIZE_X 128
#define SIZE_Y 128
//
uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
int main()
{
// basic printf demo = 16 by 18 characters on screen
uLCD.printf("\nHello uLCD World\n"); //Default Green on black text
uLCD.printf("\n Starting Demo...");
uLCD.text_width(4); //4X size text
uLCD.text_height(4);
uLCD.color(RED);
for (int i=10; i>=0; --i) {
uLCD.locate(1,2);
uLCD.printf("%2D",i);
wait(.5);
}
uLCD.cls();
uLCD.baudrate(256000); //jack up baud rate to max
//demo graphics
uLCD.background_color(DGREY);
uLCD.circle(60, 50, 30, 0xFF00FF);
uLCD.triangle(120, 100, 40, 40, 10, 100, 0x0000FF);
uLCD.line(0, 0, 80, 60, 0xFF0000);
uLCD.rectangle(50, 50, 100, 90, 0x00FF00);
uLCD.pixel(60, 60, BLACK);
uLCD.read_pixel(120, 70);
uLCD.circle(120, 60, 10, BLACK);
uLCD.set_font(FONT_7X8);
uLCD.text_mode(TRANSPARENT);
uLCD.text_char('B', 9, 8, BLACK);
uLCD.text_char('I',10, 8, BLACK);
uLCD.text_char('G',11, 8, BLACK);
uLCD.text_string("This is a test of string", 1, 4, FONT_7X8, WHITE);
wait(2);
// printf text only mode demo
uLCD.background_color(BLUE);
uLCD.cls();
uLCD.locate(0,0);
uLCD.color(WHITE);
uLCD.textbackground_color(BLUE);
uLCD.set_font(FONT_7X8);
uLCD.text_mode(OPAQUE);
int i=0;
while(i<64) {
if(i%16==0) uLCD.cls();
uLCD.printf("TxtLine %2D Page %D\n",i%16,i/16 );
i++; //16 lines with 18 charaters per line
}
//draw an image pixel by pixel
uLCD.background_color(BLACK);
uLCD.cls();
//compute Mandelbrot image for display
//image size in pixels and setup
const unsigned ImageHeight=128;
const unsigned ImageWidth=128;
double MinRe = -0.75104;
double MaxRe = -0.7408;
double MinIm = 0.10511;
double MaxIm = MinIm+(MaxRe-MinRe)*ImageHeight/ImageWidth;
double Re_factor = (MaxRe-MinRe)/(ImageWidth-1);
double Im_factor = (MaxIm-MinIm)/(ImageHeight-1);
unsigned MaxIterations = 4096;
for(unsigned y=0; y<ImageHeight; ++y) {
double c_im = MaxIm - y*Im_factor;
for(unsigned x=0; x<ImageWidth; ++x) {
double c_re = MinRe + x*Re_factor;
double Z_re = c_re, Z_im = c_im;
bool isInside = true;
int niterations=0;
for(unsigned n=0; n<MaxIterations; ++n) {
double Z_re2 = Z_re*Z_re, Z_im2 = Z_im*Z_im;
if(Z_re2 + Z_im2 > 4) {
niterations = n;
isInside = false;
break;
}
Z_im = 2*Z_re*Z_im + c_im;
Z_re = Z_re2 - Z_im2 + c_re;
}
if(isInside==false) uLCD.pixel(x,y,((niterations & 0xFC0)<<14)+((niterations & 0x38)<<9)+((niterations & 0x07)<<5) );
}
}
}

4D Systems 128 by 128 Smart Color LCD uLCD-144-G2