read TI TMP102 temperature and display on SSD1306 OLED
Dependencies: Adafruit_GFX TMP102 mbed
Fork of DisplayOled by
main.cpp@1:c636842ce79c, 2018-06-12 (annotated)
- Committer:
- poushen
- Date:
- Tue Jun 12 03:23:03 2018 +0000
- Revision:
- 1:c636842ce79c
- Parent:
- 0:3b87797f65fc
- Child:
- 3:6fd4514ca28c
combind oled (ssd1306), and tmp102 sensor to one project; add one shot, sleep, wakeup, extended mode, ... to test_TMP102
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
poushen | 1:c636842ce79c | 1 | /* |
franni | 0:3b87797f65fc | 2 | #include "mbed.h" |
franni | 0:3b87797f65fc | 3 | #include "Adafruit_SSD1306.h" |
franni | 0:3b87797f65fc | 4 | |
franni | 0:3b87797f65fc | 5 | DigitalOut led1(LED_RED); |
franni | 0:3b87797f65fc | 6 | |
franni | 0:3b87797f65fc | 7 | // SPI sub-class that provides a constructed default |
franni | 0:3b87797f65fc | 8 | class I2CPreInit : public I2C |
franni | 0:3b87797f65fc | 9 | { |
franni | 0:3b87797f65fc | 10 | public: |
franni | 0:3b87797f65fc | 11 | I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl) |
franni | 0:3b87797f65fc | 12 | { |
poushen | 1:c636842ce79c | 13 | frequency(1000000); |
poushen | 1:c636842ce79c | 14 | //frequency(100000); |
poushen | 1:c636842ce79c | 15 | //start(); |
franni | 0:3b87797f65fc | 16 | }; |
franni | 0:3b87797f65fc | 17 | }; |
franni | 0:3b87797f65fc | 18 | |
poushen | 1:c636842ce79c | 19 | I2CPreInit myI2C(PB_9,PB_8); |
franni | 0:3b87797f65fc | 20 | Adafruit_SSD1306_I2c myOled(myI2C,NC,0x78,64,128); |
franni | 0:3b87797f65fc | 21 | |
franni | 0:3b87797f65fc | 22 | int main() |
franni | 0:3b87797f65fc | 23 | { |
franni | 0:3b87797f65fc | 24 | uint16_t x=0; |
franni | 0:3b87797f65fc | 25 | |
franni | 0:3b87797f65fc | 26 | myOled.begin(); |
franni | 0:3b87797f65fc | 27 | myOled.printf("%ux%u Hellow World\r\n", myOled.width(), myOled.height()); |
franni | 0:3b87797f65fc | 28 | myOled.display(); |
franni | 0:3b87797f65fc | 29 | |
franni | 0:3b87797f65fc | 30 | while(1) |
franni | 0:3b87797f65fc | 31 | { |
franni | 0:3b87797f65fc | 32 | led1 = !led1; |
franni | 0:3b87797f65fc | 33 | myOled.printf("%u\r",x); |
franni | 0:3b87797f65fc | 34 | myOled.display(); |
franni | 0:3b87797f65fc | 35 | x = x + 1; |
franni | 0:3b87797f65fc | 36 | wait(1.0); |
franni | 0:3b87797f65fc | 37 | } |
franni | 0:3b87797f65fc | 38 | } |
franni | 0:3b87797f65fc | 39 | |
poushen | 1:c636842ce79c | 40 | */ |
franni | 0:3b87797f65fc | 41 | |
franni | 0:3b87797f65fc | 42 | |
franni | 0:3b87797f65fc | 43 | |
franni | 0:3b87797f65fc | 44 | |
franni | 0:3b87797f65fc | 45 | |
franni | 0:3b87797f65fc | 46 | #include "mbed.h" |
franni | 0:3b87797f65fc | 47 | #include "Adafruit_SSD1306.h" |
poushen | 1:c636842ce79c | 48 | #include "test_TMP102.h" |
franni | 0:3b87797f65fc | 49 | |
franni | 0:3b87797f65fc | 50 | class I2CPreInit : public I2C |
franni | 0:3b87797f65fc | 51 | { |
franni | 0:3b87797f65fc | 52 | public: |
franni | 0:3b87797f65fc | 53 | I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl) |
franni | 0:3b87797f65fc | 54 | { |
poushen | 1:c636842ce79c | 55 | frequency(1000000); |
poushen | 1:c636842ce79c | 56 | //start(); |
franni | 0:3b87797f65fc | 57 | }; |
franni | 0:3b87797f65fc | 58 | }; |
franni | 0:3b87797f65fc | 59 | |
poushen | 1:c636842ce79c | 60 | I2CPreInit myI2C(PB_9,PB_8); |
franni | 0:3b87797f65fc | 61 | Adafruit_SSD1306_I2c myOled(myI2C,NC,0x78,64,128); |
poushen | 1:c636842ce79c | 62 | |
poushen | 1:c636842ce79c | 63 | test_TMP102 temp1(myI2C); |
franni | 0:3b87797f65fc | 64 | |
franni | 0:3b87797f65fc | 65 | int main() |
franni | 0:3b87797f65fc | 66 | { |
poushen | 1:c636842ce79c | 67 | uint16_t x=0; |
franni | 0:3b87797f65fc | 68 | |
poushen | 1:c636842ce79c | 69 | // ------------ tmp102 -------------- |
poushen | 1:c636842ce79c | 70 | temp1.setExtendedMode(1); |
poushen | 1:c636842ce79c | 71 | temp1.setConversionRate(2); |
poushen | 1:c636842ce79c | 72 | temp1.sleep(); |
poushen | 1:c636842ce79c | 73 | |
poushen | 1:c636842ce79c | 74 | // ------------ oled -------------- |
poushen | 1:c636842ce79c | 75 | myOled.begin(); |
poushen | 1:c636842ce79c | 76 | myOled.clearDisplay(); |
poushen | 1:c636842ce79c | 77 | myOled.display(); |
poushen | 1:c636842ce79c | 78 | wait(0.1); |
poushen | 1:c636842ce79c | 79 | |
poushen | 1:c636842ce79c | 80 | myOled.fillCircle(64, 42, 10, 1); |
poushen | 1:c636842ce79c | 81 | myOled.display(); |
poushen | 1:c636842ce79c | 82 | wait(1); |
poushen | 1:c636842ce79c | 83 | myOled.fillCircle(64, 42, 5, 0); |
poushen | 1:c636842ce79c | 84 | myOled.display(); |
poushen | 1:c636842ce79c | 85 | wait(1); |
poushen | 1:c636842ce79c | 86 | |
poushen | 1:c636842ce79c | 87 | myOled.clearDisplay(); |
poushen | 1:c636842ce79c | 88 | myOled.display(); |
poushen | 1:c636842ce79c | 89 | wait(0.1); |
poushen | 1:c636842ce79c | 90 | |
poushen | 1:c636842ce79c | 91 | myOled.printf("\r\n OLED %ux%u \r\n\r\n Hello World\r\n\n", myOled.width(), myOled.height()); |
poushen | 1:c636842ce79c | 92 | |
poushen | 1:c636842ce79c | 93 | myOled.drawRect(0, 0, 128, 64,1); |
poushen | 1:c636842ce79c | 94 | myOled.display(); |
poushen | 1:c636842ce79c | 95 | wait(0.5); |
poushen | 1:c636842ce79c | 96 | while(1) |
poushen | 1:c636842ce79c | 97 | { |
poushen | 1:c636842ce79c | 98 | temp1.oneShot(); |
poushen | 1:c636842ce79c | 99 | float t1 = temp1; |
poushen | 1:c636842ce79c | 100 | |
poushen | 1:c636842ce79c | 101 | //myOled.printf("%u\r ",x); |
poushen | 1:c636842ce79c | 102 | myOled.printf(" Temp: %.3f ~c\r", t1); |
franni | 0:3b87797f65fc | 103 | |
poushen | 1:c636842ce79c | 104 | myOled.drawRect(0, 0, 128, 64,1); |
poushen | 1:c636842ce79c | 105 | |
poushen | 1:c636842ce79c | 106 | myOled.display(); |
poushen | 1:c636842ce79c | 107 | x = x + 1; |
poushen | 1:c636842ce79c | 108 | wait(0.5); |
poushen | 1:c636842ce79c | 109 | } |
franni | 0:3b87797f65fc | 110 | } |
franni | 0:3b87797f65fc | 111 | |
franni | 0:3b87797f65fc | 112 | |
franni | 0:3b87797f65fc | 113 | |
franni | 0:3b87797f65fc | 114 | |
poushen | 1:c636842ce79c | 115 |