Dependents:   Affich_Lum_Moist

Fork of SSD1306 by Jonathan Gaul

Committer:
Aureb29
Date:
Tue Oct 17 10:18:18 2017 +0000
Revision:
4:3bfab336f638
Parent:
3:1d9df877c90a
Affichage du capteur de luminosit? et de l'humidit? du sol;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Byrn 0:21cb91208386 1 #include "mbed.h"
Byrn 0:21cb91208386 2 #include "ssd1306.h"
Byrn 0:21cb91208386 3
Byrn 3:1d9df877c90a 4 #include <stdarg.h>
Byrn 3:1d9df877c90a 5
Byrn 0:21cb91208386 6 SSD1306::SSD1306(PinName cs, PinName rs, PinName dc, PinName clk, PinName data)
Byrn 1:1d58d378221c 7 : _spi(data, NC, clk),
Byrn 1:1d58d378221c 8 _cs(cs),
Byrn 1:1d58d378221c 9 _reset(rs),
Byrn 3:1d9df877c90a 10 _dc(dc),
Byrn 3:1d9df877c90a 11 _cursor_x(0),
Byrn 3:1d9df877c90a 12 _cursor_y(0)
Byrn 0:21cb91208386 13 {
Byrn 0:21cb91208386 14 }
Byrn 0:21cb91208386 15
Byrn 0:21cb91208386 16 void SSD1306::off()
Byrn 0:21cb91208386 17 {
Byrn 2:e479b0296757 18 _send_command(0xAE);
Byrn 0:21cb91208386 19 }
Byrn 0:21cb91208386 20
Byrn 0:21cb91208386 21 void SSD1306::on()
Byrn 0:21cb91208386 22 {
Byrn 2:e479b0296757 23 _send_command(0xAF);
Byrn 0:21cb91208386 24 }
Byrn 0:21cb91208386 25
Byrn 1:1d58d378221c 26 void SSD1306::sleep()
Byrn 1:1d58d378221c 27 {
Byrn 1:1d58d378221c 28 _send_command(0xAE);
Byrn 1:1d58d378221c 29 }
Byrn 1:1d58d378221c 30
Byrn 1:1d58d378221c 31 void SSD1306::wake()
Byrn 0:21cb91208386 32 {
Byrn 1:1d58d378221c 33 _send_command(0xAF);
Byrn 1:1d58d378221c 34 }
Byrn 1:1d58d378221c 35
Byrn 1:1d58d378221c 36 void SSD1306::set_inverse(unsigned char value)
Byrn 1:1d58d378221c 37 {
Byrn 1:1d58d378221c 38 _send_command(value ? 0xA7 : 0xA6);
Byrn 1:1d58d378221c 39 }
Byrn 1:1d58d378221c 40
Byrn 1:1d58d378221c 41 void SSD1306::set_display_offset(unsigned char value)
Byrn 1:1d58d378221c 42 {
Byrn 1:1d58d378221c 43 _send_command(0xD3);
Byrn 2:e479b0296757 44 _send_command(value & 0x3F);
Byrn 0:21cb91208386 45 }
Byrn 0:21cb91208386 46
Byrn 1:1d58d378221c 47 void SSD1306::set_contrast(unsigned char value)
Byrn 1:1d58d378221c 48 {
Byrn 1:1d58d378221c 49 _send_command(0x81);
Byrn 1:1d58d378221c 50 _send_command(value);
Byrn 1:1d58d378221c 51 }
Byrn 1:1d58d378221c 52
Byrn 1:1d58d378221c 53 void SSD1306::set_display_start_line(unsigned char value)
Byrn 1:1d58d378221c 54 {
Byrn 1:1d58d378221c 55 _send_command(0x40 | value);
Byrn 1:1d58d378221c 56 }
Byrn 1:1d58d378221c 57
Byrn 2:e479b0296757 58 void SSD1306::set_segment_remap(unsigned char value)
Byrn 0:21cb91208386 59 {
Byrn 1:1d58d378221c 60 _send_command(value ? 0xA1 : 0xA0);
Byrn 1:1d58d378221c 61 }
Byrn 1:1d58d378221c 62
Byrn 1:1d58d378221c 63 void SSD1306::set_multiplex_ratio(unsigned char value)
Byrn 1:1d58d378221c 64 {
Byrn 2:e479b0296757 65 _send_command(0xA8);
Byrn 2:e479b0296757 66 _send_command(value & 0x3F);
Byrn 1:1d58d378221c 67 }
Byrn 1:1d58d378221c 68
Byrn 1:1d58d378221c 69 void SSD1306::set_com_output_scan_direction(unsigned char value)
Byrn 1:1d58d378221c 70 {
Byrn 1:1d58d378221c 71 _send_command(value ? 0xC8 : 0xC0);
Byrn 1:1d58d378221c 72 }
Byrn 1:1d58d378221c 73
Byrn 1:1d58d378221c 74 void SSD1306::set_com_pins_hardware_configuration(unsigned char sequential, unsigned char lr_remap)
Byrn 1:1d58d378221c 75 {
Byrn 1:1d58d378221c 76 _send_command(0xDA);
Byrn 2:e479b0296757 77 _send_command(0x02 | ((sequential & 1) << 4) | ((lr_remap & 1) << 5));
Byrn 2:e479b0296757 78 }
Byrn 2:e479b0296757 79
Byrn 2:e479b0296757 80 void SSD1306::start_horizontal_scroll(unsigned char direction, unsigned char start, unsigned char end, unsigned char interval)
Byrn 2:e479b0296757 81 {
Byrn 2:e479b0296757 82 _send_command(direction ? 0x27 : 0x26);
Byrn 2:e479b0296757 83 _send_command(0x00);
Byrn 2:e479b0296757 84 _send_command(start & 0x07);
Byrn 2:e479b0296757 85 switch (interval) {
Byrn 2:e479b0296757 86 case 2: _send_command(0x07); break; // 111b
Byrn 2:e479b0296757 87 case 3: _send_command(0x04); break; // 100b
Byrn 2:e479b0296757 88 case 4: _send_command(0x05); break; // 101b
Byrn 2:e479b0296757 89 case 5: _send_command(0x00); break; // 000b
Byrn 2:e479b0296757 90 case 25: _send_command(0x06); break; // 110b
Byrn 2:e479b0296757 91 case 64: _send_command(0x01); break; // 001b
Byrn 2:e479b0296757 92 case 128: _send_command(0x02); break; // 010b
Byrn 2:e479b0296757 93 case 256: _send_command(0x03); break; // 011b
Byrn 2:e479b0296757 94 default:
Byrn 2:e479b0296757 95 // default to 2 frame interval
Byrn 2:e479b0296757 96 _send_command(0x07); break;
Byrn 2:e479b0296757 97 }
Byrn 2:e479b0296757 98 _send_command(end & 0x07);
Byrn 2:e479b0296757 99 _send_command(0x00);
Byrn 2:e479b0296757 100 _send_command(0xFF);
Byrn 2:e479b0296757 101
Byrn 2:e479b0296757 102 // activate scroll
Byrn 2:e479b0296757 103 _send_command(0x2F);
Byrn 2:e479b0296757 104 }
Byrn 2:e479b0296757 105
Byrn 2:e479b0296757 106 void SSD1306::start_vertical_and_horizontal_scroll(unsigned char direction, unsigned char start, unsigned char end, unsigned char interval, unsigned char vertical_offset)
Byrn 2:e479b0296757 107 {
Byrn 2:e479b0296757 108 _send_command(direction ? 0x2A : 0x29);
Byrn 2:e479b0296757 109 _send_command(0x00);
Byrn 2:e479b0296757 110 _send_command(start & 0x07);
Byrn 2:e479b0296757 111 switch (interval) {
Byrn 2:e479b0296757 112 case 2: _send_command(0x07); break; // 111b
Byrn 2:e479b0296757 113 case 3: _send_command(0x04); break; // 100b
Byrn 2:e479b0296757 114 case 4: _send_command(0x05); break; // 101b
Byrn 2:e479b0296757 115 case 5: _send_command(0x00); break; // 000b
Byrn 2:e479b0296757 116 case 25: _send_command(0x06); break; // 110b
Byrn 2:e479b0296757 117 case 64: _send_command(0x01); break; // 001b
Byrn 2:e479b0296757 118 case 128: _send_command(0x02); break; // 010b
Byrn 2:e479b0296757 119 case 256: _send_command(0x03); break; // 011b
Byrn 2:e479b0296757 120 default:
Byrn 2:e479b0296757 121 // default to 2 frame interval
Byrn 2:e479b0296757 122 _send_command(0x07); break;
Byrn 2:e479b0296757 123 }
Byrn 2:e479b0296757 124 _send_command(end & 0x07);
Byrn 2:e479b0296757 125 _send_command(vertical_offset);
Byrn 2:e479b0296757 126
Byrn 2:e479b0296757 127 // activate scroll
Byrn 2:e479b0296757 128 _send_command(0x2F);
Byrn 2:e479b0296757 129 }
Byrn 2:e479b0296757 130
Byrn 2:e479b0296757 131 void SSD1306::stop_scroll()
Byrn 2:e479b0296757 132 {
Byrn 2:e479b0296757 133 // all scroll configurations are removed from the display when executing this command.
Byrn 2:e479b0296757 134 _send_command(0x2E);
Byrn 2:e479b0296757 135 }
Byrn 2:e479b0296757 136
Byrn 2:e479b0296757 137 void SSD1306::pam_set_start_address(unsigned char address)
Byrn 2:e479b0296757 138 {
Byrn 2:e479b0296757 139 // "Set Lower Column Start Address for Page Addressing Mode"
Byrn 2:e479b0296757 140 _send_command(address & 0x0F);
Byrn 2:e479b0296757 141
Byrn 2:e479b0296757 142 // "Set Higher Column Start Address for Page Addressing Mode"
Byrn 2:e479b0296757 143 _send_command((address << 4) & 0x0F);
Byrn 2:e479b0296757 144 }
Byrn 2:e479b0296757 145
Byrn 2:e479b0296757 146 void SSD1306::set_memory_addressing_mode(unsigned char mode)
Byrn 2:e479b0296757 147 {
Byrn 2:e479b0296757 148 _send_command(0x20);
Byrn 2:e479b0296757 149 _send_command(mode & 0x3);
Byrn 2:e479b0296757 150 }
Byrn 2:e479b0296757 151
Byrn 2:e479b0296757 152 void SSD1306::hv_set_column_address(unsigned char start, unsigned char end)
Byrn 2:e479b0296757 153 {
Byrn 2:e479b0296757 154 _send_command(0x21);
Byrn 2:e479b0296757 155 _send_command(start & 0x7F);
Byrn 2:e479b0296757 156 _send_command(end & 0x7F);
Byrn 2:e479b0296757 157 }
Byrn 2:e479b0296757 158
Byrn 2:e479b0296757 159 void SSD1306::hv_set_page_address(unsigned char start, unsigned char end)
Byrn 2:e479b0296757 160 {
Byrn 2:e479b0296757 161 _send_command(0x22);
Byrn 2:e479b0296757 162 _send_command(start & 0x07);
Byrn 2:e479b0296757 163 _send_command(end & 0x07);
Byrn 2:e479b0296757 164 }
Byrn 2:e479b0296757 165
Byrn 2:e479b0296757 166 void SSD1306::pam_set_page_start(unsigned char address)
Byrn 2:e479b0296757 167 {
Byrn 2:e479b0296757 168 _send_command(0xB0 | (address & 0x07));
Byrn 2:e479b0296757 169 }
Byrn 2:e479b0296757 170
Byrn 2:e479b0296757 171 void SSD1306::set_display_clock_ratio_and_frequency(unsigned char ratio, unsigned char frequency)
Byrn 2:e479b0296757 172 {
Byrn 2:e479b0296757 173 _send_command(0xD5);
Byrn 2:e479b0296757 174 _send_command((ratio & 0x0F) | ((frequency & 0x0F) << 4));
Byrn 2:e479b0296757 175 }
Byrn 2:e479b0296757 176
Byrn 2:e479b0296757 177 void SSD1306::set_precharge_period(unsigned char phase1, unsigned char phase2)
Byrn 2:e479b0296757 178 {
Byrn 2:e479b0296757 179 _send_command(0xD9);
Byrn 2:e479b0296757 180 _send_command((phase1 & 0x0F) | ((phase2 & 0x0F ) << 4));
Byrn 2:e479b0296757 181 }
Byrn 2:e479b0296757 182
Byrn 2:e479b0296757 183 void SSD1306::set_vcomh_deselect_level(unsigned char level)
Byrn 2:e479b0296757 184 {
Byrn 2:e479b0296757 185 _send_command(0xDB);
Byrn 2:e479b0296757 186 _send_command((level & 0x03) << 4);
Byrn 2:e479b0296757 187 }
Byrn 2:e479b0296757 188
Byrn 2:e479b0296757 189 void SSD1306::nop()
Byrn 2:e479b0296757 190 {
Byrn 2:e479b0296757 191 _send_command(0xE3);
Byrn 2:e479b0296757 192 }
Byrn 2:e479b0296757 193
Byrn 2:e479b0296757 194 void SSD1306::set_charge_pump_enable(unsigned char enable)
Byrn 2:e479b0296757 195 {
Byrn 2:e479b0296757 196 _send_command(0x8D);
Byrn 2:e479b0296757 197 _send_command(enable ? 0x14 : 0x10);
Byrn 0:21cb91208386 198 }
Byrn 0:21cb91208386 199
Byrn 0:21cb91208386 200 void SSD1306::initialise()
Byrn 0:21cb91208386 201 {
Byrn 1:1d58d378221c 202 // Init
Byrn 0:21cb91208386 203 _reset = 1;
Byrn 0:21cb91208386 204 wait(0.01);
Byrn 0:21cb91208386 205 _reset = 0;
Byrn 0:21cb91208386 206 wait(0.10);
Byrn 0:21cb91208386 207 _reset = 1;
Byrn 0:21cb91208386 208
Byrn 0:21cb91208386 209 off();
Byrn 2:e479b0296757 210
Byrn 2:e479b0296757 211 set_display_clock_ratio_and_frequency(0, 8);
Byrn 2:e479b0296757 212 set_multiplex_ratio(0x3F); // 1/64 duty
Byrn 2:e479b0296757 213 set_precharge_period(0xF, 0x01);
Byrn 2:e479b0296757 214 set_display_offset(0);
Byrn 2:e479b0296757 215 set_display_start_line(0);
Byrn 2:e479b0296757 216 set_charge_pump_enable(1);
Byrn 3:1d9df877c90a 217 set_memory_addressing_mode(0); // horizontal addressing mode; across then down
Byrn 2:e479b0296757 218 set_segment_remap(1);
Byrn 2:e479b0296757 219 set_com_output_scan_direction(1);
Byrn 2:e479b0296757 220 set_com_pins_hardware_configuration(1, 0);
Byrn 1:1d58d378221c 221 set_contrast(0xFF);
Byrn 2:e479b0296757 222 set_vcomh_deselect_level(1);
Byrn 1:1d58d378221c 223
Byrn 2:e479b0296757 224 wake();
Byrn 2:e479b0296757 225 set_inverse(0);
Byrn 0:21cb91208386 226
Byrn 2:e479b0296757 227 hv_set_column_address(0, 127);
Byrn 2:e479b0296757 228 hv_set_page_address(0, 7);
Byrn 0:21cb91208386 229
Byrn 2:e479b0296757 230 pam_set_start_address(0);
Byrn 2:e479b0296757 231 pam_set_page_start(0);
Byrn 2:e479b0296757 232
Byrn 2:e479b0296757 233 // set_precharge_period(2, 2);
Byrn 0:21cb91208386 234 }
Byrn 0:21cb91208386 235
Byrn 0:21cb91208386 236 void SSD1306::update()
Byrn 0:21cb91208386 237 {
Byrn 2:e479b0296757 238 hv_set_column_address(0, 127);
Byrn 2:e479b0296757 239 hv_set_page_address(0, 7);
Byrn 0:21cb91208386 240
Byrn 0:21cb91208386 241 for (int i = 0; i < 1024; i++)
Byrn 0:21cb91208386 242 _send_data(_screen[i]);
Byrn 0:21cb91208386 243 }
Byrn 0:21cb91208386 244
Byrn 0:21cb91208386 245 void SSD1306::set_pixel(int x, int y)
Byrn 0:21cb91208386 246 {
Byrn 0:21cb91208386 247 if (x >= SSD1306_LCDWIDTH || y >= SSD1306_LCDHEIGHT) return;
Byrn 0:21cb91208386 248
Byrn 0:21cb91208386 249 _screen[x + (y / 8) * 128] |= 1 << (y % 8);
Byrn 0:21cb91208386 250 }
Byrn 0:21cb91208386 251
Byrn 0:21cb91208386 252 void SSD1306::clear_pixel(int x, int y)
Byrn 0:21cb91208386 253 {
Byrn 0:21cb91208386 254 if (x >= SSD1306_LCDWIDTH || y >= SSD1306_LCDHEIGHT) return;
Byrn 0:21cb91208386 255
Byrn 0:21cb91208386 256 _screen[x + (y / 8) * 128] &= ~(1 << (y % 8));
Byrn 0:21cb91208386 257 }
Byrn 0:21cb91208386 258
Byrn 0:21cb91208386 259 void SSD1306::line(int x0, int y0, int x1, int y1) {
Byrn 0:21cb91208386 260 int steep = abs(y1 - y0) > abs(x1 - x0);
Byrn 0:21cb91208386 261 int t;
Byrn 0:21cb91208386 262
Byrn 0:21cb91208386 263 if (steep) {
Byrn 0:21cb91208386 264 t = x0; x0 = y0; y0 = t;
Byrn 0:21cb91208386 265 t = x1; x1 = y1; y1 = t;
Byrn 0:21cb91208386 266 }
Byrn 0:21cb91208386 267
Byrn 0:21cb91208386 268 if (x0 > x1) {
Byrn 0:21cb91208386 269 t = x0; x0 = x1; x1 = t;
Byrn 0:21cb91208386 270 t = y0; y0 = y1; y1 = t;
Byrn 0:21cb91208386 271 }
Byrn 0:21cb91208386 272
Byrn 0:21cb91208386 273 int dx, dy;
Byrn 0:21cb91208386 274
Byrn 0:21cb91208386 275 dx = x1 - x0;
Byrn 0:21cb91208386 276 dy = abs(y1 - y0);
Byrn 0:21cb91208386 277
Byrn 0:21cb91208386 278 int err = dx / 2;
Byrn 0:21cb91208386 279 int ystep;
Byrn 0:21cb91208386 280
Byrn 0:21cb91208386 281 if (y0 < y1) {
Byrn 0:21cb91208386 282 ystep = 1;
Byrn 0:21cb91208386 283 } else {
Byrn 0:21cb91208386 284 ystep = -1;}
Byrn 0:21cb91208386 285
Byrn 0:21cb91208386 286 for (; x0<x1; x0++) {
Byrn 0:21cb91208386 287 if (steep) {
Byrn 0:21cb91208386 288 set_pixel(y0, x0);
Byrn 0:21cb91208386 289 } else {
Byrn 0:21cb91208386 290 set_pixel(x0, y0);
Byrn 0:21cb91208386 291 }
Byrn 0:21cb91208386 292 err -= dy;
Byrn 0:21cb91208386 293 if (err < 0) {
Byrn 0:21cb91208386 294 y0 += ystep;
Byrn 0:21cb91208386 295 err += dx;
Byrn 0:21cb91208386 296 }
Byrn 0:21cb91208386 297 }
Byrn 0:21cb91208386 298 }
Byrn 0:21cb91208386 299
Byrn 3:1d9df877c90a 300 void SSD1306::set_font(unsigned char *font, unsigned int width)
Byrn 0:21cb91208386 301 {
Byrn 3:1d9df877c90a 302 _console_font_data = font;
Byrn 3:1d9df877c90a 303 _console_font_width = width;
Byrn 3:1d9df877c90a 304 }
Byrn 3:1d9df877c90a 305
Byrn 3:1d9df877c90a 306 void SSD1306::set_double_height_text(unsigned int double_height)
Byrn 3:1d9df877c90a 307 {
Byrn 3:1d9df877c90a 308 _double_height_text = double_height;
Byrn 0:21cb91208386 309 }
Byrn 0:21cb91208386 310
Byrn 3:1d9df877c90a 311 void SSD1306::putc(unsigned char c)
Byrn 0:21cb91208386 312 {
Byrn 3:1d9df877c90a 313 while (_cursor_x >= (128 / _console_font_width))
Byrn 3:1d9df877c90a 314 {
Byrn 3:1d9df877c90a 315 _cursor_x -= (128 / _console_font_width);
Byrn 3:1d9df877c90a 316 _cursor_y++;
Byrn 3:1d9df877c90a 317 }
Byrn 3:1d9df877c90a 318
Byrn 3:1d9df877c90a 319 while (_cursor_y > 7)
Byrn 3:1d9df877c90a 320 {
Byrn 3:1d9df877c90a 321 scroll_up();
Byrn 3:1d9df877c90a 322 }
Byrn 3:1d9df877c90a 323
Byrn 3:1d9df877c90a 324 switch (c)
Byrn 3:1d9df877c90a 325 {
Byrn 3:1d9df877c90a 326 case '\n':
Byrn 3:1d9df877c90a 327 _cursor_y++;
Byrn 3:1d9df877c90a 328 break;
Byrn 3:1d9df877c90a 329
Byrn 3:1d9df877c90a 330 case '\r':
Byrn 3:1d9df877c90a 331 _cursor_x = 0;
Byrn 3:1d9df877c90a 332 break;
Byrn 3:1d9df877c90a 333
Byrn 3:1d9df877c90a 334 case '\t':
Byrn 3:1d9df877c90a 335 _cursor_x = (_cursor_x + 4) % 4;
Byrn 3:1d9df877c90a 336 break;
Byrn 3:1d9df877c90a 337
Byrn 3:1d9df877c90a 338 default:
Byrn 3:1d9df877c90a 339 for (int b = 0; b < _console_font_width; b++)
Byrn 3:1d9df877c90a 340 {
Byrn 3:1d9df877c90a 341 _screen[_cursor_x * _console_font_width + _cursor_y * 128 + b] = _console_font_data[(c - FONT_START) * _console_font_width + b];
Byrn 3:1d9df877c90a 342 }
Byrn 3:1d9df877c90a 343
Byrn 3:1d9df877c90a 344 _cursor_x++;
Byrn 3:1d9df877c90a 345 }
Byrn 3:1d9df877c90a 346 }
Byrn 3:1d9df877c90a 347
Byrn 3:1d9df877c90a 348 void SSD1306::scroll_up()
Byrn 3:1d9df877c90a 349 {
Byrn 3:1d9df877c90a 350 for (int y = 1; y <= 7; y++)
Byrn 3:1d9df877c90a 351 {
Byrn 3:1d9df877c90a 352 for (int x = 0; x < 128; x++)
Byrn 3:1d9df877c90a 353 {
Byrn 3:1d9df877c90a 354 _screen[x + 128 * (y - 1)] = _screen[x + 128 * y];
Byrn 3:1d9df877c90a 355 }
Byrn 3:1d9df877c90a 356 }
Byrn 0:21cb91208386 357
Byrn 3:1d9df877c90a 358 for (int x = 0; x < 128; x++)
Byrn 3:1d9df877c90a 359 {
Byrn 3:1d9df877c90a 360 _screen[x + 128 * 7] = 0;
Byrn 3:1d9df877c90a 361 }
Byrn 3:1d9df877c90a 362
Byrn 3:1d9df877c90a 363 _cursor_y--;
Byrn 3:1d9df877c90a 364 }
Byrn 3:1d9df877c90a 365
Byrn 3:1d9df877c90a 366 void SSD1306::printf(const char *format, ...)
Byrn 3:1d9df877c90a 367 {
Byrn 3:1d9df877c90a 368 static char buffer[128];
Byrn 3:1d9df877c90a 369
Byrn 3:1d9df877c90a 370 va_list args;
Byrn 3:1d9df877c90a 371 va_start(args, format);
Byrn 3:1d9df877c90a 372 vsprintf(buffer, format, args);
Byrn 3:1d9df877c90a 373 va_end(args);
Byrn 3:1d9df877c90a 374
Byrn 3:1d9df877c90a 375 char *c = (char *)&buffer;
Byrn 3:1d9df877c90a 376 while (*c != 0)
Byrn 3:1d9df877c90a 377 {
Byrn 3:1d9df877c90a 378 putc(*c++);
Byrn 3:1d9df877c90a 379 }
Byrn 0:21cb91208386 380 }
Byrn 0:21cb91208386 381
Byrn 0:21cb91208386 382 void SSD1306::clear()
Byrn 0:21cb91208386 383 {
Byrn 0:21cb91208386 384 for (int i = 0; i < 1024; i++)
Byrn 0:21cb91208386 385 _screen[i] = 0;
Byrn 3:1d9df877c90a 386
Byrn 3:1d9df877c90a 387 _cursor_x = 0;
Byrn 3:1d9df877c90a 388 _cursor_y = 0;
Byrn 0:21cb91208386 389 }
Byrn 0:21cb91208386 390
Byrn 1:1d58d378221c 391 void SSD1306::_send_command(unsigned char code)
Byrn 0:21cb91208386 392 {
Byrn 0:21cb91208386 393 _cs = 1;
Byrn 0:21cb91208386 394 _dc = 0;
Byrn 0:21cb91208386 395 _cs = 0;
Byrn 0:21cb91208386 396 _spi.write(code);
Byrn 0:21cb91208386 397 _cs = 1;
Byrn 0:21cb91208386 398 }
Byrn 0:21cb91208386 399
Byrn 1:1d58d378221c 400 void SSD1306::_send_data(unsigned char value)
Byrn 0:21cb91208386 401 {
Byrn 0:21cb91208386 402 _cs = 1;
Byrn 0:21cb91208386 403 _dc = 1;
Byrn 0:21cb91208386 404 _cs = 0;
Byrn 0:21cb91208386 405 _spi.write(value);
Byrn 0:21cb91208386 406 _cs = 1;
Byrn 0:21cb91208386 407 }