Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 1:9bc80b7d947c
- Parent:
- 0:b0151666c710
diff -r b0151666c710 -r 9bc80b7d947c main.cpp --- a/main.cpp Thu Jun 15 15:01:14 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,241 +0,0 @@ -#include "mbed.h" - -#include "SSD1306-Library.h" -#include "FreeSans9pt7b.h" - - -Serial pc(USBTX, USBRX); - -DigitalOut gpo(D0); -DigitalOut led(LED_RED); - -/************************************************** - * graphics_simple_demo - **************************************************/ -void graphics_simple_demo(SSD1306 display) { - display.setRotation(0); - display.clearDisplay(); - display.drawFastVLine(SSD1306_LCDWIDTH/2, 0, SSD1306_LCDHEIGHT, WHITE); - display.display(); - -// wait(1); - display.clearDisplay(); - display.drawFastHLine(0, SSD1306_LCDHEIGHT/2, SSD1306_LCDWIDTH, WHITE); - display.display(); -} - -/************************************************** - * graphics_speed_demo - **************************************************/ -void graphics_speed_demo(SSD1306 display, bool trail) { - display.setRotation(0); - //display.clearDisplay(); - - int32_t y = 0; - int32_t delta_y = 1; - - for (int32_t x=0; x<display.width(); x++) { - display.drawFastVLine(x, 0, y, WHITE); - display.display(); - if (!trail) - display.drawFastVLine(x, 0, y, BLACK); - y += delta_y; - if ((y<0) || (y >= display.height())) - delta_y = -delta_y; - } -} -/************************************************** - * graphics_line_demo - **************************************************/ -void graphics_line_demo(SSD1306 display, int32_t count) { - display.setRotation(0); - display.clearDisplay(); - - //int32_t y = 0; - int32_t delta_y = 3; - int32_t delta_x = 5; - - switch (count % 4) { - ////////////////////////////////////////////////////////////////// - case 0: - for (int32_t x=0; x<display.width(); x+=delta_x) - display.drawFastVLine(x, 0, display.height(), WHITE); - - for (int32_t y=0; y<display.height(); y+=delta_y) - display.drawFastHLine(0, y, display.width(), WHITE); - break; - ////////////////////////////////////////////////////////////////// - case 1: - delta_y = 2; - delta_x = 2; - for (int32_t x=0; x<display.width(); x+=delta_x) - display.drawFastVLine(x, 0, display.height(), WHITE); - - for (int32_t y=0; y<display.height(); y+=delta_y) - display.drawFastHLine(0, y, display.width(), WHITE); - break; - ////////////////////////////////////////////////////////////////// - case 2: - { - int32_t w = display.width(); - int32_t h = display.height(); - delta_y = 4; - delta_x = 4; - for (int32_t x=0; x<w/2; x+=delta_x) { - display.drawLine(w/2, h-x, w-x, h, WHITE); - display.drawLine(w/2, h-x, x, h, WHITE); - } - display.drawLine(w/2, 0, w/2, h, WHITE); - break; - } - ////////////////////////////////////////////////////////////////// - case 3: - { - int32_t w = display.width(); - int32_t h = display.height(); - delta_x = 4; - display.drawLine(0, 0, w, 0, WHITE); - for (int32_t x=0; x<w/2; x+=delta_x) { - display.drawLine(w/2+x, 0, w, 2*(w-2*x)*x/h, WHITE); - display.drawLine(w/2-x, 0, 0, 2*(w-2*x)*x/h, WHITE); - } - break; - } - } - ////////////////////////////////////////////////////////////////// - - display.display(); -} - -/************************************************** - * graphics_demo - **************************************************/ -#define GDLOGO_W 111 -#define GDLOGO_H 48 - - const uint8_t gdLogo[GDLOGO_H/8 * GDLOGO_W] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xC0, 0x00, 0x00, - 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, - 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, - 0x00, 0x01, 0x07, 0x0F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -void drawBitmap(SSD1306 display, int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color) { - - int16_t i, j = (w + 7) / 8; - uint8_t byte; - - for(i=0; i<w; i++ ) { - for(j=0; j<h; j++) { - if(j & 7) - byte >>= 1; - else - byte = bitmap[w*j/8 + i]; - if(byte & 1) - display.drawPixel(x+i, y+j, color); - } - } -} - - -void testdrawchar(SSD1306 display) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i % 21 == 20) - display.write('\n'); - if (i != '\n') - display.write(i); - } - display.display(); -} - -void doText(SSD1306 display, bool both=true) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,both ? 0 : 12); - display.println("Hello, world!"); - if (both) - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println("3.141592"); - if (both) { - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println("DEADBEEF"); - } - display.display(); -} - - -void graphics_demo(SSD1306 display) { - display.setRotation(0); - - display.clearDisplay(); - drawBitmap(display, 8, 16, gdLogo, GDLOGO_W, GDLOGO_H, 2); - //display.startscrolldiagleft(3, 0x0F); - display.display(); - wait(8); - display.stopscroll(); - - display.setFont(NULL); - display.clearDisplay(); - display.fillCircle(display.width()/2, display.height()/2, display.height()/2-1, WHITE); - display.display(); - wait(2); - - display.clearDisplay(); - display.drawFastVLine(0, 16, 32, WHITE); - display.drawFastHLine(0, 16, 32, WHITE); - display.display(); - wait(2); - - display.clearDisplay(); - testdrawchar(display); - wait(4); - - display.clearDisplay(); - doText(display); - wait(4); - - display.clearDisplay(); - display.setFont(&FreeSans9pt7b); - doText(display, false); - wait(2); - - - display.startscrollleft(8, 0x0F); - wait(4); -} - - - -/************************************************** - * main - **************************************************/ -int main() -{ - int32_t count = 0; - pc.baud(115200); - pc.printf("SSD1306 I2C Demo\r\n"); - - SSD1306 display = SSD1306(); - display.begin(true); - - while (true) { - gpo = !gpo; // toggle pin - led = !led; // toggle led - wait(1); - graphics_line_demo(display, count); - //graphics_simple_demo(display); - //graphics_speed_demo(display, (count%3)==0); - //graphics_demo(display); - - pc.printf("Count: %d\r\n", count); - - count++; - } -} \ No newline at end of file