all
This commit is contained in:
557
inc/SSD1306.h
Normal file
557
inc/SSD1306.h
Normal file
@@ -0,0 +1,557 @@
|
||||
/*!
|
||||
* @defgroup Display
|
||||
* @brief OLED and LCD displays
|
||||
* @{*/
|
||||
/**
|
||||
* @file SSD1306.h
|
||||
* @brief Provide simple I/O functions for the SSD 1306 OLED
|
||||
* @details Use I2C to send an 8-bit code to the 1306 64x128
|
||||
* pixel OLED to display text, images, or other information.
|
||||
* @version RSLK2
|
||||
* @author Daniel Valvano and Jonathan Valvano
|
||||
* @copyright Copyright 2024 by Jonathan W. Valvano, valvano@mail.utexas.edu,
|
||||
* @warning AS-IS
|
||||
* @note For more information see http://users.ece.utexas.edu/~valvano/
|
||||
* @date June 8, 2024
|
||||
* @remark Font table based
|
||||
* off of Nokia_5110_Example from Spark Fun: 7-17-2011<br>
|
||||
* Spark Fun Electronics 2011, Nathan Seidle<br>
|
||||
* http://dlnmh9ip6v2uc.cloudfront.net/datasheets/LCD/Monochrome/Nokia_5110_Example.pde
|
||||
*
|
||||
* Some displays have a typo on OLED has a 0-ohm resistor selection <br>
|
||||
* that says "IIC ADDRESS SELECT 0x78 0x7A"<br>
|
||||
* should have said "IIC ADDRESS SELECT 0x3C 0x3D"<br>
|
||||
* https://www.amazon.com/gp/product/B0871KW7BD<br>
|
||||
* search for I2C SSD1306 on Amazon.com<br>
|
||||
* rough estimate of execution times<br>
|
||||
* SSD1306_Clear 26.5ms<br>
|
||||
* SSD1306_OutBuffer 25.9ms, sends 128 by 64 pixels to OLED<br>
|
||||
* SSD1306_DrawBMP 75us (10 by 16 size), doesn't print, just fills buffer<br>
|
||||
* SSD1306_OutChar 206us, does print<br>
|
||||
* SSD1306_OutUDec 1032us, outputs 5 characters<br>
|
||||
<table>
|
||||
<caption id="SSD1306_1">SSD1306 pins </caption>
|
||||
<tr><th>Pin <th>Function<th>Description
|
||||
<tr><td>VCC <td>Power <td> +3.3V
|
||||
<tr><td>PB2 <td>I2C1-SCL<td>J1.9 SSD1306 SCL, with 1.5k pullup to 3.3V
|
||||
<tr><td>PB3 <td>I2C1-SDA<td>J1.10 SSD1306 SDA
|
||||
<tr><td>GND <td>GND <td> Ground
|
||||
</table>
|
||||
|
||||
|
||||
This example accompanies the book
|
||||
"Embedded Systems: Introduction to Robotics,
|
||||
Jonathan W. Valvano, ISBN: 9781074544300, copyright (c) 2024
|
||||
For more information about my classes, my research, and my books, see
|
||||
http://users.ece.utexas.edu/~valvano/
|
||||
|
||||
Simplified BSD License (FreeBSD License)
|
||||
Copyright (c) 2024, Jonathan Valvano, All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The views and conclusions contained in the software and documentation are
|
||||
those of the authors and should not be interpreted as representing official
|
||||
policies, either expressed or implied, of the FreeBSD Project.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#ifndef _SSD1306_H_
|
||||
#define _SSD1306_H_
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* \brief Black is 0 or off
|
||||
*/
|
||||
#define SSD1306_BLACK 0
|
||||
/**
|
||||
* \brief White is 1 or on
|
||||
*/
|
||||
#define SSD1306_WHITE 1
|
||||
/**
|
||||
* \brief Inverse will flip bits
|
||||
*/
|
||||
#define SSD1306_INVERSE 2
|
||||
/**
|
||||
* \brief SSD1306_EXTERNALVCC specifies External display voltage source
|
||||
*/
|
||||
#define SSD1306_EXTERNALVCC 0x01
|
||||
/**
|
||||
* \brief SSD1306_SWITCHCAPVCC specifies display voltage from 3.3V
|
||||
*/
|
||||
#define SSD1306_SWITCHCAPVCC 0x02
|
||||
/**
|
||||
* \brief true means success
|
||||
*/
|
||||
#define true 1
|
||||
/**
|
||||
* \brief false means failure
|
||||
*/
|
||||
#define false 0
|
||||
|
||||
/*!
|
||||
@brief II2 driver for SSD1306 OLED display
|
||||
*/
|
||||
// With rotation at 0
|
||||
// 0,0 <-x-> 0,127
|
||||
// ------------------------
|
||||
// | |
|
||||
// | |
|
||||
// | |
|
||||
// ------------------------
|
||||
// 63,0 63,127
|
||||
/**
|
||||
* Initialize OLED
|
||||
* @param vccst Vcc voltage parameter, uSSD1306_EXTERNALVCC or SSD1306_SWITCHCAPVCC
|
||||
* @return success or failure
|
||||
* @note for EE319K use vccst=SSD1306_SWITCHCAPVCC
|
||||
*/
|
||||
int SSD1306_Init(int vccst);
|
||||
|
||||
/**
|
||||
* Copy all of RAM image to OLED. Use this command with SSD1306_ClearBuffer, and all Draw functions
|
||||
* @param none
|
||||
* @return success or failure
|
||||
*/
|
||||
void SSD1306_OutBuffer(void);
|
||||
|
||||
/*!
|
||||
@brief Enable or disable display invert mode (white-on-black vs
|
||||
black-on-white).
|
||||
@param i
|
||||
If true, switch to invert mode (black-on-white), else normal
|
||||
mode (white-on-black).
|
||||
@return None (void).
|
||||
@note This has an immediate effect on the display, no need to call the
|
||||
display() function -- buffer contents are not changed, rather a
|
||||
different pixel mode of the display hardware is used. When
|
||||
enabled, drawing BLACK (value 0) pixels will actually draw white,
|
||||
WHITE (value 1) will draw black.
|
||||
*/
|
||||
void SSD1306_InvertDisplay(int i);
|
||||
/*!
|
||||
@brief Dim the display.
|
||||
@param dim
|
||||
true to enable lower brightness mode, false for full brightness.
|
||||
@return None (void).
|
||||
@note This has an immediate effect on the display, no need to call the
|
||||
display() function -- buffer contents are not changed.
|
||||
*/
|
||||
void SSD1306_Dim(int dim);
|
||||
|
||||
/*!
|
||||
@brief Set/clear/invert a single pixel. This is also invoked by the
|
||||
Adafruit_GFX library in generating many higher-level graphics
|
||||
primitives.
|
||||
@param x
|
||||
Column of display -- 0 at left to (screen width - 1) at right.
|
||||
@param y
|
||||
Row of display -- 0 at top to (screen height - 1) at bottom.
|
||||
@param color
|
||||
Pixel color, one of: SSD1306_BLACK, SSD1306_WHITE or SSD1306_INVERT.
|
||||
@return None (void).
|
||||
@note Changes buffer contents only, no immediate effect on display.
|
||||
Follow up with a call to SSD1306_DisplayBuffer(), or with other
|
||||
graphics commands as needed by one's own application.
|
||||
*/
|
||||
void SSD1306_DrawPixel(int16_t x, int16_t y, uint16_t color);
|
||||
|
||||
/*!
|
||||
@brief Draw a horizontal line. This is also invoked by the Adafruit_GFX
|
||||
library in generating many higher-level graphics primitives.
|
||||
@param x
|
||||
Leftmost column -- 0 at left to (screen width - 1) at right.
|
||||
@param y
|
||||
Row of display -- 0 at top to (screen height -1) at bottom.
|
||||
@param w
|
||||
Width of line, in pixels.
|
||||
@param color
|
||||
Line color, one of: SSD1306_BLACK, SSD1306_WHITE or SSD1306_INVERSE.
|
||||
@return None (void).
|
||||
@note Changes buffer contents only, no immediate effect on display.
|
||||
Follow up with a call to SSD1306_DisplayBuffer(), or with other
|
||||
graphics commands as needed by one's own application.
|
||||
*/
|
||||
void SSD1306_DrawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
|
||||
|
||||
/*!
|
||||
@brief Draw a vertical line. This is also invoked by the Adafruit_GFX
|
||||
library in generating many higher-level graphics primitives.
|
||||
@param x
|
||||
Column of display -- 0 at left to (screen width -1) at right.
|
||||
@param y
|
||||
Topmost row -- 0 at top to (screen height - 1) at bottom.
|
||||
@param h
|
||||
Height of line, in pixels.
|
||||
@param color
|
||||
Line color, one of: SSD1306_BLACK, SSD1306_WHITE or SSD1306_INVERSE.
|
||||
@return None (void).
|
||||
@note Changes buffer contents only, no immediate effect on display.
|
||||
Follow up with a call to SSD1306_DisplayBuffer(), or with other
|
||||
graphics commands as needed by one's own application.
|
||||
*/
|
||||
void SSD1306_DrawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
|
||||
|
||||
/*!
|
||||
@brief Activate a right-handed scroll for all or part of the display.
|
||||
@note To scroll the whole display, run: SSD1306_startscrollright(0x00, 0x0F)
|
||||
@param start
|
||||
First row.
|
||||
@param stop
|
||||
Last row.
|
||||
@return None (void).
|
||||
*/
|
||||
|
||||
void SSD1306_startscrollright(uint8_t start, uint8_t stop);
|
||||
/*!
|
||||
@brief Activate a left-handed scroll for all or part of the display.
|
||||
@note To scroll the whole display, run: SSD1306_startscrollleft(0x00, 0x0F)
|
||||
@param start
|
||||
First row.
|
||||
@param stop
|
||||
Last row.
|
||||
@return None (void).
|
||||
*/
|
||||
void SSD1306_startscrollleft(uint8_t start, uint8_t stop);
|
||||
|
||||
/*!
|
||||
@brief Activate a diagonal scroll for all or part of the display.
|
||||
@note SSD1306_startscrolldiagright(0x00, 0x0F)
|
||||
@param start
|
||||
First row.
|
||||
@param stop
|
||||
Last row.
|
||||
@return None (void).
|
||||
*/
|
||||
void SSD1306_startscrolldiagright(uint8_t start, uint8_t stop);
|
||||
|
||||
/*!
|
||||
@brief Activate alternate diagonal scroll for all or part of the display.
|
||||
@note To scroll the whole display, run: SSD1306_startscrolldiagleft(0x00, 0x0F)
|
||||
@param start
|
||||
First row.
|
||||
@param stop
|
||||
Last row.
|
||||
@return None (void).
|
||||
*/
|
||||
void SSD1306_startscrolldiagleft(uint8_t start, uint8_t stop);
|
||||
|
||||
/*!
|
||||
@brief Cease a previously-begun scrolling action.
|
||||
@return None (void).
|
||||
*/
|
||||
void SSD1306_stopscroll(void);
|
||||
|
||||
/*!
|
||||
@brief Return color of a single pixel in display buffer.
|
||||
@param x
|
||||
Column of display -- 0 at left to (screen width - 1) at right.
|
||||
@param y
|
||||
Row of display -- 0 at top to (screen height -1) at bottom.
|
||||
@return true if pixel is set (usually WHITE, unless display invert mode
|
||||
is enabled), false if clear (BLACK).
|
||||
@note Reads from buffer contents; may not reflect current contents of
|
||||
screen if SSD1306_DisplayBuffer() has not been called.
|
||||
*/
|
||||
int SSD1306_GetPixel(int16_t x, int16_t y);
|
||||
|
||||
/*!
|
||||
@brief Get base address of display buffer for direct reading or writing.
|
||||
@return Pointer to an unsigned 8-bit array, column-major, columns padded
|
||||
to full byte boundary if needed.
|
||||
*/
|
||||
uint8_t *SSD1306_getBuffer(void);
|
||||
|
||||
/*!
|
||||
@brief Draw a character
|
||||
@param x
|
||||
Column of display -- 0 at left to (screen width - 1) at right.
|
||||
@param y
|
||||
Row of display -- 0 at top to (screen height - 1) at bottom.
|
||||
@param letter
|
||||
ASCII code of character to draw.
|
||||
@param color
|
||||
Pixel color, one of: SSD1306_BLACK, SSD1306_WHITE or SSD1306_INVERSE.
|
||||
@return None (void).
|
||||
@note Changes buffer contents only, no immediate effect on display.
|
||||
Follow up with a call to SSD1306_DisplayBuffer(), or with other
|
||||
graphics commands as needed by one's own application.
|
||||
*/
|
||||
void SSD1306_DrawChar(int16_t x, int16_t y, char letter, uint16_t color);
|
||||
|
||||
/*!
|
||||
@brief Draw a string
|
||||
@param x
|
||||
Column of display -- 0 at left to (screen width - 1) at right.
|
||||
@param y
|
||||
Row of display -- 0 at top to (screen height - 1) at bottom.
|
||||
@param pt
|
||||
pointer to null-terminated ASCII string of characters to draw.
|
||||
@param color
|
||||
Pixel color, one of: SSD1306_BLACK, SSD1306_WHITE or SSD1306_INVERSE.
|
||||
@return None (void).
|
||||
@note Changes buffer contents only, no immediate effect on display.
|
||||
Follow up with a call to SSD1306_DisplayBuffer(), or with other
|
||||
graphics commands as needed by one's own application.
|
||||
@image html SSD1306DrawString.png width=300px
|
||||
|
||||
*/
|
||||
void SSD1306_DrawString(int16_t x, int16_t y, char *pt, uint16_t color);
|
||||
|
||||
/*!
|
||||
@brief Draw a 3 digit integer
|
||||
@param x
|
||||
Column of display -- 0 at left to (screen width - 1) at right.
|
||||
@param y
|
||||
Row of display -- 0 at top to (screen height - 1) at bottom.
|
||||
@param n
|
||||
unsigned number 0 to 999.
|
||||
@param color
|
||||
Pixel color, one of: SSD1306_BLACK, SSD1306_WHITE or SSD1306_INVERSE.
|
||||
@return None (void).
|
||||
@note Changes buffer contents only, no immediate effect on display.
|
||||
Follow up with a call to SSD1306_DisplayBuffer(), or with other
|
||||
graphics commands as needed by one's own application.
|
||||
*/
|
||||
void SSD1306_DrawUDec(int16_t x, int16_t y, uint16_t n, uint16_t color);
|
||||
|
||||
/*!
|
||||
@brief Clear contents of display buffer (set all pixels to off).
|
||||
@return None (void).
|
||||
@note Changes buffer contents only, no immediate effect on display.
|
||||
Follow up with a call to display(), or with other graphics
|
||||
commands as needed by one's own application.
|
||||
*/
|
||||
void SSD1306_ClearBuffer(void);
|
||||
|
||||
/*!
|
||||
@brief Clear the LCD by writing zeros to the entire screen and
|
||||
reset the cursor to (0,0) (top left corner of screen).
|
||||
@return None (void).
|
||||
*/
|
||||
void SSD1306_OutClear(void);
|
||||
|
||||
/*!
|
||||
@brief Fill the whole screen by drawing a 128x64 bitmap image.
|
||||
@param ptr Pointer to 1024-byte image with no header or format
|
||||
data.
|
||||
@return None (void).
|
||||
@note Assumes: OLED is in horizontal addressing mode (command 0x20, 0x00)<br>
|
||||
Image is sent to screen directly, RAM buffer is unchanged.
|
||||
*/
|
||||
void SSD1306_DrawFullImage(const uint8_t *ptr);
|
||||
|
||||
/*!
|
||||
@brief Draw a raw bitmap to the RAM buffer.
|
||||
@param xpos Horizontal position of bottom left corner of image, columns from the left edge.<br>
|
||||
must be less than 128<br>
|
||||
0 is on the left; 126 is near the right
|
||||
@param ypos Vertical position of bottom left corner of image, rows from the top edge.<br>
|
||||
must be less than 64<br>
|
||||
2 is near the top; 63 is at the bottom
|
||||
@param ptr Pointer to a 16-color BMP image.
|
||||
@param threshold Grayscale colors above this number make corresponding pixel 'on'.<br>
|
||||
0 to 14<br>
|
||||
0 is fine for ships, explosions, projectiles, and bunkers
|
||||
@param color
|
||||
Pixel color, one of: SSD1306_BLACK, SSD1306_WHITE or SSD1306_INVERSE.
|
||||
@return None (void).
|
||||
@note Bitmaps defined above were created for the LM3S1968 or
|
||||
LM3S8962's 4-bit grayscale OLED display. More recently
|
||||
they are created using Microsoft Paint (or your
|
||||
favorite drawing program), saved as a 16-color bitmap,
|
||||
and converted from binary to text using BmpConvert.exe.
|
||||
Then copy and paste this text into the program, which
|
||||
will create a constant containing the image that will
|
||||
be loaded into ROM at compile time. These images will
|
||||
still contain their header data and may contain padding
|
||||
to preserve 4-byte alignment. This function takes a
|
||||
bitmap in the previously described format and puts its
|
||||
image data in the proper location in the buffer so the
|
||||
image will appear on the screen after the next call to<br>
|
||||
SSD1306_DisplayBuffer();<br>
|
||||
The interface and operation of this process is modeled
|
||||
after RIT128x96x4_BMP(x, y, image);
|
||||
*/
|
||||
void SSD1306_DrawBMP(uint8_t xpos, uint8_t ypos, const uint8_t *ptr, uint8_t threshold, uint16_t color);
|
||||
|
||||
/**
|
||||
* Move the cursor to the desired X- and Y-position. The
|
||||
* next character will be printed here. X=0 is the leftmost
|
||||
* column. Y=0 is the top row.
|
||||
* @param newX new X-position of the cursor (0<=newX<=20)
|
||||
* @param newY new Y-position of the cursor (0<=newY<=7)
|
||||
* @return none
|
||||
*/
|
||||
void SSD1306_SetCursor(uint16_t newX, uint16_t newY);
|
||||
|
||||
/**
|
||||
* Print a character to the SSD1306 OLED. The
|
||||
* character will be printed at the current cursor position,
|
||||
* the cursor will automatically be updated, and it will
|
||||
* wrap to the next row or back to the top if necessary.
|
||||
* One blank column of pixels will be printed on one side
|
||||
* of the character for readability. Since characters are 8
|
||||
* pixels tall and 6 pixels wide, 12 characters fit per row,
|
||||
* and there are six rows.
|
||||
* @param data character to print
|
||||
* @return none
|
||||
* @brief Print a character to the OLED
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutChar(char data);
|
||||
|
||||
/**
|
||||
* Print a string of characters to the SSD1306 OLED.
|
||||
* The string will automatically wrap, so padding spaces may
|
||||
* be needed to make the output look optimal.
|
||||
* @param ptr pointer to NULL-terminated ASCII string
|
||||
* @return none
|
||||
* @brief Print a string of characters to the OLED
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutString(char *ptr);
|
||||
|
||||
/**
|
||||
* Output a 16-bit number in unsigned decimal format with a
|
||||
* fixed size of five right-justified digits of output.
|
||||
* @param n 16-bit unsigned number
|
||||
* @return none
|
||||
* @brief Print a 16-bit unsigned number to the OLED
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutUDec(uint16_t n);
|
||||
|
||||
/**
|
||||
* Output a 16-bit number in signed decimal format with a
|
||||
* fixed size of six right-justified digits of output.
|
||||
* @param n 16-bit signed number
|
||||
* @return none
|
||||
* @brief Print a 16-bit signed number to the OLED
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutSDec(int16_t n);
|
||||
|
||||
/**
|
||||
* Output a 16-bit number in unsigned 3-digit fixed point, 0.1 resolution
|
||||
* fixed size of four right-justified characters.<br>
|
||||
* numbers 0 to 999 printed as " 0.0" to "99.9"
|
||||
* @param n 16-bit unsigned number
|
||||
* @return none
|
||||
* @brief Print a 16-bit unsigned fixed-point number to the OLED
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutUFix1(uint16_t n);
|
||||
|
||||
/**
|
||||
* Output a 32-bit number in signed 4-digit fixed point, 0.1 resolution
|
||||
* fixed size of six right-justified characters.<br>
|
||||
* numbers -9999 to 9999 printed as "-999.9" to "999.9"
|
||||
* @param n 32-bit signed number
|
||||
* @return none
|
||||
* @brief Print a 32-bit signed fixed-point number to the OLED
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutSFix1(int32_t n);
|
||||
|
||||
/**
|
||||
* Output one hex digit to the SSD1306 OLED
|
||||
* Just one character with no leading 0x
|
||||
* @param n unsigned number 0-15 to print
|
||||
* @return none
|
||||
* @brief Print one hex digit
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutHex7(uint8_t n);
|
||||
|
||||
/**
|
||||
* Output two hex digits to the SSD1306 OLED.
|
||||
* Prints 4 characters with leading 0x
|
||||
* @param n unsigned number 0-255 to print
|
||||
* @return none
|
||||
* @brief Print two hex digits
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutUHex7(uint8_t n);
|
||||
|
||||
/**
|
||||
* Output 16 hex digits to the SSD1306 OLED.
|
||||
* Prints 16 characters with leading 0x
|
||||
* @param n unsigned 32-bit number to print
|
||||
* @return none
|
||||
* @brief Print 16 hex digits
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutUHex32(uint32_t n);
|
||||
|
||||
/**
|
||||
* Output three decimal digits to the SSD1306 OLED.
|
||||
* Prints 4 characters with leading space
|
||||
* @param n unsigned number 0-999 to print
|
||||
* @return none
|
||||
* @brief Print three decimal digits
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutUDec16(uint32_t n);
|
||||
|
||||
/**
|
||||
* Output two decimal digits to the SSD1306 OLED.
|
||||
* Prints 2 characters without leading space
|
||||
* @param n unsigned number 0-99 to print
|
||||
* @return none
|
||||
* @brief Print two decimal digits
|
||||
* @note use SSD1306_SetCursor to specify position
|
||||
*/
|
||||
void SSD1306_OutUDec2(uint32_t n);
|
||||
|
||||
/*!
|
||||
@brief Initialize parameters for plotting
|
||||
@param minX minimum X value
|
||||
@param maxX maxamum X value
|
||||
@param minY minimum Y value
|
||||
@param maxY maxamum Y value
|
||||
@param color
|
||||
Pixel color, one of: SSD1306_BLACK, SSD1306_WHITE or SSD1306_INVERT.
|
||||
@return None (void).
|
||||
@note minimum must be less than maximum
|
||||
*/
|
||||
void SSD1306_SetPlot(int32_t minX, int32_t maxX, int32_t minY, int32_t maxY, uint16_t color);
|
||||
/*!
|
||||
@brief Set/clear/invert a single pixel. SSD1306_SetPlot initializes scaling
|
||||
@param x
|
||||
Column of display -- minX at left to maxX at right.
|
||||
@param y
|
||||
Row of display -- maxY at top to minY at bottom.
|
||||
@return None (void).
|
||||
@note Changes buffer contents only, no immediate effect on display.
|
||||
Follow up with a call to SSD1306_DisplayBuffer(), or with other
|
||||
graphics commands as needed by one's own application.
|
||||
*/
|
||||
void SSD1306_DrawPoint(int32_t x, int32_t y);
|
||||
|
||||
/*!
|
||||
@brief Initialize the SSD1306 for printf
|
||||
@return None (void).
|
||||
*/
|
||||
void SSD1306_InitPrintf(void);
|
||||
#endif // _SSD1306_H_
|
||||
/** @}*/
|
||||
Reference in New Issue
Block a user