Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
SSD1306_mini/SSD1306_mini.h@4:3618abce1646, 2022-04-21 (annotated)
- Committer:
 - vitpetrik
 - Date:
 - Thu Apr 21 13:19:41 2022 +0000
 - Revision:
 - 4:3618abce1646
 
Share for Stepan Oslejsek
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| vitpetrik | 4:3618abce1646 | 1 | /********************************************************************* | 
| vitpetrik | 4:3618abce1646 | 2 | This is a library for our Monochrome OLEDs based on SSD1306 drivers | 
| vitpetrik | 4:3618abce1646 | 3 | |
| vitpetrik | 4:3618abce1646 | 4 | Pick one up today in the adafruit shop! | 
| vitpetrik | 4:3618abce1646 | 5 | ------> http://www.adafruit.com/category/63_98 | 
| vitpetrik | 4:3618abce1646 | 6 | |
| vitpetrik | 4:3618abce1646 | 7 | These displays use SPI to communicate, 4 or 5 pins are required to | 
| vitpetrik | 4:3618abce1646 | 8 | interface | 
| vitpetrik | 4:3618abce1646 | 9 | |
| vitpetrik | 4:3618abce1646 | 10 | Adafruit invests time and resources providing this open source code, | 
| vitpetrik | 4:3618abce1646 | 11 | please support Adafruit and open-source hardware by purchasing | 
| vitpetrik | 4:3618abce1646 | 12 | products from Adafruit! | 
| vitpetrik | 4:3618abce1646 | 13 | |
| vitpetrik | 4:3618abce1646 | 14 | Written by Limor Fried/Ladyada for Adafruit Industries. | 
| vitpetrik | 4:3618abce1646 | 15 | BSD license, check license.txt for more information | 
| vitpetrik | 4:3618abce1646 | 16 | All text above, and the splash screen must be included in any redistribution | 
| vitpetrik | 4:3618abce1646 | 17 | *********************************************************************/ | 
| vitpetrik | 4:3618abce1646 | 18 | |
| vitpetrik | 4:3618abce1646 | 19 | /* | 
| vitpetrik | 4:3618abce1646 | 20 | * Modified by Neal Horman 7/14/2012 for use in mbed | 
| vitpetrik | 4:3618abce1646 | 21 | * Modified by Jiri Stepanovsky 6/4/2018 for LPE compatibility | 
| vitpetrik | 4:3618abce1646 | 22 | */ | 
| vitpetrik | 4:3618abce1646 | 23 | |
| vitpetrik | 4:3618abce1646 | 24 | #ifndef _SSD1306_MINI_H_ | 
| vitpetrik | 4:3618abce1646 | 25 | #define _SSD1306_MINI_H_ | 
| vitpetrik | 4:3618abce1646 | 26 | |
| vitpetrik | 4:3618abce1646 | 27 | #include "mbed.h" | 
| vitpetrik | 4:3618abce1646 | 28 | #include "Adafruit_GFX.h" | 
| vitpetrik | 4:3618abce1646 | 29 | |
| vitpetrik | 4:3618abce1646 | 30 | #define OLED_WIDTH 128 | 
| vitpetrik | 4:3618abce1646 | 31 | #define OLED_HEIGHT 64 | 
| vitpetrik | 4:3618abce1646 | 32 | #define OLED_BUFFER_SIZE ((OLED_WIDTH*OLED_HEIGHT)/8) | 
| vitpetrik | 4:3618abce1646 | 33 | |
| vitpetrik | 4:3618abce1646 | 34 | // A DigitalOut sub-class that provides a constructed default state | 
| vitpetrik | 4:3618abce1646 | 35 | class DigitalOut2 : public DigitalOut | 
| vitpetrik | 4:3618abce1646 | 36 | { | 
| vitpetrik | 4:3618abce1646 | 37 | public: | 
| vitpetrik | 4:3618abce1646 | 38 | DigitalOut2(PinName pin, bool active = false) : DigitalOut(pin) { write(active); }; | 
| vitpetrik | 4:3618abce1646 | 39 | DigitalOut2& operator= (int value) { write(value); return *this; }; | 
| vitpetrik | 4:3618abce1646 | 40 | DigitalOut2& operator= (DigitalOut2& rhs) { write(rhs.read()); return *this; }; | 
| vitpetrik | 4:3618abce1646 | 41 | operator int() { return read(); }; | 
| vitpetrik | 4:3618abce1646 | 42 | }; | 
| vitpetrik | 4:3618abce1646 | 43 | |
| vitpetrik | 4:3618abce1646 | 44 | #define SSD1306_EXTERNALVCC 0x1 | 
| vitpetrik | 4:3618abce1646 | 45 | #define SSD1306_SWITCHCAPVCC 0x2 | 
| vitpetrik | 4:3618abce1646 | 46 | |
| vitpetrik | 4:3618abce1646 | 47 | /** The pure base class for the SSD1306 display driver. | 
| vitpetrik | 4:3618abce1646 | 48 | * | 
| vitpetrik | 4:3618abce1646 | 49 | * You should derive from this for a new transport interface type, | 
| vitpetrik | 4:3618abce1646 | 50 | * such as the SPI and I2C drivers. | 
| vitpetrik | 4:3618abce1646 | 51 | */ | 
| vitpetrik | 4:3618abce1646 | 52 | class SSD1306_mini : public Adafruit_GFX | 
| vitpetrik | 4:3618abce1646 | 53 | { | 
| vitpetrik | 4:3618abce1646 | 54 | public: | 
| vitpetrik | 4:3618abce1646 | 55 | SSD1306_mini(PinName RST) | 
| vitpetrik | 4:3618abce1646 | 56 | : Adafruit_GFX(OLED_WIDTH,OLED_HEIGHT) | 
| vitpetrik | 4:3618abce1646 | 57 | , rst(RST,false) | 
| vitpetrik | 4:3618abce1646 | 58 | { | 
| vitpetrik | 4:3618abce1646 | 59 | }; | 
| vitpetrik | 4:3618abce1646 | 60 | |
| vitpetrik | 4:3618abce1646 | 61 | void begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC); | 
| vitpetrik | 4:3618abce1646 | 62 | |
| vitpetrik | 4:3618abce1646 | 63 | // These must be implemented in the derived transport driver | 
| vitpetrik | 4:3618abce1646 | 64 | virtual void command(uint8_t c) = 0; | 
| vitpetrik | 4:3618abce1646 | 65 | virtual void data(uint8_t c) = 0; | 
| vitpetrik | 4:3618abce1646 | 66 | virtual void drawPixel(int16_t x, int16_t y, uint16_t color); | 
| vitpetrik | 4:3618abce1646 | 67 | |
| vitpetrik | 4:3618abce1646 | 68 | /// Clear the display buffer | 
| vitpetrik | 4:3618abce1646 | 69 | void clearDisplay(void); | 
| vitpetrik | 4:3618abce1646 | 70 | virtual void invertDisplay(bool i); | 
| vitpetrik | 4:3618abce1646 | 71 | |
| vitpetrik | 4:3618abce1646 | 72 | /// Cause the display to be updated with the buffer content. | 
| vitpetrik | 4:3618abce1646 | 73 | void display(); | 
| vitpetrik | 4:3618abce1646 | 74 | |
| vitpetrik | 4:3618abce1646 | 75 | protected: | 
| vitpetrik | 4:3618abce1646 | 76 | virtual void sendDisplayBuffer() = 0; | 
| vitpetrik | 4:3618abce1646 | 77 | DigitalOut2 rst; | 
| vitpetrik | 4:3618abce1646 | 78 | |
| vitpetrik | 4:3618abce1646 | 79 | // the memory buffer for the LCD | 
| vitpetrik | 4:3618abce1646 | 80 | uint8_t buffer[OLED_BUFFER_SIZE]; | 
| vitpetrik | 4:3618abce1646 | 81 | }; | 
| vitpetrik | 4:3618abce1646 | 82 | |
| vitpetrik | 4:3618abce1646 | 83 | |
| vitpetrik | 4:3618abce1646 | 84 | /** This is the SW SPI SSD1306 display driver transport class | 
| vitpetrik | 4:3618abce1646 | 85 | * | 
| vitpetrik | 4:3618abce1646 | 86 | */ | 
| vitpetrik | 4:3618abce1646 | 87 | class SSD1306_mini_swspi : public SSD1306_mini | 
| vitpetrik | 4:3618abce1646 | 88 | { | 
| vitpetrik | 4:3618abce1646 | 89 | public: | 
| vitpetrik | 4:3618abce1646 | 90 | /** Create a SSD1306 SW SPI transport display driver instance with the specified DC, RST, and CS pins, as well as the display dimentions | 
| vitpetrik | 4:3618abce1646 | 91 | * | 
| vitpetrik | 4:3618abce1646 | 92 | * Required parameters | 
| vitpetrik | 4:3618abce1646 | 93 | * @param D0 - (CLK) pin name | 
| vitpetrik | 4:3618abce1646 | 94 | * @param D1 - (MOSI) pin name | 
| vitpetrik | 4:3618abce1646 | 95 | * @param DC (Data/Command) pin name | 
| vitpetrik | 4:3618abce1646 | 96 | * @param RST (Reset) pin name | 
| vitpetrik | 4:3618abce1646 | 97 | * @param CS (Chip Select) pin name | 
| vitpetrik | 4:3618abce1646 | 98 | */ | 
| vitpetrik | 4:3618abce1646 | 99 | SSD1306_mini_swspi(PinName D0, PinName D1, PinName DC, PinName RST, PinName CS) | 
| vitpetrik | 4:3618abce1646 | 100 | : SSD1306_mini(RST) | 
| vitpetrik | 4:3618abce1646 | 101 | , cs(CS,true) | 
| vitpetrik | 4:3618abce1646 | 102 | , dc(DC,false) | 
| vitpetrik | 4:3618abce1646 | 103 | , clk(D0,true) | 
| vitpetrik | 4:3618abce1646 | 104 | , mosi(D1,false) | 
| vitpetrik | 4:3618abce1646 | 105 | { | 
| vitpetrik | 4:3618abce1646 | 106 | begin(); | 
| vitpetrik | 4:3618abce1646 | 107 | display(); | 
| vitpetrik | 4:3618abce1646 | 108 | }; | 
| vitpetrik | 4:3618abce1646 | 109 | |
| vitpetrik | 4:3618abce1646 | 110 | void swspi_write(uint8_t v) | 
| vitpetrik | 4:3618abce1646 | 111 | { | 
| vitpetrik | 4:3618abce1646 | 112 | for (int bit = 7; bit >= 0; --bit) { | 
| vitpetrik | 4:3618abce1646 | 113 | mosi = ((v >> bit) & 0x01); | 
| vitpetrik | 4:3618abce1646 | 114 | clk = 0; | 
| vitpetrik | 4:3618abce1646 | 115 | clk = 1; | 
| vitpetrik | 4:3618abce1646 | 116 | } | 
| vitpetrik | 4:3618abce1646 | 117 | } | 
| vitpetrik | 4:3618abce1646 | 118 | |
| vitpetrik | 4:3618abce1646 | 119 | virtual void command(uint8_t c) | 
| vitpetrik | 4:3618abce1646 | 120 | { | 
| vitpetrik | 4:3618abce1646 | 121 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 122 | dc = 0; | 
| vitpetrik | 4:3618abce1646 | 123 | cs = 0; | 
| vitpetrik | 4:3618abce1646 | 124 | swspi_write(c); | 
| vitpetrik | 4:3618abce1646 | 125 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 126 | }; | 
| vitpetrik | 4:3618abce1646 | 127 | |
| vitpetrik | 4:3618abce1646 | 128 | virtual void data(uint8_t c) | 
| vitpetrik | 4:3618abce1646 | 129 | { | 
| vitpetrik | 4:3618abce1646 | 130 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 131 | dc = 1; | 
| vitpetrik | 4:3618abce1646 | 132 | cs = 0; | 
| vitpetrik | 4:3618abce1646 | 133 | swspi_write(c); | 
| vitpetrik | 4:3618abce1646 | 134 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 135 | }; | 
| vitpetrik | 4:3618abce1646 | 136 | |
| vitpetrik | 4:3618abce1646 | 137 | protected: | 
| vitpetrik | 4:3618abce1646 | 138 | virtual void sendDisplayBuffer() | 
| vitpetrik | 4:3618abce1646 | 139 | { | 
| vitpetrik | 4:3618abce1646 | 140 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 141 | dc = 1; | 
| vitpetrik | 4:3618abce1646 | 142 | cs = 0; | 
| vitpetrik | 4:3618abce1646 | 143 | |
| vitpetrik | 4:3618abce1646 | 144 | for(uint16_t i=0, q=OLED_BUFFER_SIZE; i<q; i++) | 
| vitpetrik | 4:3618abce1646 | 145 | swspi_write(buffer[i]); | 
| vitpetrik | 4:3618abce1646 | 146 | |
| vitpetrik | 4:3618abce1646 | 147 | if(OLED_HEIGHT == 32) | 
| vitpetrik | 4:3618abce1646 | 148 | { | 
| vitpetrik | 4:3618abce1646 | 149 | for(uint16_t i=0, q=OLED_BUFFER_SIZE; i<q; i++) | 
| vitpetrik | 4:3618abce1646 | 150 | swspi_write(0); | 
| vitpetrik | 4:3618abce1646 | 151 | } | 
| vitpetrik | 4:3618abce1646 | 152 | |
| vitpetrik | 4:3618abce1646 | 153 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 154 | }; | 
| vitpetrik | 4:3618abce1646 | 155 | |
| vitpetrik | 4:3618abce1646 | 156 | DigitalOut2 cs, dc, clk, mosi; | 
| vitpetrik | 4:3618abce1646 | 157 | }; | 
| vitpetrik | 4:3618abce1646 | 158 | |
| vitpetrik | 4:3618abce1646 | 159 | |
| vitpetrik | 4:3618abce1646 | 160 | /** This is the SPI SSD1306 display driver transport class | 
| vitpetrik | 4:3618abce1646 | 161 | * | 
| vitpetrik | 4:3618abce1646 | 162 | */ | 
| vitpetrik | 4:3618abce1646 | 163 | class SSD1306_mini_spi : public SSD1306_mini | 
| vitpetrik | 4:3618abce1646 | 164 | { | 
| vitpetrik | 4:3618abce1646 | 165 | public: | 
| vitpetrik | 4:3618abce1646 | 166 | /** Create a SSD1306 SPI transport display driver instance with the specified DC, RST, and CS pins, as well as the display dimentions | 
| vitpetrik | 4:3618abce1646 | 167 | * | 
| vitpetrik | 4:3618abce1646 | 168 | * Required parameters | 
| vitpetrik | 4:3618abce1646 | 169 | * @param spi - a reference to an initialized SPI object | 
| vitpetrik | 4:3618abce1646 | 170 | * @param DC (Data/Command) pin name | 
| vitpetrik | 4:3618abce1646 | 171 | * @param RST (Reset) pin name | 
| vitpetrik | 4:3618abce1646 | 172 | * @param CS (Chip Select) pin name | 
| vitpetrik | 4:3618abce1646 | 173 | */ | 
| vitpetrik | 4:3618abce1646 | 174 | SSD1306_mini_spi(SPI &spi, PinName DC, PinName RST, PinName CS) | 
| vitpetrik | 4:3618abce1646 | 175 | : SSD1306_mini(RST) | 
| vitpetrik | 4:3618abce1646 | 176 | , cs(CS,true) | 
| vitpetrik | 4:3618abce1646 | 177 | , dc(DC,false) | 
| vitpetrik | 4:3618abce1646 | 178 | , mspi(spi) | 
| vitpetrik | 4:3618abce1646 | 179 | { | 
| vitpetrik | 4:3618abce1646 | 180 | begin(); | 
| vitpetrik | 4:3618abce1646 | 181 | display(); | 
| vitpetrik | 4:3618abce1646 | 182 | }; | 
| vitpetrik | 4:3618abce1646 | 183 | |
| vitpetrik | 4:3618abce1646 | 184 | virtual void command(uint8_t c) | 
| vitpetrik | 4:3618abce1646 | 185 | { | 
| vitpetrik | 4:3618abce1646 | 186 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 187 | dc = 0; | 
| vitpetrik | 4:3618abce1646 | 188 | cs = 0; | 
| vitpetrik | 4:3618abce1646 | 189 | mspi.write(c); | 
| vitpetrik | 4:3618abce1646 | 190 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 191 | }; | 
| vitpetrik | 4:3618abce1646 | 192 | |
| vitpetrik | 4:3618abce1646 | 193 | virtual void data(uint8_t c) | 
| vitpetrik | 4:3618abce1646 | 194 | { | 
| vitpetrik | 4:3618abce1646 | 195 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 196 | dc = 1; | 
| vitpetrik | 4:3618abce1646 | 197 | cs = 0; | 
| vitpetrik | 4:3618abce1646 | 198 | mspi.write(c); | 
| vitpetrik | 4:3618abce1646 | 199 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 200 | }; | 
| vitpetrik | 4:3618abce1646 | 201 | |
| vitpetrik | 4:3618abce1646 | 202 | protected: | 
| vitpetrik | 4:3618abce1646 | 203 | virtual void sendDisplayBuffer() | 
| vitpetrik | 4:3618abce1646 | 204 | { | 
| vitpetrik | 4:3618abce1646 | 205 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 206 | dc = 1; | 
| vitpetrik | 4:3618abce1646 | 207 | cs = 0; | 
| vitpetrik | 4:3618abce1646 | 208 | |
| vitpetrik | 4:3618abce1646 | 209 | for(uint16_t i=0, q=OLED_BUFFER_SIZE; i<q; i++) | 
| vitpetrik | 4:3618abce1646 | 210 | mspi.write(buffer[i]); | 
| vitpetrik | 4:3618abce1646 | 211 | |
| vitpetrik | 4:3618abce1646 | 212 | if(OLED_HEIGHT == 32) | 
| vitpetrik | 4:3618abce1646 | 213 | { | 
| vitpetrik | 4:3618abce1646 | 214 | for(uint16_t i=0, q=OLED_BUFFER_SIZE; i<q; i++) | 
| vitpetrik | 4:3618abce1646 | 215 | mspi.write(0); | 
| vitpetrik | 4:3618abce1646 | 216 | } | 
| vitpetrik | 4:3618abce1646 | 217 | |
| vitpetrik | 4:3618abce1646 | 218 | cs = 1; | 
| vitpetrik | 4:3618abce1646 | 219 | }; | 
| vitpetrik | 4:3618abce1646 | 220 | |
| vitpetrik | 4:3618abce1646 | 221 | DigitalOut2 cs, dc; | 
| vitpetrik | 4:3618abce1646 | 222 | SPI &mspi; | 
| vitpetrik | 4:3618abce1646 | 223 | }; | 
| vitpetrik | 4:3618abce1646 | 224 | |
| vitpetrik | 4:3618abce1646 | 225 | |
| vitpetrik | 4:3618abce1646 | 226 | /** This is the I2C SSD1306 display driver transport class | 
| vitpetrik | 4:3618abce1646 | 227 | * | 
| vitpetrik | 4:3618abce1646 | 228 | */ | 
| vitpetrik | 4:3618abce1646 | 229 | class SSD1306_mini_i2c : public SSD1306_mini | 
| vitpetrik | 4:3618abce1646 | 230 | { | 
| vitpetrik | 4:3618abce1646 | 231 | public: | 
| vitpetrik | 4:3618abce1646 | 232 | #define SSD_I2C_ADDRESS 0x78 | 
| vitpetrik | 4:3618abce1646 | 233 | /** Create a SSD1306 I2C transport display driver instance with the specified RST pin name, the I2C address, as well as the display dimensions | 
| vitpetrik | 4:3618abce1646 | 234 | * | 
| vitpetrik | 4:3618abce1646 | 235 | * Required parameters | 
| vitpetrik | 4:3618abce1646 | 236 | * @param i2c - A reference to an initialized I2C object | 
| vitpetrik | 4:3618abce1646 | 237 | * @param RST - The Reset pin name | 
| vitpetrik | 4:3618abce1646 | 238 | * | 
| vitpetrik | 4:3618abce1646 | 239 | * Optional parameters | 
| vitpetrik | 4:3618abce1646 | 240 | * @param i2cAddress - The i2c address of the display | 
| vitpetrik | 4:3618abce1646 | 241 | */ | 
| vitpetrik | 4:3618abce1646 | 242 | SSD1306_mini_i2c(I2C &i2c, PinName RST, uint8_t i2cAddress = SSD_I2C_ADDRESS) | 
| vitpetrik | 4:3618abce1646 | 243 | : SSD1306_mini(RST) | 
| vitpetrik | 4:3618abce1646 | 244 | , mi2c(i2c) | 
| vitpetrik | 4:3618abce1646 | 245 | , mi2cAddress(i2cAddress) | 
| vitpetrik | 4:3618abce1646 | 246 | { | 
| vitpetrik | 4:3618abce1646 | 247 | begin(); | 
| vitpetrik | 4:3618abce1646 | 248 | display(); | 
| vitpetrik | 4:3618abce1646 | 249 | }; | 
| vitpetrik | 4:3618abce1646 | 250 | |
| vitpetrik | 4:3618abce1646 | 251 | virtual void command(uint8_t c) | 
| vitpetrik | 4:3618abce1646 | 252 | { | 
| vitpetrik | 4:3618abce1646 | 253 | char buff[2]; | 
| vitpetrik | 4:3618abce1646 | 254 | buff[0] = 0; // Command Mode | 
| vitpetrik | 4:3618abce1646 | 255 | buff[1] = c; | 
| vitpetrik | 4:3618abce1646 | 256 | mi2c.write(mi2cAddress, buff, sizeof(buff)); | 
| vitpetrik | 4:3618abce1646 | 257 | } | 
| vitpetrik | 4:3618abce1646 | 258 | |
| vitpetrik | 4:3618abce1646 | 259 | virtual void data(uint8_t c) | 
| vitpetrik | 4:3618abce1646 | 260 | { | 
| vitpetrik | 4:3618abce1646 | 261 | char buff[2]; | 
| vitpetrik | 4:3618abce1646 | 262 | buff[0] = 0x40; // Data Mode | 
| vitpetrik | 4:3618abce1646 | 263 | buff[1] = c; | 
| vitpetrik | 4:3618abce1646 | 264 | mi2c.write(mi2cAddress, buff, sizeof(buff)); | 
| vitpetrik | 4:3618abce1646 | 265 | }; | 
| vitpetrik | 4:3618abce1646 | 266 | |
| vitpetrik | 4:3618abce1646 | 267 | protected: | 
| vitpetrik | 4:3618abce1646 | 268 | virtual void sendDisplayBuffer() | 
| vitpetrik | 4:3618abce1646 | 269 | { | 
| vitpetrik | 4:3618abce1646 | 270 | char buff[17]; | 
| vitpetrik | 4:3618abce1646 | 271 | buff[0] = 0x40; // Data Mode | 
| vitpetrik | 4:3618abce1646 | 272 | |
| vitpetrik | 4:3618abce1646 | 273 | // send display buffer in 16 byte chunks | 
| vitpetrik | 4:3618abce1646 | 274 | for(uint16_t i=0, q=OLED_BUFFER_SIZE; i<q; i+=16 ) | 
| vitpetrik | 4:3618abce1646 | 275 | { uint8_t x ; | 
| vitpetrik | 4:3618abce1646 | 276 | |
| vitpetrik | 4:3618abce1646 | 277 | // TODO - this will segfault if buffer.size() % 16 != 0 | 
| vitpetrik | 4:3618abce1646 | 278 | for(x=1; x<sizeof(buff); x++) | 
| vitpetrik | 4:3618abce1646 | 279 | buff[x] = buffer[i+x-1]; | 
| vitpetrik | 4:3618abce1646 | 280 | mi2c.write(mi2cAddress, buff, sizeof(buff)); | 
| vitpetrik | 4:3618abce1646 | 281 | } | 
| vitpetrik | 4:3618abce1646 | 282 | }; | 
| vitpetrik | 4:3618abce1646 | 283 | |
| vitpetrik | 4:3618abce1646 | 284 | I2C &mi2c; | 
| vitpetrik | 4:3618abce1646 | 285 | uint8_t mi2cAddress; | 
| vitpetrik | 4:3618abce1646 | 286 | }; | 
| vitpetrik | 4:3618abce1646 | 287 | |
| vitpetrik | 4:3618abce1646 | 288 | #endif |