Seongbin Lim
/
sb_first_project
This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.
main.cpp@136:53a83b91854c, 2020-05-22 (annotated)
- Committer:
- sb8718
- Date:
- Fri May 22 08:05:14 2020 +0000
- Revision:
- 136:53a83b91854c
- Parent:
- 135:03997cc206a4
- Child:
- 137:81b5a1672c6a
lab 11-2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sb8718 | 109:5274dd9bebe1 | 1 | #include "mbed.h" |
sb8718 | 135:03997cc206a4 | 2 | #include "Adafruit_SSD1306.h" |
sb8718 | 128:29911670c7fd | 3 | |
sb8718 | 135:03997cc206a4 | 4 | #define ADT7420_TEMP_REG (0x00) |
sb8718 | 135:03997cc206a4 | 5 | #define ADT7420_CONF_REG (0x03) |
sb8718 | 135:03997cc206a4 | 6 | #define EVAL_ADT7420_ADDR (0x48) |
sb8718 | 135:03997cc206a4 | 7 | |
sb8718 | 135:03997cc206a4 | 8 | I2C i2c(I2C_SDA, I2C_SCL); |
sb8718 | 136:53a83b91854c | 9 | RawSerial pc(PA_2, PA_3, 115200); |
sb8718 | 135:03997cc206a4 | 10 | |
sb8718 | 135:03997cc206a4 | 11 | |
sb8718 | 135:03997cc206a4 | 12 | Adafruit_SSD1306_SPI goled(D11, D13, D10, D4, D7, 64, 128); |
sb8718 | 130:d19783810c05 | 13 | |
sb8718 | 135:03997cc206a4 | 14 | int main() { |
sb8718 | 135:03997cc206a4 | 15 | |
sb8718 | 135:03997cc206a4 | 16 | int status; |
sb8718 | 135:03997cc206a4 | 17 | float temp; |
sb8718 | 135:03997cc206a4 | 18 | char data_write[2]; |
sb8718 | 135:03997cc206a4 | 19 | char data_read[2]; |
sb8718 | 135:03997cc206a4 | 20 | |
sb8718 | 135:03997cc206a4 | 21 | i2c.frequency(100000); |
sb8718 | 135:03997cc206a4 | 22 | data_write[0] = ADT7420_CONF_REG; |
sb8718 | 135:03997cc206a4 | 23 | data_write[1] = 0x40; |
sb8718 | 135:03997cc206a4 | 24 | status = i2c.write((EVAL_ADT7420_ADDR<<1), data_write, 2); |
sb8718 | 135:03997cc206a4 | 25 | if(status!=0) { |
sb8718 | 135:03997cc206a4 | 26 | pc.printf("I2C configuration error!\r\n"); |
sb8718 | 135:03997cc206a4 | 27 | while(1){ |
sb8718 | 130:d19783810c05 | 28 | } |
sb8718 | 131:8fb226cc407c | 29 | } |
sb8718 | 135:03997cc206a4 | 30 | goled.clearDisplay(); |
sb8718 | 135:03997cc206a4 | 31 | goled.splash(); |
sb8718 | 135:03997cc206a4 | 32 | ThisThread::sleep_for(3000); |
sb8718 | 135:03997cc206a4 | 33 | goled.clearDisplay(); |
sb8718 | 135:03997cc206a4 | 34 | |
sb8718 | 136:53a83b91854c | 35 | goled.setTextSize(2); |
sb8718 | 136:53a83b91854c | 36 | goled.printf("OLED Lab.\r\n"); |
sb8718 | 136:53a83b91854c | 37 | goled.setTextSize(1); |
sb8718 | 135:03997cc206a4 | 38 | goled.printf("HGU in Pohang \r\n\r\n"); |
sb8718 | 135:03997cc206a4 | 39 | |
sb8718 | 136:53a83b91854c | 40 | int16_t cursor_x = goled.cursor_x; |
sb8718 | 136:53a83b91854c | 41 | int16_t cursor_y = goled.cursor_y; |
sb8718 | 136:53a83b91854c | 42 | |
sb8718 | 135:03997cc206a4 | 43 | while(1) { |
sb8718 | 136:53a83b91854c | 44 | |
sb8718 | 136:53a83b91854c | 45 | goled.setTextCursor(cursor_x,cursor_y); |
sb8718 | 136:53a83b91854c | 46 | |
sb8718 | 135:03997cc206a4 | 47 | data_write[0] = ADT7420_TEMP_REG; |
sb8718 | 135:03997cc206a4 | 48 | i2c.write((EVAL_ADT7420_ADDR<<1),data_write,1,0); |
sb8718 | 136:53a83b91854c | 49 | i2c.read((EVAL_ADT7420_ADDR<<1 | 0x01), data_read, 2, 0); |
sb8718 | 135:03997cc206a4 | 50 | |
sb8718 | 135:03997cc206a4 | 51 | int tempval = ((int) data_read[0]<<8 | data_read[1]); |
sb8718 | 135:03997cc206a4 | 52 | tempval >>= 3; |
sb8718 | 135:03997cc206a4 | 53 | if((tempval & 0x1000) > 0) { |
sb8718 | 135:03997cc206a4 | 54 | temp = (tempval - 8192)/16.0; |
sb8718 | 135:03997cc206a4 | 55 | } else { |
sb8718 | 135:03997cc206a4 | 56 | temp = tempval/16.0; |
sb8718 | 135:03997cc206a4 | 57 | } |
sb8718 | 135:03997cc206a4 | 58 | |
sb8718 | 135:03997cc206a4 | 59 | pc.printf("Temperature: %0.4f\r\n", temp); |
sb8718 | 135:03997cc206a4 | 60 | goled.printf("Temperature: %0.4f\r\n", temp); |
sb8718 | 135:03997cc206a4 | 61 | goled.display(); |
sb8718 | 135:03997cc206a4 | 62 | |
sb8718 | 135:03997cc206a4 | 63 | ThisThread::sleep_for(1000); |
sb8718 | 118:88f30fadf08f | 64 | } |
sb8718 | 135:03997cc206a4 | 65 | } |