#define OLED_DC 11 #define OLED_CS 12 #define OLED_CLK 10 #define OLED_MOSI 9 #define OLED_RESET 13 //#include //#include //#include //#include #include SSD1306 oled(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 #define LOGO16_GLCD_HEIGHT 16 #define LOGO16_GLCD_WIDTH 16 static unsigned char __attribute__ ((progmem)) logo16_glcd_bmp[]={ 0x30, 0xf0, 0xf0, 0xf0, 0xf0, 0x30, 0xf8, 0xbe, 0x9f, 0xff, 0xf8, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x20, 0x3c, 0x3f, 0x3f, 0x1f, 0x19, 0x1f, 0x7b, 0xfb, 0xfe, 0xfe, 0x07, 0x07, 0x07, 0x03, 0x00, }; void setup() { Serial.begin(9600); // If you want to provide external 7-9V VCC, uncomment next line and comment the one after //oled.ssd1306_init(SSD1306_EXTERNALVCC); // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) oled.ssd1306_init(SSD1306_SWITCHCAPVCC); // init done //oled.display(); // show splashscreen //delay(2000); oled.clear(); // clears the screen and buffer // Fill screen oled.fillrect(0, 0, SSD1306_LCDWIDTH-1, SSD1306_LCDHEIGHT-1, WHITE); oled.display(); delay(2000); // draw a single pixel oled.setpixel(10, 10, WHITE); oled.display(); delay(2000); oled.clear(); // draw many lines testdrawline(); oled.display(); delay(2000); oled.clear(); // draw rectangles testdrawrect(); oled.display(); delay(2000); oled.clear(); // draw multiple rectangles testfillrect(); oled.display(); delay(2000); oled.clear(); // draw mulitple circles testdrawcircle(); oled.display(); delay(2000); oled.clear(); // draw a white circle, 10 pixel radius, at location (32,32) oled.fillcircle(32, 32, 10, WHITE); oled.display(); delay(2000); oled.clear(); // draw the first ~12 characters in the font testdrawchar(); oled.display(); delay(2000); oled.clear(); // draw a string at location (0,0) oled.drawstring(0, 0, "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation"); oled.display(); delay(2000); oled.clear(); // miniature bitmap display oled.drawbitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); oled.display(); // invert the display oled.ssd1306_command(SSD1306_INVERTDISPLAY); delay(1000); oled.ssd1306_command(SSD1306_NORMALDISPLAY); delay(1000); // draw a bitmap icon and 'animate' movement testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); } void loop() { for (uint8_t i=0; i SSD1306_LCDHEIGHT) { icons[f][XPOS] = random() % SSD1306_LCDWIDTH; icons[f][YPOS] = 0; icons[f][DELTAY] = random() % 5 + 1; } } } } void testdrawchar(void) { for (uint8_t i=0; i < 168; i++) { oled.drawchar((i % 21) * 6, i/21, i); } } void testdrawcircle(void) { for (uint8_t i=0; i