Created
December 27, 2018 19:02
-
-
Save davedarko/1d5acfdebfd321a91f1a18b17ba59208 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Wire.h> | |
#include "SH1106Wire.h" | |
#include <Adafruit_NeoPixel.h> | |
#define PIN 0 | |
Adafruit_NeoPixel strip = Adafruit_NeoPixel(2, PIN, NEO_GRB + NEO_KHZ800); | |
int brightness = 4; | |
/* | |
default arduino esp8266 pinout for I2C | |
4 SDA | |
5 SCL | |
*/ | |
//create display(Adr, SDA-pin, SCL-pin) | |
SH1106Wire display(0x3C, 4, 5); | |
boolean toggle = false; | |
void drawLines() { | |
for (int16_t i=0; i<display.getWidth(); i+=4) { | |
display.drawLine(0, 0, i, display.getHeight()-1); | |
display.display(); | |
delay(10); | |
} | |
for (int16_t i=0; i<display.getHeight(); i+=4) { | |
display.drawLine(0, 0, display.getWidth()-1, i); | |
display.display(); | |
delay(10); | |
} | |
delay(250); | |
display.clear(); | |
for (int16_t i=0; i<display.getWidth(); i+=4) { | |
display.drawLine(0, display.getHeight()-1, i, 0); | |
display.display(); | |
delay(10); | |
} | |
for (int16_t i=display.getHeight()-1; i>=0; i-=4) { | |
display.drawLine(0, display.getHeight()-1, display.getWidth()-1, i); | |
display.display(); | |
delay(10); | |
} | |
delay(250); | |
display.clear(); | |
for (int16_t i=display.getWidth()-1; i>=0; i-=4) { | |
display.drawLine(display.getWidth()-1, display.getHeight()-1, i, 0); | |
display.display(); | |
delay(10); | |
} | |
for (int16_t i=display.getHeight()-1; i>=0; i-=4) { | |
display.drawLine(display.getWidth()-1, display.getHeight()-1, 0, i); | |
display.display(); | |
delay(10); | |
} | |
delay(250); | |
display.clear(); | |
for (int16_t i=0; i<display.getHeight(); i+=4) { | |
display.drawLine(display.getWidth()-1, 0, 0, i); | |
display.display(); | |
delay(10); | |
} | |
for (int16_t i=0; i<display.getWidth(); i+=4) { | |
display.drawLine(display.getWidth()-1, 0, i, display.getHeight()-1); | |
display.display(); | |
delay(10); | |
} | |
delay(250); | |
} | |
// Adapted from Adafruit_SSD1306 | |
void drawRect(void) { | |
for (int16_t i=0; i<display.getHeight()/2; i+=2) { | |
display.drawRect(i, i, display.getWidth()-2*i, display.getHeight()-2*i); | |
display.display(); | |
delay(10); | |
} | |
} | |
// Adapted from Adafruit_SSD1306 | |
void fillRect(void) { | |
uint8_t color = 1; | |
for (int16_t i=0; i<display.getHeight()/2; i+=3) { | |
display.setColor((color % 2 == 0) ? BLACK : WHITE); // alternate colors | |
display.fillRect(i, i, display.getWidth() - i*2, display.getHeight() - i*2); | |
display.display(); | |
delay(10); | |
color++; | |
} | |
// Reset back to WHITE | |
display.setColor(WHITE); | |
} | |
// Adapted from Adafruit_SSD1306 | |
void drawCircle(void) { | |
for (int16_t i=0; i<display.getHeight(); i+=2) { | |
display.drawCircle(display.getWidth()/2, display.getHeight()/2, i); | |
display.display(); | |
delay(10); | |
} | |
delay(1000); | |
display.clear(); | |
// This will draw the part of the circel in quadrant 1 | |
// Quadrants are numberd like this: | |
// 0010 | 0001 | |
// ------|----- | |
// 0100 | 1000 | |
// | |
display.drawCircleQuads(display.getWidth()/2, display.getHeight()/2, display.getHeight()/4, 0b00000001); | |
display.display(); | |
delay(200); | |
display.drawCircleQuads(display.getWidth()/2, display.getHeight()/2, display.getHeight()/4, 0b00000011); | |
display.display(); | |
delay(200); | |
display.drawCircleQuads(display.getWidth()/2, display.getHeight()/2, display.getHeight()/4, 0b00000111); | |
display.display(); | |
delay(200); | |
display.drawCircleQuads(display.getWidth()/2, display.getHeight()/2, display.getHeight()/4, 0b00001111); | |
display.display(); | |
} | |
void printBuffer(void) { | |
// Initialize the log buffer | |
// allocate memory to store 8 lines of text and 30 chars per line. | |
display.setLogBuffer(5, 30); | |
// Some test data | |
const char* test[] = { | |
"Hello", | |
"World" , | |
"----", | |
"Show off", | |
"how", | |
"the log buffer", | |
"is", | |
"working.", | |
"Even", | |
"scrolling is", | |
"working" | |
}; | |
for (uint8_t i = 0; i < 11; i++) { | |
display.clear(); | |
// Print to the screen | |
display.println(test[i]); | |
// Draw it to the internal screen buffer | |
display.drawLogBuffer(0, 0); | |
// Display it on the screen | |
display.display(); | |
delay(500); | |
} | |
} | |
void setup() | |
{ | |
Serial.begin(115200); | |
Wire.begin(); | |
strip.begin(); | |
strip.show(); // Initialize all pixels to 'off' | |
display.init(); | |
display.flipScreenVertically(); | |
display.setContrast(255); | |
drawLines(); | |
delay(1000); | |
display.clear(); | |
drawRect(); | |
delay(1000); | |
display.clear(); | |
fillRect(); | |
delay(1000); | |
display.clear(); | |
drawCircle(); | |
delay(1000); | |
display.clear(); | |
printBuffer(); | |
delay(1000); | |
display.clear(); | |
} | |
void loop() { | |
// Some example procedures showing how to display to the pixels: | |
// Wire.requestFrom(0x11, 1); | |
// byte a = Wire.read(); // receive a byte as character | |
// | |
// Wire.requestFrom(0x11, 1); | |
// byte b = Wire.read(); // receive a byte as character | |
if (toggle) | |
{ | |
// strip.setPixelColor(0, brightness, 0, 0); | |
// strip.setPixelColor(1, 0, brightness, 0); | |
strip.setPixelColor(0, 0, 132/8, 176/8); | |
strip.setPixelColor(1, 0, 163/8, 86/8); | |
} | |
else | |
{ | |
strip.setPixelColor(0, 0, 163/8, 86/8); | |
strip.setPixelColor(1, 0, 132/8, 176/8); | |
} | |
delay(500); | |
toggle = !toggle; | |
// if (a > 90) | |
// { | |
// strip.setPixelColor(0, brightness, 0, 0); | |
// strip.setPixelColor(1, brightness, 0, 0); | |
// } | |
// if (b > 90) | |
// { | |
// strip.setPixelColor(0, 0, 0, brightness); | |
// strip.setPixelColor(1, 0, 0, brightness); | |
// } | |
// | |
// Serial.print(a, DEC); | |
// Serial.print(" - "); | |
// Serial.println(b, DEC); | |
// delay(200); | |
strip.show(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment