| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- // Copyright 2021 IOsetting <iosetting(at)outlook.com>
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- #ifndef __FW_SSD1306_H__
- #define __FW_SSD1306_H__
- #include "fw_hal.h"
- #include "string.h"
- /* I2C address
- * address: 7 bit slave address, left aligned, bits 7:1 are used, LSB bit is not used
- */
- #ifndef SSD1306_I2C_ADDR
- #define SSD1306_I2C_ADDR 0x78
- //#define SSD1306_I2C_ADDR 0x7A
- #endif
- /* SSD1306 settings */
- /* SSD1306 width in pixels */
- #ifndef SSD1306_WIDTH
- #define SSD1306_WIDTH 128
- #endif
- /* SSD1306 LCD height in pixels */
- #ifndef SSD1306_HEIGHT
- #define SSD1306_HEIGHT 64
- #endif
- #ifndef SSD1306_TIMEOUT
- #define SSD1306_TIMEOUT 20000
- #endif
- /*!< Black color, no pixel */
- #define SSD1306_COLOR_BLACK 0x00
- /*!< Pixel is set. Color depends on LCD */
- #define SSD1306_COLOR_WHITE 0x01
- /**
- * @brief Writes single byte command to slave
- * @param command: command to be written
- */
- void SSD1306_WriteCommand(uint8_t command);
- /**
- * @brief Writes single byte data to slave
- * @param dat: data to be written
- */
- void SSD1306_WriteData(uint8_t dat);
- /**
- * Initializes SSD1306 LCD
- */
- void SSD1306_Init(void);
- /**
- * @brief Updates buffer from internal RAM to LCD
- * @note This function must be called each time you do some changes to LCD, to update buffer from RAM to LCD
- */
- void SSD1306_UpdateScreen(void);
- /**
- * @brief Toggles pixels invertion inside internal RAM
- * @note @ref SSD1306_UpdateScreen() must be called after that in order to see updated LCD screen
- */
- void SSD1306_ToggleInvert(void);
- /**
- * @brief Fills entire LCD with desired color
- * @note @ref SSD1306_UpdateScreen() must be called after that in order to see updated LCD screen
- * @param Color: Color to be used for screen fill. This parameter can be a value of @ref SSD1306_COLOR_t enumeration
- */
- void SSD1306_Fill(uint8_t Color);
- /**
- * @brief Draws pixel at desired location
- * @note @ref SSD1306_UpdateScreen() must called after that in order to see updated LCD screen
- * @param x: X location. This parameter can be a value between 0 and SSD1306_WIDTH - 1
- * @param y: Y location. This parameter can be a value between 0 and SSD1306_HEIGHT - 1
- * @param color: Color to be used for screen fill. This parameter can be a value of @ref SSD1306_COLOR_t enumeration
- * @retval None
- */
- void SSD1306_DrawPixel(uint16_t x, uint16_t y, uint8_t color);
- /**
- * @brief Sets cursor pointer to desired location for strings
- * @param x: X location. This parameter can be a value between 0 and SSD1306_WIDTH - 1
- * @param y: Y location. This parameter can be a value between 0 and SSD1306_HEIGHT - 1
- * @retval None
- */
- void SSD1306_GotoXY(uint16_t x, uint16_t y);
- /**
- * @brief Draws line on LCD
- * @note @ref SSD1306_UpdateScreen() must be called after that in order to see updated LCD screen
- * @param x0: Line X start point. Valid input is 0 to SSD1306_WIDTH - 1
- * @param y0: Line Y start point. Valid input is 0 to SSD1306_HEIGHT - 1
- * @param x1: Line X end point. Valid input is 0 to SSD1306_WIDTH - 1
- * @param y1: Line Y end point. Valid input is 0 to SSD1306_HEIGHT - 1
- * @param c: Color to be used. This parameter can be a value of @ref SSD1306_COLOR_t enumeration
- * @retval None
- */
- void SSD1306_DrawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint8_t c);
- #endif
|