
Mochu Yao explorer game
Dependencies: mbed
Diff: N5110/N5110.h
- Revision:
- 1:ed745421d8c4
- Parent:
- 0:39a85181b766
--- a/N5110/N5110.h Wed Apr 08 08:33:48 2020 +0000 +++ b/N5110/N5110.h Wed Apr 15 08:17:18 2020 +0000 @@ -3,30 +3,6 @@ #include "mbed.h" -// Command Bytes - taken from Chris Yan's library -// More information can be found in the display datasheet -// H = 0 - Basic instructions -#define CMD_DC_CLEAR_DISPLAY 0x08 -#define CMD_DC_NORMAL_MODE 0x0C -#define CMD_DC_FILL_DISPLAY 0x09 -#define CMD_DC_INVERT_VIDEO 0x0D -#define CMD_FS_HORIZONTAL_MODE 0x00 -#define CMD_FS_VERTICAL_MODE 0x02 -#define CMD_FS_BASIC_MODE 0x00 -#define CMD_FS_EXTENDED_MODE 0x01 -#define CMD_FS_ACTIVE_MODE 0x00 -#define CMD_FS_POWER_DOWN_MODE 0x04 -// H = 1 - Extended instructions -#define CMD_TC_TEMP_0 0x04 -#define CMD_TC_TEMP_1 0x05 -#define CMD_TC_TEMP_2 0x06 -#define CMD_TC_TEMP_3 0x07 -#define CMD_BI_MUX_24 0x15 -#define CMD_BI_MUX_48 0x13 -#define CMD_BI_MUX_100 0x10 -#define CMD_VOP_6V06 0xB2 -#define CMD_VOP_7V38 0xC8 - // number of pixels on display #define WIDTH 84 #define HEIGHT 48 @@ -57,14 +33,31 @@ #include "mbed.h" #include "N5110.h" +// rows,cols +int sprite[8][5] = { + { 0,0,1,0,0 }, + { 0,1,1,1,0 }, + { 0,0,1,0,0 }, + { 0,1,1,1,0 }, + { 1,1,1,1,1 }, + { 1,1,1,1,1 }, + { 1,1,0,1,1 }, + { 1,1,0,1,1 }, +}; + // VCC,SCE,RST,D/C,MOSI,SCLK,LED //N5110 lcd(p7,p8,p9,p10,p11,p13,p21); // LPC1768 - pwr from GPIO -N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3 +N5110 lcd(p8,p9,p10,p11,p13,p21); // LPC1768 - powered from +3V3 - JP1 in 2/3 position +//N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3 int main() { // first need to initialise display lcd.init(); + + // change set contrast in range 0.0 to 1.0 + // 0.4 appears to be a good starting point + lcd.setContrast(0.4); while(1) { @@ -72,6 +65,12 @@ lcd.normalMode(); // normal colour mode lcd.setBrightness(0.5); // put LED backlight on 50% + lcd.clear(); + // x origin, y origin, rows, cols, sprite + lcd.drawSprite(20,6,8,5,(int *)sprite); + lcd.refresh(); + wait(5.0); + lcd.clear(); // clear buffer at start of every loop // can directly print strings at specified co-ordinates (must be less than 84 pixels to fit on display) lcd.printString("Hello, World!",0,0); @@ -95,7 +94,7 @@ // draw a line across the display at y = 40 pixels (origin top-left) for (int i = 0; i < WIDTH; i++) { - lcd.setPixel(i,40); + lcd.setPixel(i,40,true); } // need to refresh display after setting pixels or writing strings lcd.refresh(); @@ -103,23 +102,21 @@ // can check status of pixel using getPixel(x,y); lcd.clear(); // clear buffer - lcd.setPixel(2,2); // set random pixel in buffer + lcd.setPixel(2,2,true); // set random pixel in buffer lcd.refresh(); wait(1.0); int pixel_to_test = lcd.getPixel(2,2); - printf("2,2 Pixel value = %i\n",pixel_to_test); - if ( pixel_to_test ) { lcd.printString("2,2 is set",0,4); } // this one shouldn't be set + lcd.setPixel(3,3,false); // clear random pixel in buffer + lcd.refresh(); pixel_to_test = lcd.getPixel(3,3); - printf("3,3 Pixel value = %i\n",pixel_to_test); - if ( pixel_to_test == 0 ) { lcd.printString("3,3 is clear",0,5); } @@ -169,12 +166,14 @@ // origin x,y,width,height,type lcd.drawRect(10,10,50,30,FILL_BLACK); // filled black rectangle lcd.drawRect(15,15,20,10,FILL_WHITE); // filled white rectange (no outline) - lcd.drawRect(2,2,70,40, FILL_TRANSPARENT); // transparent, just outline + lcd.drawRect(2,2,70,40,FILL_TRANSPARENT); // transparent, just outline lcd.refresh(); // refresh after drawing shapes wait(5.0); + } } + @endcode */ class N5110 @@ -253,6 +252,11 @@ */ void clear(); + /** Set screen constrast + * @param constrast - float in range 0.0 to 1.0 (0.40 to 0.60 is usually a good value) + */ + void setContrast(float contrast); + /** Turn on normal video mode (default) * Black on white */ @@ -291,23 +295,33 @@ unsigned int const x, unsigned int const y); - /** Set a Pixel + /** + * @brief Set a Pixel * - * This function sets a pixel in the screen buffer. - * @param x - the x co-ordinate of the pixel (0 to 83) - * @param y - the y co-ordinate of the pixel (0 to 47) + * @param x The x co-ordinate of the pixel (0 to 83) + * @param y The y co-ordinate of the pixel (0 to 47) + * @param state The state of the pixel [true=black (default), false=white] + * + * @details This function sets the state of a pixel in the screen buffer. + * The third parameter can be omitted, */ void setPixel(unsigned int const x, - unsigned int const y); + unsigned int const y, + bool const state = true); - /** Clear a Pixel + /** + * @brief Clear a Pixel * - * This function clears pixel in the screen buffer * @param x - the x co-ordinate of the pixel (0 to 83) * @param y - the y co-ordinate of the pixel (0 to 47) + * + * @details This function clears pixel in the screen buffer + * + * @deprecated Use setPixel(x, y, false) instead */ void clearPixel(unsigned int const x, - unsigned int const y); + unsigned int const y) + __attribute__((deprecated("Use setPixel(x,y,false) instead"))); /** Get a Pixel * @@ -388,6 +402,22 @@ unsigned int const height, FillType const fill); + /** Draw Sprite + * + * This function draws a sprite as defined in a 2D array + * @param x0 - x-coordinate of origin (top-left) + * @param y0 - y-coordinate of origin (top-left) + * @param nrows - number of rows in sprite + * @param ncols - number of columns in sprite + * @param sprite - 2D array representing the sprite + */ + void drawSprite(int x0, + int y0, + int nrows, + int ncols, + int *sprite); + + private: // methods void setXYAddress(unsigned int const x, @@ -398,6 +428,8 @@ void clearRAM(); void sendCommand(unsigned char command); void sendData(unsigned char data); + void setTempCoefficient(char tc); // 0 to 3 + void setBias(char bias); // 0 to 7 }; const unsigned char font5x7[480] = {