Jump to content

Search the Community

Showing results for tags 'OLED'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • News
    • Announcements
    • Suggestions
    • New users say Hi!
  • Spotlight!
    • Sponsor Spotlight
    • Sponsor Giveaways
  • Energia
    • Energia - MSP
    • Energia - TivaC/CC3XXX
    • Energia - C2000
    • Energia Libraries
  • MSP Technical Forums
    • General
    • Compilers and IDEs
    • Development Kits
    • Programmers and Debuggers
    • Code vault
    • Projects
    • Booster Packs
    • Energia
  • Tiva-C, Hercules, CCXXXX ARM Technical Forums
    • General
    • SensorTag
    • Tiva-C, Hercules, CC3XXX Launchpad Booster Packs
    • Code Vault
    • Projects
    • Compilers and IDEs
    • Development Kits and Custom Boards
  • Beagle ARM Cortex A8 Technical Forums
    • General
    • Code Snippets and Scripts
    • Cases, Capes and Plugin Boards
    • Projects
  • General Electronics Forum
    • General Electronics
    • Other Microcontrollers
  • Connect
    • Embedded Systems/Test Equipment Deals
    • Buy, Trade and Sell
    • The 43oh Store
    • Community Projects
    • Fireside Chat
  • C2000 Technical Forums
    • General
    • Development Kits
    • Code Vault
    • Projects
    • BoosterPacks

Calendars

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Location


Interests


Sparkfun


Github

Found 7 results

  1. aBUGSworstnightmare

    SSD1308 I2C OLED - Stellaris driver API

    Hi there, I have written a driver API for SSD1308 based I2C OLEDs (can be used with SSD1306 too with no/only minor changes in the initialization routine) which I will use for my C3ii INS Stellaris Booster Pack (http://e2e.ti.com/group/microcontrollerprojects/m/msp430microcontrollerprojects/664688.aspx). The driver is comparable to the 'Simple Display' example from the EVALBOT. The API relies on my Stellaris I2C driver which you can find here: http://forum.stellarisiti.com/topic/417-i2c-with-stellaris-lm4f120h5qr-working-driver-api-example-code/ or here http://e2e.ti.com/support/microcontrollers/stellaris_arm_cortex-m3_microcontroller/f/473/t/235926.aspx . The API allows displaying: 1.) Images (black&white) The image needs to be a black&white .BMP-Image file which must be converted into a data array for use with the API. A little programm called 'LCDAssistent' is included in the attached .zip file which can be used for this task. LCDAssistant is ease to use and also allows inclusion of the image size into the output array. Refer to the file 'logos.h' for examples (original .bmp-file is included too). 2.) Centered Text If the supplied text is to large to fit the screen it will be clipped left and right. 3.) Strings The string will be printed 'until space lasts'! That means: you can't supply a string that is to long. 4.) It makes use of an undocumented SSD1306/1308 command called 'Double-Size-Font' (0xD6). After receiving this command, the SSD1308 OLED controller displays each scan line of the first 4 text lines twice. This is resulting in a font which is 2 pages large. Using the 0xD6 command will not affect/alter the content of the SSD1308 GDDRAM! When in 'Double-Size-Font'-Mode, the 'Set Display Start Line' command is used to display the pages PAGE4 to PAGE7. Step1: Initial display content Step 2: Double-Size-Font-Mode switched ON Step 3: Display start line set to 0x32 (start of PAGE4) Step 4: Double-Size-Font Mode switched OFF and Display Start Line set back to 0x40 (beginning of the PAGE1) The display shown/used is a 0.96in 128x64pixels white OLED from WIDE.Hk. Here's the link to the product page: http://www.wide.hk/products.php?product=I2C-0.96%22-OLED-display-module-%28-compatible-Arduino-%29 EDIT (01/18/2012): Added a new version of my I2C OLED API! The r03-release includes some new functions: // Clears a partial row on the OLED display. void Display128x64x1ClearArea(unsigned long ulI2CBase, unsigned long ulXStart, unsigned long ulXEnd, unsigned long ulY) // Displays a length-restricted string on the OLED display at the current cursor position. void Display128x64x1StringCurrentPos(unsigned long ulI2CBase, const char *pcStr, unsigned long ulLen) // Set the Cursor to the specified position on the OLED display (GDDRAM address). void Display128x64x1SetCursor(unsigned long ulI2CBase, unsigned long ulX, unsigned long ulY) // A simple I2C based printf function supporting \%c, \%d, \%p, \%s, \%u, \%x, and \%X for use with OLED displays. void I2COLEDprintf(const char *pcString, ...) Please report any issues/improvements! Enjoy your OLEDs! Kind regards aBUGSworstnightmare I2C OLED 128x64 - API_r03.zip
  2. Edit 09.12.2016: I added Arial_16x24.h and Arial_24x40 (really a 24x36, but I had to keep a multiple of 8), digits only, created with GLCD Font Creator (I had to edit the result slightly manually). See images below. So I can confirm that adding any further fonts created with GLCD Font Creator works (I run it on Linux on wine BTW) and is only limited by how much fits into the SSD1306_OLED_5x8_11x16_16x24_24x36_fonts.zip
  3. kassovik

    Underwater clock OLED.

    My first project. Underwater clock. Used msp430g2553.
  4. I got hold of 4D Systems' new 1.5" 128x128 OLED display BoosterPack and let me tell you, this display is awesome. Brilliant colors, wide viewing angle, sharp, a real eye candy. Specs: 128 x 128 1.5
  5. The OLED display on the evalbot got very dim now. It is like 2 years since I have it. The last time it was turned on the OLED is ok. The bot was turned on only very occasionally. Is there anything can be done to fix or does it reached its time? Thanks in advance.
  6. gwdeveloper

    Stellaris Launchpad, OLED and BMP085

    Just dropping off a super simple code snippet. This uses aBugsWorstNightmare's I2C API (http://forum.stellarisiti.com/topic/417-i2c-with-stellaris-lm4f120h5qr-working-driver-api-example-code/) to collect data from a BMP085 barometric pressure sensor. I've been rolling my own interrupt based I2C API to utilize the EOC on the BMP085 as well as another I2C device that has interrupt abilities. ABWN's API was super simple to use for testing. In the picture, the last 2 digits of the barometric pressure look blurred simply from the sample rate being so fast. The MSP430 version of this software takes a substantial amount more time than the LM4F. The calculations are not yet optimized for the 32 bit mcu so things might get even faster. #define SYSTICKHZ 1000 #define SYSTICKMS (1000 / SYSTICKHZ) /* bmp085 defines */ #define BMP085_ADDR 0x77 #define BMP085_CTRL_REG 0xF4 #define BMP085_TEMP_REG 0x2E #define BMP085_PRESSURE_REG 0x34 // oss =0 //#define BMP085_PRESSURE_REG_OSS1 0x74 // oss =1, longer delays needed 7.5ms //#define BMP085_PRESSURE_REG_OSS2 0xB4 // oss =2, 13.5ms //#define BMP085_PRESSURE_REG_OSS3 0xF4 // oss =3, 25.5ms #define BMP085_MSB_REG 0xF6 #define BMP085_LSB_REG 0xF7 #define BMP085_CONV_REG_XLSB 0xF8 #include "inc/hw_types.h" #include "inc/hw_memmap.h" #include "inc/hw_ssi.h" #include "inc/hw_ints.h" #include "driverlib/i2c.h" #include "driverlib/sysctl.h" #include "driverlib/rom.h" #include "driverlib/rom_map.h" #include "driverlib/pin_map.h" #include "driverlib/gpio.h" #include "driverlib/systick.h" #include "driverlib/interrupt.h" #include "driverlib/ssi.h" #include "OLED_SSD1306.h" #include "FontPack.h" #include "utils/ustdlib.h" #include "I2C_Stellaris_API.h" void bmp_get_cal(void); /* variables */ // bmp085 // cal data short ac1; short ac2; short ac3; unsigned short ac4; unsigned short ac5; unsigned short ac6; short b1; short b2; short mb; short mc; short md; // true temp long ut; long x1; long x2; long b5; long bmp_temp = 0; //true pressure long up; long x3; long b3; unsigned long b4; long b6; unsigned long b7; long p; long bmp_pres = 0; // adjusters long b6Temp; long x1Temp; char temp_buffer[8]; char pres_buffer[10]; char BMP085_calValues[22] = {0x00, 0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; char BMP085_tempValues[2] = {0x00, 0x00}; char BMP085_presValues[3] = {0x00, 0x00, 0x00}; void main(void) { ROM_SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); // Configure SysTick for a periodic interrupt. //ROM_SysTickPeriodSet(ROM_SysCtlClockGet() / SYSTICKHZ); //ROM_SysTickEnable(); //ROM_SysTickIntEnable(); ROM_IntMasterEnable(); SSD1306PinSetup(); SSD1306Init(); clearScreen(0); clearScreen(1); I2CSetup(I2C0_MASTER_BASE, 0); bmp_get_cal(); while(1) { I2CRegWrite(I2C0_MASTER_BASE, BMP085_ADDR, BMP085_CTRL_REG, BMP085_TEMP_REG); // replace with timer for 4.5ms delay SysCtlDelay((ROM_SysCtlClockGet() / SYSTICKHZ) * 5); I2CReadData(I2C0_MASTER_BASE, BMP085_ADDR, BMP085_MSB_REG, BMP085_tempValues, 2); ut = (int)BMP085_tempValues[0] << 8 | (int)BMP085_tempValues[1]; I2CRegWrite(I2C0_MASTER_BASE, BMP085_ADDR, BMP085_CTRL_REG, BMP085_PRESSURE_REG); // replace with timer for 4.5ms delay SysCtlDelay((ROM_SysCtlClockGet() / SYSTICKHZ) * 5); I2CReadData(I2C0_MASTER_BASE, BMP085_ADDR, BMP085_MSB_REG, BMP085_presValues, 3); up = ((int)BMP085_presValues[0] << 16 | (int)BMP085_presValues[1] << 8 | (int)BMP085_presValues[2]) >> 8; // calc true temp x1 = (ut - ac6) * ac5 >> 15; x2 = (mc << 11) / (x1 + md); b5 = x1 + x2; bmp_temp = (b5 + 8) >> 4; // calc true pressure b6 = b5 - 4000; //x1 = (b2 * (b6 * b6) >> 12) >> 11; // won't work this way on the value line LSR_23 error b6Temp = b6 * b6; x1Temp = b2 * b6Temp; x1Temp = x1Temp >> 12; x1 = x1Temp >> 11; x2 = (ac2 * b6) >> 11; x3 = x1 + x2; b3 = (ac1 * 4 + x3 + 2) >> 2; // ???? so many 'corrections' on the web this one works though x1 = ac3 * b6 >> 13; x2 = (b1 * ((b6 * b6) >> 12)) >> 16; x3 = ((x1 + x2) + 2) >> 2; b4 = (ac4 * (unsigned long)(x3 + 32768)) >> 15; b7 = ((unsigned long)up - b3) * 50000; if (b7 < 0x80000000) { p = (b7 * 2) / b4;} else {p = (b7 / b4) *2;} x1 = (p >> 8) * (p >> 8); x1 = (x1 * 3038) >> 16; x2 = (-7357 * p) >> 16; bmp_pres = p + ((x1 + x2 + 3791) >> 4); usprintf(temp_buffer, "%5d C", bmp_temp); stringDraw(0, 2, 0, (char *)temp_buffer); usprintf(pres_buffer, "%3d hPa", bmp_pres); stringDraw(0, 3, 0, (char *)pres_buffer); asm(" NOP"); } } void bmp_get_cal(void) { I2CReadData(I2C0_MASTER_BASE, BMP085_ADDR, 0xAA, BMP085_calValues, 22); ac1 = BMP085_calValues[0] << 8 | BMP085_calValues[1]; ac2 = (int)BMP085_calValues[2] << 8 | (int)BMP085_calValues[3]; ac3 = (int)BMP085_calValues[4] << 8 | (int)BMP085_calValues[5]; ac4 = (int)BMP085_calValues[6] << 8 | (int)BMP085_calValues[7]; ac5 = (int)BMP085_calValues[8] << 8 | (int)BMP085_calValues[9]; ac6 = (int)BMP085_calValues[10] << 8 | (int)BMP085_calValues[11]; b1 = (int)BMP085_calValues[12] << 8 | (int)BMP085_calValues[13]; b2 = (int)BMP085_calValues[14] << 8 | (int)BMP085_calValues[15]; mb = (int)BMP085_calValues[16] << 8 | (int)BMP085_calValues[17]; mc = (int)BMP085_calValues[18] << 8 | (int)BMP085_calValues[19]; md = (int)BMP085_calValues[20] << 8 | (int)BMP085_calValues[21]; } void SysTickIntHandler(void) { }
  7. Driver and library for the OLED Booster Pack for use on the Stellaris Launchpad. It's a simple port from the USCI version I put together for the MSP430 Launchpad. This version does not include frame buffer support. Next version will have frame buffering for better control and animations. Button functions are not implemented but can be added to the buttons driver file. Maybe that will be in the next version too. BinaryClockHole.zip StellarPad_OLED.zip
×