@@ -241,31 +241,8 @@ bool QwGrSSD1306::init(void)
241
241
if (!this ->QwGrBufferDevice ::init ())
242
242
return false ; // something isn't right
243
243
244
- // Start the device setup - sending commands to device. See command defs in header, and
245
- // device datasheet
246
- send_dev_command (kCmdDisplayOff );
247
-
248
- send_dev_command (kCmdSetDisplayClockDiv , 0x80 );
249
- send_dev_command (kCmdSetMultiplex , _viewport.height - 1 );
250
- send_dev_command (kCmdSetDisplayOffset , 0x0 );
251
-
252
- send_dev_command (kCmdSetStartLine | 0x0 );
253
- send_dev_command (kCmdChargePump , 0x14 );
254
- send_dev_command (kCmdMemoryMode , 0b10 ); // Page Addressing mode - see data sheet
255
-
256
- send_dev_command (kCmdNormalDisplay );
257
- send_dev_command (kCmdDisplayAllOnResume );
258
- send_dev_command (kCmdSegRemap | 0x1 );
259
-
260
- send_dev_command (kCmdComScanDec );
261
- send_dev_command (kCmdSetComPins , _initHWComPins);
262
- send_dev_command (kCmdSetContrast , _initContrast);
263
-
264
- send_dev_command (kCmdSetPreCharge , _initPreCharge);
265
- send_dev_command (kCmdSetVComDeselect , _initVCOMDeselect);
266
- send_dev_command (kCmdDeactivateScroll );
267
-
268
- send_dev_command (kCmdDisplayOn );
244
+ // setup the oled device
245
+ setup_oled_device ();
269
246
270
247
// Finish up setting up this object
271
248
@@ -279,6 +256,33 @@ bool QwGrSSD1306::init(void)
279
256
280
257
return true ;
281
258
}
259
+
260
+ // //////////////////////////////////////////////////////////////////////////////////
261
+ // reset()
262
+ //
263
+ // Return the OLED system to its initial state
264
+ //
265
+ // Returns true on success, false on failure
266
+
267
+ bool QwGrSSD1306::reset (void ){
268
+
269
+ // If we are not in an init state, just call init
270
+ if (!_isInit)
271
+ return init ();
272
+
273
+ // is the device connected?
274
+ if (!_i2cBus->ping (_i2c_address))
275
+ return false ;
276
+
277
+ // setup oled
278
+ setup_oled_device ();
279
+
280
+ // Init internal/drawing buffers and device screen buffer
281
+
282
+ init_buffers ();
283
+
284
+ return true ;
285
+ }
282
286
// //////////////////////////////////////////////////////////////////////////////////
283
287
// Configuration API
284
288
//
@@ -310,6 +314,41 @@ void QwGrSSD1306::set_contrast(uint8_t contrast){
310
314
send_dev_command (kCmdSetContrast , contrast);
311
315
}
312
316
317
+ // //////////////////////////////////////////////////////////////////////////////////
318
+ // setup_oled_device()
319
+ //
320
+ // Method sends the init/setup commands to the OLED device, placing
321
+ // it in a state for use by this driver/library.
322
+
323
+ void QwGrSSD1306::setup_oled_device (void ){
324
+
325
+ // Start the device setup - sending commands to device. See command defs in header, and
326
+ // device datasheet
327
+ send_dev_command (kCmdDisplayOff );
328
+
329
+ send_dev_command (kCmdSetDisplayClockDiv , 0x80 );
330
+ send_dev_command (kCmdSetMultiplex , _viewport.height - 1 );
331
+ send_dev_command (kCmdSetDisplayOffset , 0x0 );
332
+
333
+ send_dev_command (kCmdSetStartLine | 0x0 );
334
+ send_dev_command (kCmdChargePump , 0x14 );
335
+ send_dev_command (kCmdMemoryMode , 0b10 ); // Page Addressing mode - see data sheet
336
+
337
+ send_dev_command (kCmdNormalDisplay );
338
+ send_dev_command (kCmdDisplayAllOnResume );
339
+ send_dev_command (kCmdSegRemap | 0x1 );
340
+
341
+ send_dev_command (kCmdComScanDec );
342
+ send_dev_command (kCmdSetComPins , _initHWComPins);
343
+ send_dev_command (kCmdSetContrast , _initContrast);
344
+
345
+ send_dev_command (kCmdSetPreCharge , _initPreCharge);
346
+ send_dev_command (kCmdSetVComDeselect , _initVCOMDeselect);
347
+ send_dev_command (kCmdDeactivateScroll );
348
+
349
+ send_dev_command (kCmdDisplayOn );
350
+
351
+ }
313
352
// //////////////////////////////////////////////////////////////////////////////////
314
353
// set_comm_bus()
315
354
//
@@ -508,6 +547,19 @@ void QwGrSSD1306::scroll(uint16_t scroll_type, uint8_t start, uint8_t stop, uint
508
547
send_dev_command (kCmdActivateScroll );
509
548
}
510
549
550
+ // //////////////////////////////////////////////////////////////////////////////////
551
+ // display_power()
552
+ //
553
+ // Used to set the power of the screen.
554
+
555
+ void QwGrSSD1306::display_power (bool enable){
556
+
557
+
558
+ if (!_isInit)
559
+ return ;
560
+
561
+ send_dev_command ( (enable ? kCmdDisplayOn : kCmdDisplayOff ));
562
+ }
511
563
// //////////////////////////////////////////////////////////////////////////////////
512
564
// Drawing Methods
513
565
// //////////////////////////////////////////////////////////////////////////////////
0 commit comments