Seongbin Lim
/
sb_first_project
This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.
Diff: main.cpp
- Revision:
- 135:03997cc206a4
- Parent:
- 134:139f37fecf3d
- Child:
- 136:53a83b91854c
--- a/main.cpp Tue May 19 07:58:35 2020 +0000 +++ b/main.cpp Tue May 19 09:19:38 2020 +0000 @@ -1,51 +1,57 @@ #include "mbed.h" -#include "ReceiverIR.h" +#include "Adafruit_SSD1306.h" -Serial pc(PA_2, PA_3, 115200); //IR receiver D4 -ReceiverIR ir_rx(D3); +#define ADT7420_TEMP_REG (0x00) +#define ADT7420_CONF_REG (0x03) +#define EVAL_ADT7420_ADDR (0x48) + +I2C i2c(I2C_SDA, I2C_SCL); +RawSerial pc(USBTX, USBRX, 115200); + + +Adafruit_SSD1306_SPI goled(D11, D13, D10, D4, D7, 64, 128); -void display_data(uint8_t *buf, int bitlength) { - const int n = bitlength / 8 + (((bitlength % 8) != 0) ? 1 : 0); - for (int i = 0; i < n; i++) { - pc.printf("%02X", buf[i]); - } - for (int i = 0; i < 8 - n; i++) { - pc.printf("--"); - } -} -int receive(RemoteIR::Format *format, uint8_t *buf, int bufsiz, int timeout = 100) { - int cnt = 0; - while (ir_rx.getState() != ReceiverIR::Received) { - cnt++; - if (timeout < cnt) { - return -1; +int main() { + + int status; + float temp; + char data_write[2]; + char data_read[2]; + + i2c.frequency(100000); + data_write[0] = ADT7420_CONF_REG; + data_write[1] = 0x40; + status = i2c.write((EVAL_ADT7420_ADDR<<1), data_write, 2); + if(status!=0) { + pc.printf("I2C configuration error!\r\n"); + while(1){ } } - return ir_rx.getData(format, buf, bufsiz * 8); -} - - -int main() { - - pc.printf("\r\n\r\n\r\n\r\nStart!!\r\n"); - - while (1) { - RemoteIR::Format format; - uint8_t buf[32]; - int bitcount; -// if (ir_rx.getState() == ReceiverIR::Received) { -// bitcount = ir_rx.getData(&format, buf, sizeof(buf)); -// } - - bitcount = receive(&format, buf, sizeof(buf)); - if (bitcount < 0) { - continue; - } - - display_data(buf, bitcount); - - + goled.clearDisplay(); + goled.splash(); + ThisThread::sleep_for(3000); + goled.clearDisplay(); + + goled.printf("%ux%u OLED Lab. \r\n", goled.width(), goled.height()); + goled.printf("HGU in Pohang \r\n\r\n"); + + while(1) { + data_write[0] = ADT7420_TEMP_REG; + i2c.write((EVAL_ADT7420_ADDR<<1),data_write,1,0); + i2c.read((EAVL_ADT7420_ADDR<<1 | 0x01), data_read, 2, 0); + + int tempval = ((int) data_read[0]<<8 | data_read[1]); + tempval >>= 3; + if((tempval & 0x1000) > 0) { + temp = (tempval - 8192)/16.0; + } else { + temp = tempval/16.0; + } + + pc.printf("Temperature: %0.4f\r\n", temp); + goled.printf("Temperature: %0.4f\r\n", temp); + goled.display(); + + ThisThread::sleep_for(1000); } -} - - +} \ No newline at end of file