Skip to content

API Reference

Thumby.h

#include <Thumby.h>

Main library for screen, button, audio, and link cable interaction.

Inherits most functionality from GraphicsBuffer.h and font.h libraries. This section is a summary of what is accessible and useful through the Thumby.h library.


Defines

Name value
THUMBY_SCREEN_WIDTH 72
THUMBY_SCREEN_HEIGHT 40
BUTTON_L 0x01
BUTTON_R 0x02
BUTTON_U 0x04
BUTTON_D 0x08
BUTTON_B 0x10
BUTTON_A 0x20

Classes

Thumby

Class for driving and using Thumby peripheral components.

Public member functions
General
General
void begin()

Sets up pins and libraries
void update()

Sends the internal graphics buffer to the screen
Drawing
Drawing
void writePixel(uint16_t color)

Writes color to pixel placed by goto(...), setX(...), or setY(...)
void setX(uint8_t x, uint8_t end)

Sets drawing X position to x and row jump position at end (e.g. after calling writePixel(...) end times, pixels on the next increment of y starting at x will be drawn)
void setY(uint8_t y, uint8_t end)

Sets drawing Y position to y and row loop position at end (e.g. after calling writePixel(...) enough times to draw rows defined by setX(...), loop back to this y)
void goTo(uint8_t x, uint8_t y)

Quick wrapper of setX(...) and setY(...)
void drawPixel(uint8_t x, uint8_t y, uint16_t color)

Set pixel to color at x and y
void clear()

Clears all pixels in buffer to black
void clearWindow(uint8_t x, uint8_t y, uint8_t w, uint8_t h)

Clears rectangle defined by x, y, w, and h to black
void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color)

Draws line between points defined by x0, y0 and x1, y1 in color
void drawCircle(int16_t x0, int16_t y0, int16_t radius, uint16_t color)

Draws circle with center at x0, and y0 with radius in color
Font
Font
void setFont(const FONT_INFO&)

Set font parameters to those defined in FONT_INFO. Predefined fonts are available in the GraphicsBuffer library font.h file (default is thinPixel7_10ptFontInfo)
uint8_t getFontHeight(const FONT_INFO&)

Returns font height value (in pixels) from FONT_INFO
uint8_t getFontHeight(void)

Returns the current set font height value (in pixels)
uint8_t getPrintWidth(char* str)

Returns the number of pixels characters in str will occupy in width
void setCursor(int x, int y)

Sets the cursor x and y position the characters will print at (top left corner of string)
void fontColor(uint16_t f, uint16_t g)

Sets the foreground (text) and background colors to f and g respectively
size_t write(uint8_t ch)

Writes a single character ch to the buffer at the current set cursor position. Returns true if successful false otherwise
uint8_t* getBuffer()

Returns (pointer to) graphics buffer
uint16_t getBufferSize()

Returns the number of bytes the graphics buffer occupies
void print(uint8_t* str)

Draws characters in str to buffer
Audio
Audio
void play(uint32_t freq, uint16_t duty)

Starts playing sound at freq (only 20 - 20kHz is useful for human hearing) and duty cycle
void stopPlay()

Stops playing sound started by play(...)
Buttons
Buttons
bool isPressed(uint8_t mask)

Returns true if any buttons correlating to the ORed button mask (see "Defines" section) are pressed, false otherwise
Link
int8_t linkPack(uint8_t* dataBuf, uint16_t dataBufLen, uint8_t* packedBuf, uint16_t packedBufLen)

Packs/copies dataBufLen number of bytes from dataBuf to packedBuf up to packedBufLen. Adds three additional bytes for size and checksum. Returns -1 if dataBufLen > 512 or dataBufLen+3 > packedBufLen. Returns the full packet length if succeeds (dataBufLen+3)
int8_t linkUnpack(uint8_t* packedBuf, uint16_t packedBufLen, uint8_t* dataBuf, uint16_t dataBufLen)

Unpacks/copies dataBufLen number of bytes from packedBuf to dataBuf while removing data and checksum bytes. Returns -1 if checksum in packedBuf does not match that generated from extracted data or if data from packedBuf cannot fit into dataBuf. Returns dataLength
Public member variables
Name Description
const uint16_t width Current set screen width (in pixels)
const uint16_t height Current set screen height (in pixels)
const uint8_t bitsPerPixel Current screen color bit depth

Structs

FONT_CHAR_INFO

Public member variables
Name Description
const uint8_t width Width of a character in pixels
const uint16_t offset Offset from the end of the character width in pixels

FONT_INFO

Public member variables
Name Description
const unsigned char height Height of the font in pixels
const char startCh First character in font
const char endCh Last character in font
const FONT_CHAR_INFO* charDesc Description of characters in the font
const unsigned char* bitmap Bitmap used by the font