Esempio n. 1
0
 public async Task<IOLED_SSD1306_I2C> Init(int address, OLEDDisplaySize displaySize)
 {
     var writer = new OLED_SSD1306_I2CIO(_device);
     await writer.Init(address);
     _writer = writer;
     Init(displaySize);
     return this;
 }
Esempio n. 2
0
        public async Task <IOLED_SSD1306_I2C> Init(int address, OLEDDisplaySize displaySize)
        {
            var writer = new OLED_SSD1306_I2CIO(_device);
            await writer.Init(address);

            _writer = writer;
            Init(displaySize);
            return(this);
        }
Esempio n. 3
0
        public void Init(OLEDDisplaySize displaySize)
        {
            _displaySize = displaySize;
            if (_displaySize == OLEDDisplaySize.SSD1306_128_32)
            {
                _width  = 128;
                _height = 32;
                // Init sequence for 128x32 OLED module
                Command(OLEDConstants.SSD1306_DISPLAYOFF);         // 0xAE
                Command(OLEDConstants.SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
                Command(0x80);                                     // the suggested ratio 0x80
                Command(OLEDConstants.SSD1306_SETMULTIPLEX);       // 0xA8
                Command(0x1F);
                Command(OLEDConstants.SSD1306_SETDISPLAYOFFSET);   // 0xD3
                Command(0x0);                                      // no offset
                Command(OLEDConstants.SSD1306_SETSTARTLINE | 0x0); // line #0
                Command(OLEDConstants.SSD1306_CHARGEPUMP);         // 0x8D
                                                                   //if (vccstate == SSD1306_EXTERNALVCC)
                                                                   //{ Command(0x10); }
                                                                   //else
                                                                   //{
                Command(0x14);
                //}
                Command(OLEDConstants.SSD1306_MEMORYMODE);      // 0x20
                Command(0x00);                                  // 0x0 act like ks0108
                Command(OLEDConstants.SSD1306_SEGREMAP | 0x1);
                Command(OLEDConstants.SSD1306_COMSCANDEC);
                Command(OLEDConstants.SSD1306_SETCOMPINS);                    // 0xDA
                Command(0x02);
                Command(OLEDConstants.SSD1306_SETCONTRAST);                   // 0x81
                Command(0x8F);
                Command(OLEDConstants.SSD1306_SETPRECHARGE);                  // 0xd9
                                                                              //if (vccstate == SSD1306_EXTERNALVCC)
                                                                              //{
                                                                              //    Command(0x22);
                                                                              //}
                                                                              //else
                                                                              //{
                Command(0xF1);
                //}
                Command(OLEDConstants.SSD1306_SETVCOMDETECT);                 // 0xDB
                Command(0x40);
                Command(OLEDConstants.SSD1306_DISPLAYALLON_RESUME);           // 0xA4
                Command(OLEDConstants.SSD1306_NORMALDISPLAY);                 // 0xA6
            }

            if (_displaySize == OLEDDisplaySize.SSD1306_128_64)
            {
                _width  = 128;
                _height = 64;
                // Init sequence for 128x64 OLED module
                Command(OLEDConstants.SSD1306_DISPLAYOFF);         // 0xAE
                Command(OLEDConstants.SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
                Command(0x80);                                     // the suggested ratio 0x80
                Command(OLEDConstants.SSD1306_SETMULTIPLEX);       // 0xA8
                Command(0x3F);
                Command(OLEDConstants.SSD1306_SETDISPLAYOFFSET);   // 0xD3
                Command(0x0);                                      // no offset
                Command(OLEDConstants.SSD1306_SETSTARTLINE | 0x0); // line #0
                Command(OLEDConstants.SSD1306_CHARGEPUMP);         // 0x8D
                                                                   //if (vccstate == SSD1306_EXTERNALVCC)
                                                                   //{
                                                                   //    Command(0x10);
                                                                   //}
                                                                   //else
                                                                   //{
                Command(0x14);
                //}
                Command(OLEDConstants.SSD1306_MEMORYMODE); // 0x20
                Command(0x00);                             // 0x0 act like ks0108
                Command(OLEDConstants.SSD1306_SEGREMAP | 0x1);
                Command(OLEDConstants.SSD1306_COMSCANDEC);
                Command(OLEDConstants.SSD1306_SETCOMPINS);  // 0xDA
                Command(0x12);
                Command(OLEDConstants.SSD1306_SETCONTRAST); // 0x81
                                                            //if (vccstate == SSD1306_EXTERNALVCC)
                                                            //{
                                                            //    Command(0x9F);
                                                            //}
                                                            //else
                                                            //{
                Command(0xCF);
                // }
                Command(OLEDConstants.SSD1306_SETPRECHARGE); // 0xd9
                                                             //if (vccstate == SSD1306_EXTERNALVCC)
                                                             //{
                                                             //    Command(0x22);
                                                             //}
                                                             //else
                                                             //{
                Command(0xF1);
                // }
                Command(OLEDConstants.SSD1306_SETVCOMDETECT);       // 0xDB
                Command(0x40);
                Command(OLEDConstants.SSD1306_DISPLAYALLON_RESUME); // 0xA4
                Command(OLEDConstants.SSD1306_NORMALDISPLAY);
                // 0xA6
            }

            if (_displaySize == OLEDDisplaySize.SSD1306_96_16)
            {
                _width  = 96;
                _height = 16;

                // Init sequence for 96x16 OLED module
                Command(OLEDConstants.SSD1306_DISPLAYOFF);         // 0xAE
                Command(OLEDConstants.SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
                Command(0x80);                                     // the suggested ratio 0x80
                Command(OLEDConstants.SSD1306_SETMULTIPLEX);       // 0xA8
                Command(0x0F);
                Command(OLEDConstants.SSD1306_SETDISPLAYOFFSET);   // 0xD3
                Command(0x00);                                     // no offset
                Command(OLEDConstants.SSD1306_SETSTARTLINE | 0x0); // line #0
                Command(OLEDConstants.SSD1306_CHARGEPUMP);         // 0x8D
                                                                   //if (vccstate == SSD1306_EXTERNALVCC)
                                                                   //{
                                                                   //    Command(0x10);
                                                                   //}
                                                                   //else
                                                                   //{
                Command(0x14);
                // }
                Command(OLEDConstants.SSD1306_MEMORYMODE); // 0x20
                Command(0x00);                             // 0x0 act like ks0108
                Command(OLEDConstants.SSD1306_SEGREMAP | 0x1);
                Command(OLEDConstants.SSD1306_COMSCANDEC);
                Command(OLEDConstants.SSD1306_SETCOMPINS);  // 0xDA
                Command(0x2);                               //ada x12
                Command(OLEDConstants.SSD1306_SETCONTRAST); // 0x81
                                                            //if (vccstate == SSD1306_EXTERNALVCC)
                                                            //{
                                                            //    Command(0x10);
                                                            //}
                                                            //else
                                                            //{
                Command(0xAF);
                //}
                Command(OLEDConstants.SSD1306_SETPRECHARGE); // 0xd9
                                                             //if (vccstate == SSD1306_EXTERNALVCC)
                                                             //{
                                                             //    Command(0x22);
                                                             //}
                                                             //else
                                                             //{
                Command(0xF1);
                // }
                Command(OLEDConstants.SSD1306_SETVCOMDETECT);       // 0xDB
                Command(0x40);
                Command(OLEDConstants.SSD1306_DISPLAYALLON_RESUME); // 0xA4
                Command(OLEDConstants.SSD1306_NORMALDISPLAY);       // 0xA6
            }

            Command(OLEDConstants.SSD1306_DISPLAYON);//--turn on oled panel
            _pages  = _height / 8;
            _buffer = new byte[_height * _width / 8];
        }
Esempio n. 4
0
        public void Init(OLEDDisplaySize displaySize)
        {
            _displaySize = displaySize;
            if (_displaySize == OLEDDisplaySize.SSD1306_128_32)
            {
                _width = 128;
                _height = 32;
                // Init sequence for 128x32 OLED module
                Command(OLEDConstants.SSD1306_DISPLAYOFF);                    // 0xAE
                Command(OLEDConstants.SSD1306_SETDISPLAYCLOCKDIV);            // 0xD5
                Command(0x80);                                  // the suggested ratio 0x80
                Command(OLEDConstants.SSD1306_SETMULTIPLEX);                  // 0xA8
                Command(0x1F);
                Command(OLEDConstants.SSD1306_SETDISPLAYOFFSET);              // 0xD3
                Command(0x0);                                   // no offset
                Command(OLEDConstants.SSD1306_SETSTARTLINE | 0x0);            // line #0
                Command(OLEDConstants.SSD1306_CHARGEPUMP);                    // 0x8D
                                                                              //if (vccstate == SSD1306_EXTERNALVCC)
                                                                              //{ Command(0x10); }
                                                                              //else
                                                                              //{
                Command(0x14);
                //}
                Command(OLEDConstants.SSD1306_MEMORYMODE);                    // 0x20
                Command(0x00);                                  // 0x0 act like ks0108
                Command(OLEDConstants.SSD1306_SEGREMAP | 0x1);
                Command(OLEDConstants.SSD1306_COMSCANDEC);
                Command(OLEDConstants.SSD1306_SETCOMPINS);                    // 0xDA
                Command(0x02);
                Command(OLEDConstants.SSD1306_SETCONTRAST);                   // 0x81
                Command(0x8F);
                Command(OLEDConstants.SSD1306_SETPRECHARGE);                  // 0xd9
                                                                              //if (vccstate == SSD1306_EXTERNALVCC)
                                                                              //{
                                                                              //    Command(0x22);
                                                                              //}
                                                                              //else
                                                                              //{
                Command(0xF1);
                //}
                Command(OLEDConstants.SSD1306_SETVCOMDETECT);                 // 0xDB
                Command(0x40);
                Command(OLEDConstants.SSD1306_DISPLAYALLON_RESUME);           // 0xA4
                Command(OLEDConstants.SSD1306_NORMALDISPLAY);                 // 0xA6
            }

            if (_displaySize == OLEDDisplaySize.SSD1306_128_64)
            {
                _width = 128;
                _height = 64;
                // Init sequence for 128x64 OLED module
                Command(OLEDConstants.SSD1306_DISPLAYOFF); // 0xAE
                Command(OLEDConstants.SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
                Command(0x80); // the suggested ratio 0x80
                Command(OLEDConstants.SSD1306_SETMULTIPLEX); // 0xA8
                Command(0x3F);
                Command(OLEDConstants.SSD1306_SETDISPLAYOFFSET); // 0xD3
                Command(0x0); // no offset
                Command(OLEDConstants.SSD1306_SETSTARTLINE | 0x0); // line #0
                Command(OLEDConstants.SSD1306_CHARGEPUMP); // 0x8D
                                                           //if (vccstate == SSD1306_EXTERNALVCC)
                                                           //{
                                                           //    Command(0x10);
                                                           //}
                                                           //else
                                                           //{
                Command(0x14);
                //}
                Command(OLEDConstants.SSD1306_MEMORYMODE); // 0x20
                Command(0x00); // 0x0 act like ks0108
                Command(OLEDConstants.SSD1306_SEGREMAP | 0x1);
                Command(OLEDConstants.SSD1306_COMSCANDEC);
                Command(OLEDConstants.SSD1306_SETCOMPINS); // 0xDA
                Command(0x12);
                Command(OLEDConstants.SSD1306_SETCONTRAST); // 0x81
                                                            //if (vccstate == SSD1306_EXTERNALVCC)
                                                            //{
                                                            //    Command(0x9F);
                                                            //}
                                                            //else
                                                            //{
                Command(0xCF);
                // }
                Command(OLEDConstants.SSD1306_SETPRECHARGE); // 0xd9
                                                             //if (vccstate == SSD1306_EXTERNALVCC)
                                                             //{
                                                             //    Command(0x22);
                                                             //}
                                                             //else
                                                             //{
                Command(0xF1);
                // }
                Command(OLEDConstants.SSD1306_SETVCOMDETECT); // 0xDB
                Command(0x40);
                Command(OLEDConstants.SSD1306_DISPLAYALLON_RESUME); // 0xA4
                Command(OLEDConstants.SSD1306_NORMALDISPLAY);
                // 0xA6
            }

            if (_displaySize == OLEDDisplaySize.SSD1306_96_16)
            {
                _width = 96;
                _height = 16;

                // Init sequence for 96x16 OLED module
                Command(OLEDConstants.SSD1306_DISPLAYOFF); // 0xAE
                Command(OLEDConstants.SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
                Command(0x80); // the suggested ratio 0x80
                Command(OLEDConstants.SSD1306_SETMULTIPLEX); // 0xA8
                Command(0x0F);
                Command(OLEDConstants.SSD1306_SETDISPLAYOFFSET); // 0xD3
                Command(0x00); // no offset
                Command(OLEDConstants.SSD1306_SETSTARTLINE | 0x0); // line #0
                Command(OLEDConstants.SSD1306_CHARGEPUMP); // 0x8D
                                                           //if (vccstate == SSD1306_EXTERNALVCC)
                                                           //{
                                                           //    Command(0x10);
                                                           //}
                                                           //else
                                                           //{
                Command(0x14);
                // }
                Command(OLEDConstants.SSD1306_MEMORYMODE); // 0x20
                Command(0x00); // 0x0 act like ks0108
                Command(OLEDConstants.SSD1306_SEGREMAP | 0x1);
                Command(OLEDConstants.SSD1306_COMSCANDEC);
                Command(OLEDConstants.SSD1306_SETCOMPINS); // 0xDA
                Command(0x2); //ada x12
                Command(OLEDConstants.SSD1306_SETCONTRAST); // 0x81
                                                            //if (vccstate == SSD1306_EXTERNALVCC)
                                                            //{
                                                            //    Command(0x10);
                                                            //}
                                                            //else
                                                            //{
                Command(0xAF);
                //}
                Command(OLEDConstants.SSD1306_SETPRECHARGE); // 0xd9
                                                             //if (vccstate == SSD1306_EXTERNALVCC)
                                                             //{
                                                             //    Command(0x22);
                                                             //}
                                                             //else
                                                             //{
                Command(0xF1);
                // }
                Command(OLEDConstants.SSD1306_SETVCOMDETECT); // 0xDB
                Command(0x40);
                Command(OLEDConstants.SSD1306_DISPLAYALLON_RESUME); // 0xA4
                Command(OLEDConstants.SSD1306_NORMALDISPLAY); // 0xA6
            }

            Command(OLEDConstants.SSD1306_DISPLAYON);//--turn on oled panel
            _pages = _height / 8;
            _buffer = new byte[_height * _width / 8];
        }