We connected an OLED to I2C of weather:bit.
Dependencies: BME280 SSD1308_128x64_I2C microbit
Fork of mbed_oled by
main.cpp@9:6c7e6b9ab5fa, 2017-12-15 (annotated)
- Committer:
- kanpapa
- Date:
- Fri Dec 15 13:31:12 2017 +0000
- Revision:
- 9:6c7e6b9ab5fa
- Parent:
- 8:40f4585a5172
1st release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kanpapa | 8:40f4585a5172 | 1 | /* |
kanpapa | 8:40f4585a5172 | 2 | * micro:bit weather:bit + SSD1306 OLED 128x64 OLED Test program |
wim | 1:00053cb70ac5 | 3 | * |
kanpapa | 8:40f4585a5172 | 4 | * Copyright (c) 2017 Kazuhiro Ouchi (@kanpapa) |
wim | 1:00053cb70ac5 | 5 | * Released under the MIT License: http://mbed.org/license/mit |
wim | 1:00053cb70ac5 | 6 | * |
kanpapa | 8:40f4585a5172 | 7 | * version 0.1 Initial Release |
wim | 1:00053cb70ac5 | 8 | */ |
kanpapa | 8:40f4585a5172 | 9 | #include "MicroBit.h" |
wim | 1:00053cb70ac5 | 10 | #include "mbed_logo.h" |
kanpapa | 8:40f4585a5172 | 11 | #include "SSD1308.h" // https://os.mbed.com/users/wim/code/SSD1308_128x64_I2C/ |
kanpapa | 8:40f4585a5172 | 12 | #include "BME280.h" // https://os.mbed.com/users/MACRUM/code/BME280/ |
wim | 7:ae282775cbcc | 13 | |
kanpapa | 8:40f4585a5172 | 14 | MicroBit uBit; |
kanpapa | 8:40f4585a5172 | 15 | MicroBitI2C i2c(I2C_SDA0, I2C_SCL0); |
wim | 1:00053cb70ac5 | 16 | |
kanpapa | 8:40f4585a5172 | 17 | // Instantiate OLED SSD1306 |
kanpapa | 8:40f4585a5172 | 18 | // I2C address 0x78 |
wim | 1:00053cb70ac5 | 19 | SSD1308 oled = SSD1308(i2c, SSD1308_SA0); |
wim | 1:00053cb70ac5 | 20 | |
kanpapa | 8:40f4585a5172 | 21 | // I2C address 0x76(default) |
kanpapa | 8:40f4585a5172 | 22 | // Instantiate BME280 sensor |
kanpapa | 8:40f4585a5172 | 23 | BME280 sensor = BME280(i2c); |
wim | 1:00053cb70ac5 | 24 | |
kanpapa | 8:40f4585a5172 | 25 | int main() { |
kanpapa | 8:40f4585a5172 | 26 | // Initialise the micro:bit runtime. |
kanpapa | 8:40f4585a5172 | 27 | uBit.init(); |
wim | 1:00053cb70ac5 | 28 | |
kanpapa | 8:40f4585a5172 | 29 | // micro:bit LED test |
kanpapa | 8:40f4585a5172 | 30 | uBit.display.scroll("HELLO WORLD! :)"); |
wim | 1:00053cb70ac5 | 31 | |
kanpapa | 8:40f4585a5172 | 32 | // OLED test |
kanpapa | 8:40f4585a5172 | 33 | oled.writeString(0, 0, "Hello World !"); |
wim | 2:d86478c0f5da | 34 | |
kanpapa | 8:40f4585a5172 | 35 | oled.fillDisplay(0xAA); |
kanpapa | 8:40f4585a5172 | 36 | oled.setDisplayOff(); |
kanpapa | 8:40f4585a5172 | 37 | wait(1); |
kanpapa | 8:40f4585a5172 | 38 | oled.setDisplayOn(); |
kanpapa | 8:40f4585a5172 | 39 | |
kanpapa | 8:40f4585a5172 | 40 | // weather info display |
kanpapa | 8:40f4585a5172 | 41 | while (1) { |
kanpapa | 8:40f4585a5172 | 42 | oled.clearDisplay(); |
kanpapa | 8:40f4585a5172 | 43 | oled.setDisplayInverse(); |
kanpapa | 8:40f4585a5172 | 44 | wait(0.5); |
kanpapa | 8:40f4585a5172 | 45 | oled.setDisplayNormal(); |
kanpapa | 8:40f4585a5172 | 46 | |
kanpapa | 8:40f4585a5172 | 47 | oled.writeBitmap((uint8_t*) mbed_logo); |
kanpapa | 8:40f4585a5172 | 48 | wait(1); |
wim | 1:00053cb70ac5 | 49 | |
kanpapa | 8:40f4585a5172 | 50 | oled.clearDisplay(); |
kanpapa | 8:40f4585a5172 | 51 | oled.printf("%2.2f degC, %04.2f hPa, %2.2f %%\n", sensor.getTemperature(), sensor.getPressure(), sensor.getHumidity()); |
kanpapa | 8:40f4585a5172 | 52 | wait(10); |
wim | 1:00053cb70ac5 | 53 | } |
kanpapa | 8:40f4585a5172 | 54 | } //main |