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@135:03997cc206a4, 2020-05-19 (annotated)
- Committer:
- sb8718
- Date:
- Tue May 19 09:19:38 2020 +0000
- Revision:
- 135:03997cc206a4
- Parent:
- 134:139f37fecf3d
- Child:
- 136:53a83b91854c
Lab 11_1
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 | 135:03997cc206a4 | 9 | RawSerial pc(USBTX, USBRX, 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 | 135:03997cc206a4 | 35 | goled.printf("%ux%u OLED Lab. \r\n", goled.width(), goled.height()); |
sb8718 | 135:03997cc206a4 | 36 | goled.printf("HGU in Pohang \r\n\r\n"); |
sb8718 | 135:03997cc206a4 | 37 | |
sb8718 | 135:03997cc206a4 | 38 | while(1) { |
sb8718 | 135:03997cc206a4 | 39 | data_write[0] = ADT7420_TEMP_REG; |
sb8718 | 135:03997cc206a4 | 40 | i2c.write((EVAL_ADT7420_ADDR<<1),data_write,1,0); |
sb8718 | 135:03997cc206a4 | 41 | i2c.read((EAVL_ADT7420_ADDR<<1 | 0x01), data_read, 2, 0); |
sb8718 | 135:03997cc206a4 | 42 | |
sb8718 | 135:03997cc206a4 | 43 | int tempval = ((int) data_read[0]<<8 | data_read[1]); |
sb8718 | 135:03997cc206a4 | 44 | tempval >>= 3; |
sb8718 | 135:03997cc206a4 | 45 | if((tempval & 0x1000) > 0) { |
sb8718 | 135:03997cc206a4 | 46 | temp = (tempval - 8192)/16.0; |
sb8718 | 135:03997cc206a4 | 47 | } else { |
sb8718 | 135:03997cc206a4 | 48 | temp = tempval/16.0; |
sb8718 | 135:03997cc206a4 | 49 | } |
sb8718 | 135:03997cc206a4 | 50 | |
sb8718 | 135:03997cc206a4 | 51 | pc.printf("Temperature: %0.4f\r\n", temp); |
sb8718 | 135:03997cc206a4 | 52 | goled.printf("Temperature: %0.4f\r\n", temp); |
sb8718 | 135:03997cc206a4 | 53 | goled.display(); |
sb8718 | 135:03997cc206a4 | 54 | |
sb8718 | 135:03997cc206a4 | 55 | ThisThread::sleep_for(1000); |
sb8718 | 118:88f30fadf08f | 56 | } |
sb8718 | 135:03997cc206a4 | 57 | } |