Demo for the Adafruit_SHARP_Memory_Display.
Dependencies: Adafruit_SHARP_Memory_Display BLE_API mbed nRF51822
Port of the "sharpmemtest" from Adafruit. the original file is available here: https://github.com/adafruit/Adafruit_SHARP_Memory_Display/tree/master/examples/sharpmemtest
main.cpp
- Committer:
- marcpl
- Date:
- 2015-08-30
- Revision:
- 4:c03523434e65
- Parent:
- 3:3a1d18ae2319
File content as of revision 4:c03523434e65:
/********************************************************************* This is an example sketch for our Monochrome SHARP Memory Displays Pick one up today in the adafruit shop! ------> http://www.adafruit.com/products/1393 These displays use SPI to communicate, 3 pins are required to interface Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, check license.txt for more information All text above, and the splash screen must be included in any redistribution *********************************************************************/ /* * Modified by Marc PLOUHINEC 23/06/2015 for use in mbed */ #include <algorithm> #include "mbed.h" #include "Adafruit_SharpMem.h" // any pins can be used #define ENABLE p16 #define CS p15 #define MOSI p14 #define MISO p17 #define SCLK p13 Adafruit_SharpMem display(ENABLE, CS, MOSI, MISO, SCLK); // Functions defined after main() void testdrawchar(void); void testdrawcircle(void); void testfillrect(void); void testdrawtriangle(void); void testfilltriangle(void); void testdrawroundrect(void); void testfillroundrect(void); void testdrawrect(void); void testdrawline(); int main() { // start & clear the display display.begin(); display.setRotation(0); display.enableDisplay(); display.clearDisplay(); // draw a single pixel display.drawPixel(10, 10, BLACK); display.refresh(); wait_ms(500); display.clearDisplay(); // draw many lines testdrawline(); wait_ms(500); display.clearDisplay(); // draw rectangles testdrawrect(); wait_ms(500); display.clearDisplay(); // draw multiple rectangles testfillrect(); display.refresh(); wait_ms(500); display.clearDisplay(); // draw a circle, 10 pixel radius display.fillCircle(display.width()/2, display.height()/2, 10, BLACK); display.refresh(); wait_ms(500); display.clearDisplay(); testdrawroundrect(); display.refresh(); wait_ms(500); display.clearDisplay(); testfillroundrect(); display.refresh(); wait_ms(500); display.clearDisplay(); testdrawtriangle(); display.refresh(); wait_ms(500); display.clearDisplay(); testfilltriangle(); display.refresh(); wait_ms(500); display.clearDisplay(); // draw the first ~12 characters in the font testdrawchar(); display.refresh(); wait_ms(2000); display.clearDisplay(); // text display tests display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.printf("Hello, world!\n"); display.setTextColor(WHITE, BLACK); // 'inverted' text display.printf("%d\n", 3.141592); display.setTextSize(2); display.setTextColor(BLACK); display.printf("0x%08x\n"); display.refresh(); wait_ms(2000); while(1) { // Screen must be refreshed at least once per second display.refresh(); wait_ms(500); } } /// void testdrawchar(void) { display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); for (uint8_t i=0; i < 168; i++) { if (i == '\n') continue; display.putc(i); //if ((i > 0) && (i % 14 == 0)) //display.println(); } display.refresh(); } void testdrawcircle(void) { for (uint8_t i=0; i<display.height(); i+=2) { display.drawCircle(display.width()/2-5, display.height()/2-5, i, BLACK); display.refresh(); } } void testfillrect(void) { uint8_t color = 1; for (uint8_t i=0; i<display.height()/2; i+=3) { // alternate colors display.fillRect(i, i, display.width()-i*2, display.height()-i*2, color%2); display.refresh(); color++; } } void testdrawtriangle(void) { for (uint16_t i=0; i<min(display.width(),display.height())/2; i+=5) { display.drawTriangle(display.width()/2, display.height()/2-i, display.width()/2-i, display.height()/2+i, display.width()/2+i, display.height()/2+i, BLACK); display.refresh(); } } void testfilltriangle(void) { uint8_t color = BLACK; for (int16_t i=min(display.width(),display.height())/2; i>0; i-=5) { display.fillTriangle(display.width()/2, display.height()/2-i, display.width()/2-i, display.height()/2+i, display.width()/2+i, display.height()/2+i, color); if (color == WHITE) color = BLACK; else color = WHITE; display.refresh(); } } void testdrawroundrect(void) { for (uint8_t i=0; i<display.height()/4; i+=2) { display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, BLACK); display.refresh(); } } void testfillroundrect(void) { uint8_t color = BLACK; for (uint8_t i=0; i<display.height()/4; i+=2) { display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, color); if (color == WHITE) color = BLACK; else color = WHITE; display.refresh(); } } void testdrawrect(void) { for (uint8_t i=0; i<display.height()/2; i+=2) { display.drawRect(i, i, display.width()-2*i, display.height()-2*i, BLACK); display.refresh(); } } void testdrawline() { for (uint8_t i=0; i<display.width(); i+=4) { display.drawLine(0, 0, i, display.height()-1, BLACK); display.refresh(); } for (uint8_t i=0; i<display.height(); i+=4) { display.drawLine(0, 0, display.width()-1, i, BLACK); display.refresh(); } wait_ms(250); display.clearDisplay(); for (uint8_t i=0; i<display.width(); i+=4) { display.drawLine(0, display.height()-1, i, 0, BLACK); display.refresh(); } for (int8_t i=display.height()-1; i>=0; i-=4) { display.drawLine(0, display.height()-1, display.width()-1, i, BLACK); display.refresh(); } wait_ms(250); display.clearDisplay(); for (int8_t i=display.width()-1; i>=0; i-=4) { display.drawLine(display.width()-1, display.height()-1, i, 0, BLACK); display.refresh(); } for (int8_t i=display.height()-1; i>=0; i-=4) { display.drawLine(display.width()-1, display.height()-1, 0, i, BLACK); display.refresh(); } wait_ms(250); display.clearDisplay(); for (uint8_t i=0; i<display.height(); i+=4) { display.drawLine(display.width()-1, 0, 0, i, BLACK); display.refresh(); } for (uint8_t i=0; i<display.width(); i+=4) { display.drawLine(display.width()-1, 0, i, display.height()-1, BLACK); display.refresh(); } wait_ms(250); }