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.
Fork of Nucleo_rtos by
main.cpp
- Committer:
- codeman
- Date:
- 2016-06-23
- Revision:
- 77:cd59ac40b3be
- Parent:
- 73:d3b295249699
File content as of revision 77:cd59ac40b3be:
#include "mbed.h"
#include "ezLCD405.h"
//DigitalOut led(LED1);
InterruptIn button(USER_BUTTON);
Serial pc(SERIAL_TX, SERIAL_RX);
uint8_t counter;
uint32_t button_pressed;
volatile uint32_t tick;
//Thread *thread2;
uint8_t buttonPressed;
uint8_t buttState[10];
//ezLCD4 lcd(PB_6,PA_10); //tx,rx
ezLCD4 lcd(PG_14,PG_9); //tx,rx
//ezLCD4 lcd2(PA_11, PA_12);
const char *textBoxData[3][13];
char temp[10];
uint16_t count, ocount;
uint16_t ox, oy;
uint32_t countdown;
void drawScreen( void );
void button_press(void)
{
pc.printf("Button Press\n");
lcd.showSettings();
// lcd.printString(12,14,3, 0x0001, "mbed RTOS ezLCD405 Demo");
// lcd.printString(10,12,3,WHITE,"mbed RTOS ezLCD405 Demo");
//lcd.boxHFill(319,234);
// thread2->signal_set(0x1);
}
void led_thread(void const *argument)
{
while (true) {
// led = !led;
// Thread::wait(100);
}
}
void button_thread(void const *argument)
{
while (true) {
// Thread::signal_wait(100);
button_pressed++;
}
}
void drawFrame(uint16_t sx , uint16_t sy, uint16_t ex , uint16_t ey , uint16_t topColor, uint16_t bottomColor, uint8_t radius)
{
lcd.setXY(sx, sy);
lcd.setColor(topColor);
lcd.setXY(sx+radius, sy+radius);
lcd.arc(radius,270,0);
lcd.setXY(sx+radius, sy);
lcd.lineTo(ex-radius,sy); //top
lcd.setXY(sx, sy+radius);
lcd.lineTo(sx,ey-radius); //left
lcd.setXY(sx+radius, ey-radius);
lcd.arc(radius,180,270);
lcd.setXY(sx+radius, ey);
lcd.setColor(bottomColor);
lcd.lineTo(ex-radius,ey); //bottom
lcd.setXY(ex-radius, ey-radius);
lcd.arc(radius,90,180);
lcd.setXY(ex, ey-radius);
lcd.lineTo(ex,sy+radius); //right
lcd.setXY(ex-radius, sy+radius);
lcd.arc(radius,0,90);
}
void drawScreen( void )
{
lcd.setLayer(1);
lcd.setTouchProtocol( TOUCH_EZ_BUTTON );
lcd.createTextBox( 250 , 75, 500, 350, BLACK, GRAY, WHITE, 1, 6, " TextBox Test");
lcd.setFont(4);
lcd.printString(75,5,2, YELLOW, "mbed ezLCD-405", FONT_NORTH, OUTLINE, WHITE );
count =0 ;
ocount=0;
lcd.status=0;
lcd.createButton( 0, 1, 0 , 1, 1, 10, 60, 200, 50, 0);
lcd.createButton( 1, 1, 2 , 3, 1, 10, 120, 200, 50, 0);
lcd.createButton( 2, 1, 4 , 5, 1, 10, 180, 200, 50, 0);
lcd.createButton( 3, 1, 6 , 7, 1, 10, 240, 200, 50, 0);
// lcd.createButton( 4, 1, 9 , 10, 1, 10, 300, 200, 50, 0);
}
void specScreen( void )
{
lcd.buttonsDeleteAll();
lcd.cls(BLACK);
lcd.createButton( 10, 1, 10 , 11, 10, 10, 420, 200, 50, 0);
lcd.printString(0,40,6,WHITE,"STM32F429 Cortex-4 Processor", FONT_NORTH, false, 0 );
lcd.printString(0,70,6,WHITE,"5.6\" 640x480 16-bit Color TFT Display", FONT_NORTH, false, 0 );
lcd.printString(0,100,6,WHITE,"Resistive or Capacitive Touch", FONT_NORTH, false, 0 );
lcd.printString(0,130,6,WHITE,"SD Card Socket QuadBit SDIO", FONT_NORTH, false, 0 );
lcd.printString(0,160,6,WHITE,"Battery Backed RTC", FONT_NORTH, false, 0 );
lcd.printString(0,190,6,WHITE,"Expansion Header With I2C/SPI/UART", FONT_NORTH, false, 0 );
wait(.5);
while(lcd.pollTouch(1, 0x00)!=0x8a);
lcd.buttonsDeleteAll();
lcd.cls(BLACK);
buttState[2]=1;
drawScreen();
}
void fontDemo( void )
{
lcd.buttonsDeleteAll();
lcd.cls(BLACK);
lcd.createButton( 10, 1, 10 , 11, 10, 10, 420, 200, 50, 0);
lcd.printString(10,12,6,RED,"ezLCD-405 Font Demo", FONT_NORTH, OUTLINE, WHITE );
lcd.printString(10,60,1,BLUE,"ezLCD-405 ", FONT_NORTH, SHADOW, WHITE );
lcd.printString(10,100,2,BLUE,"ezLCD-405 ", FONT_NORTH, false, 0 );
lcd.printString(10,150,3,BLUE,"ezLCD-405 ", FONT_NORTH, false, 0 );
lcd.printString(10,200,4,BLUE,"ezLCD-405 ", FONT_NORTH, false, 0 );
lcd.printString(10,250,5,BLUE,"ezLCD-405 ", FONT_NORTH, false, 0 );
lcd.printString(10,300,6,BLUE,"ezLCD-405 ", FONT_NORTH, false, 0 );
lcd.printString(10,350,7,BLUE,"ezLCD-405 ", FONT_NORTH, false, 0 );
lcd.printString(10,400,8,BLUE,"ezLCD-405 ", FONT_NORTH, false, 0 );
// Thread::wait(5000);
wait(1);
while(lcd.pollTouch(1, 0x00)!=0x8a);
lcd.buttonsDeleteAll();
lcd.cls(BLACK);
buttState[1]=1;
drawScreen();
}
void imageDemo( void )
{
lcd.buttonsDeleteAll();
lcd.cls(BLACK);
lcd.printString(13,15,2, 0x0001, "ezLCD-405 Image Demo", FONT_NORTH, false, 0 );
lcd.printString(10,12,2,WHITE,"ezLCD-405 Image Demo", FONT_NORTH, false, 0);
lcd.setXY(10,240);
lcd.putSfIcon(5);
// Thread::wait(2000);
// lcd.cls(BLACK);
lcd.setXY(10,240);
lcd.putSfIcon(6);
// Thread::wait(2000);
// lcd.cls(BLACK);
lcd.setXY(10,240);
lcd.putSfIcon(7);
// Thread::wait(2000);
lcd.cls(BLACK);
drawScreen();
}
int main()
{
textBoxData[0][0] = "The ezLCD-405" ;
textBoxData[1][0] = " " ;
textBoxData[2][0] = "0123456789012" ;
button.mode(PullUp);
button.fall(&button_press);
pc.baud(115200);
lcd.ezLCD405Init(SPI_IF);
pc.printf("Start of Main\n");
pc.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);
lcd.setLayerVisible(0,1);
lcd.setLayerVisible(1,1);
lcd.setLayer(1);
lcd.setColorKey(0x0000);
while(lcd.ping(100) !=1);
lcd.lightOFF();
lcd.exmode();
lcd.cls(BLACK);
lcd.setLayer(0);
lcd.setXY(0,0);
lcd.SDPutIcon("ezlcd405.bmp");
lcd.textDirection( FONT_NORTH );
lcd.lightON();
// thread2 = new Thread(button_thread);
buttState[0]=1;
buttState[1]=1;
buttState[2]=1;
buttState[3]=1;
buttState[4]=1;
buttState[5]=1;
drawScreen();
while(1) {
//wait(.05);
buttonPressed = lcd.pollTouch(1, 0x00);
if((buttonPressed & 0x40) == 0x40) {
if(buttState[buttonPressed & 0x0f] == 1) {
lcd.buttonState(buttonPressed & 0x0f, 2);
buttState[buttonPressed & 0x0f] = 2;
}
}
if((buttonPressed & 0x80) == 0x80) {
if(buttState[buttonPressed & 0x0f] == 2) {
lcd.buttonState(buttonPressed & 0x0f, 1);
buttState[buttonPressed & 0x0f] = 1;
}
}
if(buttState[2]==2) {
specScreen();
}
if(buttState[1]==2) {
fontDemo();
}
if(buttState[3]==2) {
lcd.showSettings();
wait(5);
drawScreen();
}
lcd.setFont(3);
lcd.setXY(20,300);
count++;
lcd.setColor(WHITE);
sprintf(temp, "%d", count);
lcd.printString(temp);
//wait(.05);
lcd.setXY(20,300);
lcd.setColor(BLACK);
lcd.boxFill(200,400);
wait(.02);
// lcd.printString(temp);
}
drawFrame(100 , 300, 300 , 400 , WHITE, GRAY, 5);
drawFrame(100 +5 , 300+5 , 300-5 , 400-5 , GRAY, WHITE, 5);
ocount=0;
count=0;
//lcd.setBgColorH(BLUE);
while(1) {
if(lcd.status == 1)
drawScreen();
//pc.printf("%d %d \n",lcd.x, lcd.y);
sprintf(temp,"%d",count);
if(lcd.button==0 && lcd.bState==1) {
fontDemo();
}
if(lcd.button==1 && lcd.bState==1) {
imageDemo();
}
if(lcd.button==2 && lcd.bState==1) {
// lcd.buttonState(lcd.button, 2);
// lcd.buttonsDeleteAll();
// lcd.showSettings();
// Thread::wait(5000);
// drawScreen();
}
if(lcd.button==3 && lcd.bState==1) {
// lcd.buttonState(lcd.button, 2);
//specScreen();
}
if(count != ocount) {
lcd.setXY(0,0);
lcd.SDPutIcon("100_Single_Area.ezp");
//lcd.printString(400, 100, 1, RED, temp);
// lcd.printString(400, 200, 1, RED, temp);
// lcd.printString(400, 300, 1, GREEN, temp);
// lcd.printString(400, 400, 1, GREEN, temp);
ocount=count;
}
countdown--;
if(countdown == 0) {
lcd.setXY(0,0);
lcd.SDPutIcon("100_Single_Area_return.ezp");
// lcd.printString(400, 100, 1, BLACK, temp);
// lcd.printString(400, 200, 1, BLACK, temp);
// lcd.printString(400, 300, 1, BLACK, temp);
// lcd.printString(400, 400, 1, BLACK, temp);
count++;
}
}
button_pressed = 0;
button.fall(&button_press);
while (true) {
// Thread::wait(6000);
//lcd.printString("hello");
lcd.direct(PRINT_STRING);
printf("During the last 6 seconds, the Button was pressed %d times\n", button_pressed);
lcd.direct(0x00);
fflush(stdout);
button_pressed = 0;
}
}
