Dependancies
Pre-requisites
Buy the components
sharp-display.ino
#include <Adafruit_GFX.h>
#include <Adafruit_SharpMem.h>
// pins of Adafruit nRF52 Monochrome SHARP display 168x144 pixels
#define SHARP_SCK 12
#define SHARP_MOSI 13
#define SHARP_SS 7
Adafruit_SharpMem display(SHARP_SCK, SHARP_MOSI, SHARP_SS, 144, 168);
#define BLACK 0
#define WHITE 1
int minorHalfSize;
void setup(void)
{
Serial.begin(9600);
Serial.println("Hello!");
display.begin();
display.clearDisplay();
minorHalfSize = min(display.width(), display.height()) / 2;
display.drawPixel(10, 10, BLACK);
display.refresh();
delay(500);
display.clearDisplay();
testdrawline();
delay(500);
display.clearDisplay();
testdrawrect();
delay(500);
display.clearDisplay();
testfillrect();
display.refresh();
delay(500);
display.clearDisplay();
display.fillCircle(display.width()/2, display.height()/2, 10, BLACK);
display.refresh();
delay(500);
display.clearDisplay();
testdrawroundrect();
display.refresh();
delay(500);
display.clearDisplay();
testfillroundrect();
display.refresh();
delay(500);
display.clearDisplay();
testdrawtriangle();
display.refresh();
delay(500);
display.clearDisplay();
testfilltriangle();
display.refresh();
delay(500);
display.clearDisplay();
testdrawchar();
display.refresh();
for(int i=0; i<4; i++) {
display.refresh();
delay(1000);
}
}
void loop(void)
{
for(int i=0; i<4; i++) {
display.setRotation(i);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Hello, world!");
display.setTextColor(WHITE, BLACK);
display.println(3.141592);
display.setTextSize(2);
display.setTextColor(BLACK);
display.print("0x"); display.println(0xDEADBEEF, HEX);
for(int j=0; j<4; j++) {
display.refresh();
delay(1000); // 1/2 sec delay
}
}
}
void testdrawline() {
for (int i=0; i<display.width(); i+=4) {
display.drawLine(0, 0, i, display.height()-1, BLACK);
display.refresh();
}
for (int i=0; i<display.height(); i+=4) {
display.drawLine(0, 0, display.width()-1, i, BLACK);
display.refresh();
}
delay(250);
display.clearDisplay();
for (int i=0; i<display.width(); i+=4) {
display.drawLine(0, display.height()-1, i, 0, BLACK);
display.refresh();
}
for (int i=display.height()-1; i>=0; i-=4) {
display.drawLine(0, display.height()-1, display.width()-1, i, BLACK);
display.refresh();
}
delay(250);
display.clearDisplay();
for (int i=display.width()-1; i>=0; i-=4) {
display.drawLine(display.width()-1, display.height()-1, i, 0, BLACK);
display.refresh();
}
for (int i=display.height()-1; i>=0; i-=4) {
display.drawLine(display.width()-1, display.height()-1, 0, i, BLACK);
display.refresh();
}
delay(250);
display.clearDisplay();
for (int i=0; i<display.height(); i+=4) {
display.drawLine(display.width()-1, 0, 0, i, BLACK);
display.refresh();
}
for (int i=0; i<display.width(); i+=4) {
display.drawLine(display.width()-1, 0, i, display.height()-1, BLACK);
display.refresh();
}
delay(250);
}
void testdrawrect(void) {
for (int i=0; i<minorHalfSize; i+=2) {
display.drawRect(i, i, display.width()-2*i, display.height()-2*i, BLACK);
display.refresh();
}
}
void testfillrect(void) {
uint8_t color = BLACK;
for (int i=0; i<minorHalfSize; i+=3) {
display.fillRect(i, i, display.width()-i*2, display.height()-i*2, color&1);
display.refresh();
color++;
}
}
void testdrawroundrect(void) {
for (int i=0; i<minorHalfSize/2; i+=2) {
display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i, minorHalfSize/2, BLACK);
display.refresh();
}
}
void testfillroundrect(void) {
uint8_t color = BLACK;
for (int i=0; i<minorHalfSize/2; i+=2) {
display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i, minorHalfSize/2, color&1);
display.refresh();
color++;
}
}
void testdrawtriangle(void) {
for (int i=0; i<minorHalfSize; 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 (int i=minorHalfSize; 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 & 1);
display.refresh();
color++;
}
}
void testdrawchar(void) {
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.cp437(true);
for (int i=0; i < 256; i++) {
if (i == '\n') continue;
display.write(i);
}
display.refresh();
}
BOARD?=adafruit:nrf52:feather52832
PORT?=/dev/tty.SLAB_USBtoUART
BUILD=build
# Arduino CLI version 0.14.0 is used.
.PHONY: default lint all flash clean
default: lint all flash clean
lint:
cpplint --extensions=ino --filter=-legal/copyright *.ino
all:
arduino-cli compile --fqbn $(BOARD) --output-dir $(BUILD) ./
flash:
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application $(BUILD)/*.hex dfu-package.zip
adafruit-nrfutil dfu serial --package dfu-package.zip -p $(PORT) -b 115200
clean:
rm -rf build
rm dfu-package.zip
Adafruit Bluefruit nRF52 breakout board and Adafruit SHARP Memory Monochrome Display Breakout 168x144 pixels are used.