Shows how to use a display and the onboard SD Card. Requires a display module with an adapter
Dependencies: DmTftLibrary SDFileSystem mbed
Diff: main.cpp
- Revision:
- 0:ee27d4c12433
- Child:
- 1:64173e1ae223
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue May 20 15:42:31 2014 +0000 @@ -0,0 +1,107 @@ +/********************************************************************************************** + Copyright (c) 2014 DisplayModule. All rights reserved. + + Redistribution and use of this source code, part of this source code or any compiled binary + based on this source code is permitted as long as the above copyright notice and following + disclaimer is retained. + + DISCLAIMER: + THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT. DISPLAYMODULE ASSUMES + NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE. + ********************************************************************************************/ + +/****************************************************************************** + * Includes + *****************************************************************************/ + +#include "mbed.h" + +#include "DmTftHX8353C.h" +#include "DmTftS6D0164.h" +#include "DmTftIli9325.h" +#include "DmTftSsd2119.h" +#include "DmTouch.h" + +#include "DmDrawBmpBase.h" +#include "SDFileSystem.h" + +/****************************************************************************** + * Typedefs and defines + *****************************************************************************/ + +#define log(...) printf(__VA_ARGS__) +//#define log(...) + +#define DM_PIN_SPI_MOSI A0 +#define DM_PIN_SPI_MISO D9 +#define DM_PIN_SPI_SCLK A1 + +#define DM_PIN_CS_TOUCH D8 +#define DM_PIN_CS_TFT A3 +#define DM_PIN_CS_SDCARD D10 + +/****************************************************************************** + * Local variables + *****************************************************************************/ + +DmTftHX8353C tft; /* DM_TFT18_101 */ +//DmTftS6D0164 tft; /* DM_TFT22_102 */ +//DmTftIli9325 tft; /* DM_TFT28_103 and DM_TFT24_104 */ +//DmTftSsd2119 tft; /* DM_TFT35_107 */ + +//DmTouch touch(DmTouch::DM_TFT28_103, false); /* For LPC4088 QuickStart Board */ +//DmTouch touch(DmTouch::DM_TFT28_103); +//DmTouch touch(DmTouch::DM_TFT24_104); +//DmTouch touch(DmTouch::DM_TFT24_104, false); /* For LPC4088 QuickStart Board */ +//DmTouch touch(DmTouch::DM_TFT35_107); + +SDFileSystem sd(DM_PIN_SPI_MOSI, DM_PIN_SPI_MISO, DM_PIN_SPI_SCLK, DM_PIN_CS_SDCARD, "sd"); // mosi,miso,clk,cs + +DigitalInOut csTouch(DM_PIN_CS_TOUCH, PIN_OUTPUT, PullUp, 1); +DigitalInOut csDisplay(DM_PIN_CS_TFT, PIN_OUTPUT, PullUp, 1); +DigitalInOut csSDCard(DM_PIN_CS_SDCARD, PIN_OUTPUT, PullUp, 1); + + +/****************************************************************************** + * Global variables + *****************************************************************************/ + +/****************************************************************************** + * Local functions + *****************************************************************************/ + +static bool sdcardReader(uint32_t userData, uint8_t* data, int offset, int numBytes) { + FILE* fp = (FILE*)userData; + fseek(fp, offset, SEEK_SET); + fread(data, 1, numBytes, fp); + return true; +} + +/****************************************************************************** + * Main + *****************************************************************************/ + +int main() { + DmDrawBmpBase bmp; + const char* fname = "/sd/logop565.bmp"; + + log("init tft \r\n"); + tft.init(); + + while (true) { + log("Drawing from SD card (%s) ...\n", fname); + FILE *fp = fopen(fname, "r"); + if (fp != NULL) { + bmp.drawBitmap(tft, 0, 0, sdcardReader, (uint32_t)fp); + fclose(fp); + } else { + log("failed to open file\n"); + log("Skipping SDCard reading as it is unsupported\n"); + tft.drawStringCentered(0, 0, tft.width(), tft.height(), "SD Card Unsupported!"); + } + + wait_ms(3000); + tft.clearScreen(RED); + wait_ms(1000); + } +}