TeensyView Hookup Guide

Pages
Contributors: MTaylor
Favorited Favorite 5

TeensyView Library Reference

Operating the Library

With Teensyduino and the TeensyView library installed, there's a few things to do in order to start drawing on the screen.

  • Include the TeensyView header file -- #include <TeensyView.h>
  • Create an object in the global space to use the TeensyView, and pass the desired pin numbers to the constructor. -- TeensyView oled(PIN_RESET, PIN_DC, PIN_CS, PIN_SCK, PIN_MOSI);
  • Run the begin() function

Now you're ready to start controlling the screen. To draw a frame,

  • Erase all or part of the screen.
  • Draw new objects
  • Use .display() to send all data to the screen.

This example shows including the library, creating the object, then repeatedly drawing a frame. The drawing commands are kept terse to serve as a good modifiable template. This example is also available from within the Arduino library.

language:c
/******************************************************************************
  Template.ino
  A useful starting place when adding a TeensyView to an existing project.

  Marshall Taylor @ SparkFun Electronics, March 15, 2017
  https://github.com/sparkfun/SparkFun_TeensyView_Arduino_Library

  This example sets up the TeensyView and draws a test frame repeatedly.
  The objects in the frame were selected to give copy-paste examples for various
  common operations without a lot of chaff.  See TeensyView.h for specifics.

  Compatible with:
  Teensy LC
  Teensy 3.1
  Teensy 3.2
  Teensy 3.5
  Teensy 3.6

  Development environment specifics:
  Arduino IDE 1.6.12 w/ Teensyduino 1.31
  Arduino IDE 1.8.1 w/ Teensyduino 1.35
  TeensyView v1.0

  This code is released under the [MIT License](http://opensource.org/licenses/MIT).

  Please review the LICENSE.md file included with this example. If you have any questions
  or concerns with licensing, please contact techsupport@sparkfun.com.

  Distributed as-is; no warranty is given.
******************************************************************************/
#include <TeensyView.h>  // Include the SFE_TeensyView library

///////////////////////////////////
// TeensyView Object Declaration //
///////////////////////////////////
//Standard
#define PIN_RESET 15
#define PIN_DC    5
#define PIN_CS    10
#define PIN_SCK   13
#define PIN_MOSI  11

//Alternate (Audio)
//#define PIN_RESET 2
//#define PIN_DC    21
//#define PIN_CS    20
//#define PIN_SCK   14
//#define PIN_MOSI  7


TeensyView oled(PIN_RESET, PIN_DC, PIN_CS, PIN_SCK, PIN_MOSI);

void setup()
{
  oled.begin();    // Initialize the OLED
  oled.clear(ALL); // Clear the display's internal memory
  oled.display();  // Display what's in the buffer (splashscreen)
  delay(1000);     // Delay 1000 ms
  oled.clear(PAGE); // Clear the buffer.

}

void loop()
{
  oled.clear(PAGE);  // Clear the page

  oled.rect(5, 5, 20, 20);  // Draw a rectangle
  oled.rectFill(35, 16, 23, 11);  // Draw a filled rectangle
  oled.circle(22, 20, 7);  // Draw the circle:
  oled.pixel(40, 7, WHITE, NORM);  // Draw a white pixel
  oled.pixel(48, 21, BLACK, NORM);  // Draw a black pixel (on the above rectange)

  oled.setFontType(1);  // Set font to type 1
  oled.setCursor(73, 17); // move cursor
  oled.print("world!");  // Write a byte out as a character
  oled.setFontType(0);  // Set font to type 0
  oled.setCursor(67, 12); // move cursor
  oled.print("Hello");  // Write a byte out as a character

  oled.display();  // Send the PAGE to the OLED memory

  delay(200);
}

In the above example, the standard pins are used for factory hardware. The "begin" function clears the OLED to our logo, then displays the memory contents.

TeensyView Class Reference

Below, you'll find a complete list of available TeensyView classes that can be called in your code.

Initialization

  • void begin(void) --- Initialize TeensyView Library.Setup I/O pins for SPI port, then send initialization commands to the SSD1306 controller inside the OLED.

  • void end (void) --- Power off the OLED display. Reset display control signals and prepare the SSD1306 controller for power off, then power off the 3.3V regulator.

Display Actions, Settings and Orientation

  • void display(void) --- Transfer display memory. Bulk move the screen buffer to the SSD1306 controller's memory so that images/graphics drawn on the screen buffer will be displayed on the OLED.

  • void clear(* uint8_t mode) --- Clear screen buffer or SSD1306's memory. To clear GDRAM inside the LCD controller, pass in the variable mode = ALL and to clear screen page buffer pass in the variable mode = PAGE.

  • void clear(* uint8_t mode, * uint8_t c) --- Clear or replace screen buffer or SSD1306's memory with a character. To clear GDRAM inside the LCD controller, pass in the variable mode = ALL with c character and to clear screen page buffer, pass in the variable mode = PAGE with c character.

  • void invert(boolean inv) -- Invert display. The WHITE color of the display will turn to BLACK, and the BLACK will turn to WHITE.

  • void contrast(* uint8_t contrast) --- Set OLED contrast value from 0 to 255. Note: Contrast level is not very obvious.

  • void setCursor(* uint8_t x, * uint8_t y) --- Set TeensyView's cursor position to x,y.

  • void flipVertical(boolean flip) --- Flip the graphics on the OLED vertically.

  • void flipHorizontal(boolean flip) --- Flip the graphics on the OLED horizontally.

  • uint8_t getLCDWidth(void) --- The width of the LCD return as byte.

  • uint8_t getLCDHeight(void) --- The height of the LCD return as byte.

Display Scrolling

Note: For scrolling features, refer to the OLED Memory Map section of our MicroView hookup guide for explanation of the rows and columns.
  • void scrollRight(* uint8_t start, * uint8_t stop) --- Right scrolling. Set row start to row stop on the OLED to scroll right.

  • void scrollLeft(* uint8_t start, * uint8_t stop) --- Left scrolling. Set row start to row stop on the OLED to scroll left.

  • void scrollVertRight(* uint8_t start, * uint8_t stop) --- Right vertical scrolling. Set column start to row stop on the OLED to scroll right.

  • void scrollVertLeft(* uint8_t start, * uint8_t stop) --- Left vertical scrolling. Set column start to row stop on the OLED to scroll left.

  • void scrollStop(void) --- Stop the scrolling of graphics on the OLED.

Font Functions

  • uint8_t getFontWidth(void) --- Get font width. The current font's width return as byte.

  • uint8_t getFontHeight(void) --- Get font height. The current font's height return as byte.

  • uint8_t getTotalFonts(void) --- Get total fonts. Return the total number of fonts loaded into the TeensyView's flash memory.

  • uint8_t getFontType(void) --- Get font type. Return the font type number of the current font.

  • uint8_t setFontType(* uint8_t type) --- Set font type. Set the current font type number (i.e., changing to different fonts based on the type provided).

  • uint8_t getFontStartChar(void) --- Get font starting character. Return the starting ASCII character of the current font; not all fonts start with ASCII character 0. Custom fonts can start from any ASCII character.

  • uint8_t getFontTotalChar(void) --- Get font total characters. Return the total characters of the current font.

Drawing Pixels

  • void pixel(* uint8_t x, * uint8_t y) --- Draw pixel using the current fore color and current draw mode in the screen buffer's x,y position.

  • void pixel(* uint8_t x, * uint8_t y, * uint8_t color, * uint8_t mode) --- Draw color pixel in the screen buffer's x,y position with NORM or XOR draw mode.

Drawing Lines

  • void line(* uint8_t x0, * uint8_t y0, * uint8_t x1, * uint8_t y1) --- Draw line using current fore color and current draw mode from x0,y0 to x1,y1 of the screen buffer.

  • void line(* uint8_t x0, * uint8_t y0, * uint8_t x1, * uint8_t y1, * uint8_t color, * uint8_t mode) --- Draw line using color and mode from x0,y0 to x1,y1 of the screen buffer.

  • void lineH(* uint8_t x, * uint8_t y, * uint8_t width) --- Draw horizontal line using current fore color and current draw mode from x,y to x+width,y of the screen buffer.

  • void lineH(* uint8_t x, * uint8_t y, * uint8_t width, * uint8_t color, * uint8_t mode) --- Draw horizontal line using color and mode from x,y to x+width,y of the screen buffer.

  • void lineV(* uint8_t x, * uint8_t y, * uint8_t height) --- Draw vertical line using current fore color and current draw mode from x,y to x,y+height of the screen buffer.

  • void lineV(* uint8_t x, * uint8_t y, * uint8_t height, * uint8_t color, * uint8_t mode) --- Draw vertical line using color and mode from x,y to x,y+height of the screen buffer.

Drawing Rectangles

  • void rect(* uint8_t x, * uint8_t y, * uint8_t width, * uint8_t height) --- Draw rectangle using current fore color and current draw mode from x,y to x+width,y+height of the screen buffer.

  • void rect(* uint8_t x, * uint8_t y, * uint8_t width, * uint8_t height, * uint8_t color, * uint8_t mode) --- Draw rectangle using color and mode from x,y to x+width,y+height of the screen buffer.

  • void rectFill(* uint8_t x, * uint8_t y, * uint8_t width, * uint8_t height) --- Draw filled rectangle using current fore color and current draw mode from x,y to x+width,y+height of the screen buffer.

  • void rectFill(* uint8_t x, * uint8_t y, * uint8_t width, * uint8_t height, * uint8_t color, * uint8_t mode) --- Draw filled rectangle using color and mode from x,y to x+width,y+height of the screen buffer.

Drawing Circles

  • void circle(* uint8_t x, * uint8_t y, * uint8_t radius) --- Draw circle with radius using current fore color and current draw mode at x,y of the screen buffer.

  • void circle(* uint8_t x, * uint8_t y, * uint8_t radius, * uint8_t color, * uint8_t mode) --- Draw circle with radius using color and mode at x,y of the screen buffer.

  • void circleFill(* uint8_t x0, * uint8_t y0, * uint8_t radius) --- Draw filled circle with radius using current fore color and current draw mode at x,y of the screen buffer.

  • void circleFill(* uint8_t x0, * uint8_t y0, * uint8_t radius, * uint8_t color, * uint8_t mode) --- Draw filled circle with radius using color and mode at x,y of the screen buffer. Uses the Bresenham's circle algorithm with a few modifications to paint the circle without overlapping draw operations.

Misc. Drawing

  • void drawChar(* uint8_t x, * uint8_t y, * uint8_t c) --- Draw character c using current color and current draw mode at x,y.

  • void drawChar(* uint8_t x, * uint8_t y, * uint8_t c, * uint8_t color, * uint8_t mode) --- Draw character c using color and draw mode at x,y.

  • void drawBitmap(void) --- Draw bitmap image stored elsewhere in the program to the OLED screen.

  • void setColor(* uint8_t color) --- Set the current draw's color. Only WHITE and BLACK available.

  • void setDrawMode(* uint8_t mode) --- Set current draw mode with NORM or XOR.

Misc. Under-the-Hood Functions

  • virtual size_t write(uint8_t) --- Override Arduino's Print so that we can use uView.print().

  • void data(uint8_t c); --- SPI data. Send 1 data byte via SPI to SSD1306 controller.

  • void setColumnAddress(uint8_t add) --- Set SSD1306 column address. Send column address command and address to the SSD1306 OLED controller.

  • void setPageAddress(uint8_t add) --- Set SSD1306 page address. Send page address command and address to the SSD1306 OLED controller.

  • void command(uint8_t c) --- Send 1 command byte.

  • uint8_t * getScreenBuffer(void) --- Get pointer to screen buffer. Return a pointer to the start of the RAM screen buffer for direct access.

System-Level Reference

  • TeensyView(uint8_t rst, uint8_t dc, uint8_t cs, uint8_t sck, uint8_t mosi) --- Construct TeensyView object with the pins specified in the arguments.

  • static void begin() --- SPI Initialization. Set up I/O pins for SPI port, then send initialization commands to the SSD1306 controller inside the OLED. Pins to use have been specified in the constructor.