#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <avr/pgmspace.h>
// For the Adafruit shield, these are the default.
#define TFT_CLK 13
#define TFT_MISO 12
#define TFT_MOSI 11
#define TFT_DC 9
#define TFT_CS 10
#define TFT_RST 8
#define WHITE 0xF00F
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
const unsigned char title []PROGMEM ={0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xf0, 0xff, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xc0, 0x3f, 0x00, 0x00, 0x00,
0x00, 0x1f, 0x80, 0x1f, 0x80, 0x00, 0x00,
0x00, 0x1f, 0x00, 0x0f, 0x80, 0x00, 0x00,
0x00, 0x3f, 0x00, 0x0f, 0xc0, 0x00, 0x00,
0x00, 0x3e, 0x00, 0x07, 0xc0, 0x00, 0x00,
0x00, 0x3e, 0x00, 0x07, 0xc0, 0x00, 0x00,
0x00, 0x3e, 0x00, 0x07, 0xc0, 0x00, 0x00,
0x00, 0x3e, 0x00, 0x07, 0xc0, 0x00, 0x00,
0x00, 0x3e, 0x00, 0x07, 0xc0, 0x00, 0x00,
0x00, 0x3f, 0x00, 0x0f, 0xc0, 0x00, 0x00,
0x00, 0x1f, 0x00, 0x0f, 0x80, 0x00, 0x00,
0x00, 0x1f, 0x80, 0x1f, 0x80, 0x00, 0x00,
0x00, 0x0f, 0xc0, 0x3f, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xe0, 0x7f, 0x00, 0x00, 0x00,
0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x07, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0xff, 0xef, 0x83, 0xfc, 0x00, 0x00,
0x00, 0xff, 0x8f, 0x80, 0x00, 0x00, 0x00,
0x00, 0xfe, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x70, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00};
void drawBitmap(int16_t x, int16_t y,const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color) {
int16_t i, j, byteWidth = (w + 7) / 8;
uint8_t byte;
for(j=0; j<h; j++) {
for(i=0; i<w; i++) {
if(i & 7) byte <<= 1;
else byte = pgm_read_byte(bitmap + j * byteWidth + i / 8);
if(byte & 0x80) tft.drawPixel(x+i, y+j, color);
}
}
}
void setup()
{
tft.begin();
}
void loop()
{
tft.setCursor(80, 0);
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2);
tft.println("My Bitmap");
drawBitmap(100, 100, title, 50, 50, WHITE);
}