在线时间1187 小时
UID3174487
注册时间2015-10-31
NXP金币2193
TA的每日心情 | 开心 6 小时前 |
---|
签到天数: 2626 天 [LV.Master]伴坛终老
金牌会员
- 积分
- 10671
- 最后登录
- 2024-4-24
|
上一篇oled可以显示了,下来的工作就简单了。买的甲醛模块也是串口输出的,这样我们只需要配置两个串口就可以显示甲醛和PM2.5的数据了。上次没有好好看原理图而出现了重大失误,所以专门制了一张图表来标识LPC824Lite开发板上可用的GPIO,位置按照板子预留的GPIO口一一对应。
这也得益于LPC的开关矩阵使用起来非常的灵活。
下面是读取传感器的串口设置,和数据输出格式,按照格式读取就可以得到相应的数据了。
来张效果图,因为在室内所以空气质量还是挺好的。
最后贴上代码:
- #include "mbed.h"
- #include "oled.h"
- AnalogIn ain(P0_23);
- DigitalOut myled1(P0_7);
- DigitalOut myled8(P0_18);
- //TXD RXD
- Serial uart0(P0_4,P0_0); //usb virtual uart
- Serial uart1(P0_7,P0_18); //PM2.5
- Serial uart2(P0_6,P0_13); //CH2O
- //MOSI MISO SCK SSEL
- SPI oled(P0_26,P0_25,P0_24,P0_15);
- DigitalOut oled_res(P0_22);
- DigitalOut oled_dc(P0_21);
- DigitalOut oled_cs(P0_20);
- Timer time_elapsed;
- char string[30]={"hello NXP!!!"};
- char str[15] = {};
- float temp;
- float pm25_data_out;
- unsigned int ch2o_data_out;
- float PM25_DATA(void);
- unsigned int CH2O_DATA(void);
-
- int main() {
- uart0.baud(115200);
- uart1.baud(2400);
- uart2.baud(9600);
- wait(0.2);
- OLED_Init();
- OLED_Clear();
-
- while(1) {
- // OLED_ShowString(0,0,string,16);
- time_elapsed.start();
- sprintf(str,"ADC =%5d",ain.read_u16()>>4);
- OLED_ShowString(0,0,str,16);
- sprintf(str,"Vol = %4.2f",(ain.read_u16()>>4) * 3.3 / 4096);
- OLED_ShowString(0,2,str,16);
-
- sprintf(str,"CH2O=%4dppb",CH2O_DATA());
- OLED_ShowString(0,4,str,16);
- uart2.printf(str);
-
- temp = PM25_DATA();
- sprintf(str,"PM25=%6.2fug/m3",temp);
- OLED_ShowString(0,6,str,16);
-
- sprintf(str," PM25=%6.2fug/m3",temp);
- uart2.printf(str);
-
- sprintf(str," %d\n",time_elapsed.read_ms());
- time_elapsed.stop();
- uart2.printf(str);
- }
- }
复制代码
|
|