OLED Display

Dependents:   UltraschallSensor_LowLevelV2

Committer:
marcel1691
Date:
Fri May 27 16:40:07 2016 +0000
Revision:
0:1dee22d82bd2
OLED Display for IoTKit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcel1691 0:1dee22d82bd2 1 /* IoTKit OLED Display Library
marcel1691 0:1dee22d82bd2 2 * Copyright (c) 2016 Marcel mc-b Bernet
marcel1691 0:1dee22d82bd2 3 *
marcel1691 0:1dee22d82bd2 4 * Licensed under the Apache License, Version 2.0 (the "License");
marcel1691 0:1dee22d82bd2 5 * you may not use this file except in compliance with the License.
marcel1691 0:1dee22d82bd2 6 * You may obtain a copy of the License at
marcel1691 0:1dee22d82bd2 7 *
marcel1691 0:1dee22d82bd2 8 * http://www.apache.org/licenses/LICENSE-2.0
marcel1691 0:1dee22d82bd2 9 *
marcel1691 0:1dee22d82bd2 10 * Unless required by applicable law or agreed to in writing, software
marcel1691 0:1dee22d82bd2 11 * distributed under the License is distributed on an "AS IS" BASIS,
marcel1691 0:1dee22d82bd2 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
marcel1691 0:1dee22d82bd2 13 * See the License for the specific language governing permissions and
marcel1691 0:1dee22d82bd2 14 * limitations under the License.
marcel1691 0:1dee22d82bd2 15 */
marcel1691 0:1dee22d82bd2 16
marcel1691 0:1dee22d82bd2 17 #include "mbed.h"
marcel1691 0:1dee22d82bd2 18 #include <stdarg.h>
marcel1691 0:1dee22d82bd2 19 #include "Adafruit_SSD1306.h"
marcel1691 0:1dee22d82bd2 20
marcel1691 0:1dee22d82bd2 21 #ifndef OLED_DISPLAY
marcel1691 0:1dee22d82bd2 22 #define OLED_DISPLAY
marcel1691 0:1dee22d82bd2 23
marcel1691 0:1dee22d82bd2 24 /** OLED Display
marcel1691 0:1dee22d82bd2 25 *
marcel1691 0:1dee22d82bd2 26 * Vereinfachte Version zur Ansteuerung eines Displays
marcel1691 0:1dee22d82bd2 27 * auf Basis von I2C und SSD1306 Interface
marcel1691 0:1dee22d82bd2 28 *
marcel1691 0:1dee22d82bd2 29 * Example:
marcel1691 0:1dee22d82bd2 30 * @code
marcel1691 0:1dee22d82bd2 31 * #include "mbed.h"
marcel1691 0:1dee22d82bd2 32 * #include "OLEDDisplay.h"
marcel1691 0:1dee22d82bd2 33 *
marcel1691 0:1dee22d82bd2 34 * DigitalOut led( D10 );
marcel1691 0:1dee22d82bd2 35 * OLEDDisplay oled;
marcel1691 0:1dee22d82bd2 36 *
marcel1691 0:1dee22d82bd2 37 * int main()
marcel1691 0:1dee22d82bd2 38 * {
marcel1691 0:1dee22d82bd2 39 * int i = 0;
marcel1691 0:1dee22d82bd2 40 * oled.clear();
marcel1691 0:1dee22d82bd2 41 * oled.printf( "Test\r\n" );
marcel1691 0:1dee22d82bd2 42 *
marcel1691 0:1dee22d82bd2 43 * while (true)
marcel1691 0:1dee22d82bd2 44 * {
marcel1691 0:1dee22d82bd2 45 * oled.cursor( 1, 0 );
marcel1691 0:1dee22d82bd2 46 * oled.printf( "ON %d, %d\n", led.read(), i );
marcel1691 0:1dee22d82bd2 47 * led = 1;
marcel1691 0:1dee22d82bd2 48 * wait( 1.0f );
marcel1691 0:1dee22d82bd2 49 *
marcel1691 0:1dee22d82bd2 50 * oled.cursor( 2, 0 );
marcel1691 0:1dee22d82bd2 51 * oled.printf( "OFF %d, %d\n", led.read(), i );
marcel1691 0:1dee22d82bd2 52 * led = 0;
marcel1691 0:1dee22d82bd2 53 * i++;
marcel1691 0:1dee22d82bd2 54 * wait( 1.0f );
marcel1691 0:1dee22d82bd2 55 * }
marcel1691 0:1dee22d82bd2 56 * }
marcel1691 0:1dee22d82bd2 57 * @endcode
marcel1691 0:1dee22d82bd2 58 */
marcel1691 0:1dee22d82bd2 59
marcel1691 0:1dee22d82bd2 60 class OLEDDisplay
marcel1691 0:1dee22d82bd2 61 {
marcel1691 0:1dee22d82bd2 62 public:
marcel1691 0:1dee22d82bd2 63 OLEDDisplay( PinName rst = D9, PinName sca = D14, PinName scl = D15, uint8_t addr = 0x78 ) : i2c( sca, scl ), oled( i2c, rst, addr )
marcel1691 0:1dee22d82bd2 64 {
marcel1691 0:1dee22d82bd2 65 }
marcel1691 0:1dee22d82bd2 66
marcel1691 0:1dee22d82bd2 67 /** clear Display */
marcel1691 0:1dee22d82bd2 68 void clear()
marcel1691 0:1dee22d82bd2 69 {
marcel1691 0:1dee22d82bd2 70 oled.clearDisplay();
marcel1691 0:1dee22d82bd2 71 oled.setTextCursor( 0, 0 );
marcel1691 0:1dee22d82bd2 72 }
marcel1691 0:1dee22d82bd2 73 /** Set the display rotation, 1 = down, 2 = up, 3 = left, or 4 = right*/
marcel1691 0:1dee22d82bd2 74 void setRotation(uint8_t r)
marcel1691 0:1dee22d82bd2 75 {
marcel1691 0:1dee22d82bd2 76 oled.setRotation( r );
marcel1691 0:1dee22d82bd2 77 }
marcel1691 0:1dee22d82bd2 78
marcel1691 0:1dee22d82bd2 79 /** printf formatted with display */
marcel1691 0:1dee22d82bd2 80 void printf( const char *format, ... )
marcel1691 0:1dee22d82bd2 81 {
marcel1691 0:1dee22d82bd2 82 static char buffer[128];
marcel1691 0:1dee22d82bd2 83
marcel1691 0:1dee22d82bd2 84 va_list args;
marcel1691 0:1dee22d82bd2 85 va_start(args, format);
marcel1691 0:1dee22d82bd2 86 vsprintf(buffer, format, args);
marcel1691 0:1dee22d82bd2 87 va_end(args);
marcel1691 0:1dee22d82bd2 88
marcel1691 0:1dee22d82bd2 89 oled.printf( buffer );
marcel1691 0:1dee22d82bd2 90 oled.display();
marcel1691 0:1dee22d82bd2 91 }
marcel1691 0:1dee22d82bd2 92
marcel1691 0:1dee22d82bd2 93 /// Set the text cursor location, based on the size of the text
marcel1691 0:1dee22d82bd2 94 void cursor( int16_t y, int16_t x )
marcel1691 0:1dee22d82bd2 95 {
marcel1691 0:1dee22d82bd2 96 oled.setTextCursor( x * 6 , y * 8 );
marcel1691 0:1dee22d82bd2 97 }
marcel1691 0:1dee22d82bd2 98
marcel1691 0:1dee22d82bd2 99
marcel1691 0:1dee22d82bd2 100 private:
marcel1691 0:1dee22d82bd2 101 I2C i2c;
marcel1691 0:1dee22d82bd2 102 Adafruit_SSD1306_I2c oled;
marcel1691 0:1dee22d82bd2 103 };
marcel1691 0:1dee22d82bd2 104
marcel1691 0:1dee22d82bd2 105 #endif // OLED_DISPLAY