TinyScreen 96 x 64 OLED Colour Display (HCTICI0031)

TinyCircuits product range including TindyDuino and TinyLili.
Post Reply
andrew
Site Admin
Posts: 825
Joined: Sun Aug 05, 2012 4:15 pm

TinyScreen 96 x 64 OLED Colour Display (HCTICI0031)

Post by andrew » Wed Oct 07, 2015 1:03 pm

Image

See our Tiny Circuits Range Here.


Image

TinyScreen is a beautiful colour OLED display for your TinyDuino system. Create video games, a video player, or your own smart watch using this Tiny OLED screen! The screen is 0.96" diagonal with a resolution of 96x64 RGB pixels, each with 16-bit colour. Since this is an OLED, there is no backlight needed and the screen is very bright with excellent colours. Four buttons are located along the side of the screen to allow for user input - like for playing games or creating menus for your projects (like is done on the TinyScreen Smartwatch project). The screen has a built in IO expander over I2C for control signals and button control, which eliminates using extra pins on the TinyDuino for this.

The screen uses an SSD1331 driver for the OLED display, and we have a highly optimized and easy to use library for this which supports both the OLED screen and the buttons on the board, even allowing for 20FPS+ video playback from a microSD with the TinyDuino. It's also very easy to create your own projects to display text and graphics, or create your own tiny games.

The TinyScreen is also available with an alternative device address, which allows two TinyScreens to be used on the same TinyDuino stack when used with a Ribbon Cable Extender.



Image

96x64 OLED display, 16-bit colour depth
0.96" (24.4mm) viewable area
Total Size: 1.02" x 0.98" (25.8mm x 25.0mm)
Software controllable backlight (OLED brightness)
Power down mode
Four push buttons along the sides (connected to IO pins)
SPI interface for display
3.0V to 5.5V operation (higher voltages supported with TinyShield power regulator)
20 - 45mA max supply current (depending on brightness)
Dimensions: 25.8mm x 25mm (1.01 inches x .984 inches)
Max Height (from lower bottom TinyShield Connector to upper to of screen): 4.40mm (0.173inches)
Weight: 3.2 grams (.113 ounces)
I2C and SPI Mode used
Arduino pins A4 & A5 used, MOSI and SCK Used. Chip select and control signals generate by on board I2C GPIO Expander

Image


Image

Code: Select all

#define	BLACK           0x00
#define	BLUE            0xE0
#define	RED             0x03
#define	GREEN           0x1C
#define	DGREEN           0x0C
#define YELLOW          0x1F
#define WHITE           0xFF
#define ALPHA           0xFE
#define	BROWN           0x32

uint8_t amtcolors=7;
uint8_t colors[]={BLACK,BLUE,RED,GREEN,WHITE,DGREEN,YELLOW};

uint8_t i=0;
  
uint8_t nextColor(){
  if(i>=amtcolors)i=0;
  return colors[i++];
}
  
#include <TinyScreen.h>
#include <SPI.h>
#include <Wire.h>

TinyScreen display = TinyScreen(0);


void setup(void) {
  Wire.begin();
  display.begin();
}

void loop() {
  display.setFont(liberationSans_10ptFontInfo);
  display.fontColor(WHITE,BLACK);
  
  for(int i=5;i<20;i++){
    display.setCursor((3000-(i*5))%70,(i*14)%50);
    display.print("text");
    display.setCursor((i*7)%70,(6000-(i*6))%50);
    display.print("text");
    delay(150);
  }
  for(int i=0;i<5;i++){
    display.setCursor(0,i*12);
    display.print("FASTFASTFASTFAST");
  }
  delay(200);
  
  for(int i=5;i<70;i++){
    display.setCursor((3000-(i*5))%70,(i*14)%50);
    display.fontColor(i|(i<<4),nextColor());
    display.print("color");
    display.setCursor((i*7)%70,(6000-(i*6))%50);
    display.print("COLOR");
  }
  display.fontColor(WHITE,BLACK);
  display.clearWindow(0,0,96,64);
  display.setFont(liberationSans_8ptFontInfo);
  display.setCursor(0,0);
  display.print("SIZE");
  delay(200);
  display.setFont(liberationSans_12ptFontInfo);
  display.setCursor(10,10);
  display.print("SIZE");
  delay(200);
  display.setFont(liberationSans_14ptFontInfo);
  display.setCursor(24,24);
  display.print("SIZE");
  delay(200);
  display.setFont(liberationSans_16ptFontInfo);
  display.setCursor(40,40);
  display.print("SIZE");
  delay(200);
  
  
  display.setCursor(15,20);
  display.fontColor(BLACK,WHITE);
  display.clearWindow(0,0,96,64);
  display.setBrightness(15);
  display.drawRect(0,0,96,64,1,WHITE);
  display.print("BRIGHT!");
  delay(500);
  display.fontColor(WHITE,BLACK);
  display.setCursor(30,20);
  display.clearWindow(0,0,96,64);
  display.setBrightness(0);
  display.print("DIM!");
  delay(500);
  display.setBrightness(5);
  
  
  display.fontColor(YELLOW,BLACK);
  display.setCursor(15,15);
  display.clearWindow(0,0,96,64);
  display.print("Boxes!");
  delay(200);
  for(int i=5;i<800;i++){
    int x=(3000-(i*5))%90;
    int y=(i*14)%60;
    int width=((i*7)%(90-x));
    int height=((6000-(i*6))%(60-y));
    display.drawRect(x,y,constrain(width,5,20),constrain(height,5,15),i&1,nextColor());
    if(i<10)
      delay(40);
    if(i<50)
      delay(40);
  }
  delay(500);
  display.clearWindow(0,0,96,64);
}

Image
HCTICI0031_Schematic.pdf
The library for this screen can be downloaded from the TinyCircuits GitHub page here:
https://github.com/TinyCircuits/TinyCir ... Screen_Lib
You do not have the required permissions to view the files attached to this post.
Comments made by this poster do not necessarily reflect the views of Hobby Components Ltd.

Post Reply