I2C 实例
LinkNode上的BMP180传感器采用的是I2C进行通信。
本例会利用I2C获取温度和气压的数据。
硬件清单
- LinkNode
- Micro USB 数据线
- USB UART线
步骤
1. 编写程序
- 打开mbed在线编译器,导入BMP180_example
- 在该程序的基础上,根据下面提供的软件清单修改main.cpp
- 然后编译生成Hex文件
- PC接上LinkNode,将生成的hex文件复制到识别的系统磁盘中
- 完成下载后,按一次板上的RESET键对程序进行复位
2. 测试
- 用USB UART线连接LInkNode的串口
- 在PC
软件清单
include <stdio.h>
include "mbed.h"
include "BMP180.h"
Serial pc(P0_23,P0_25);
DigitalOut led(P0_20);
I2C i2c(P0_17, P0_18);
BMP180 bmp180(&i2c);
int main(void)
{
led=0;
while(1)
{
if (bmp180.init() != 0)
{
printf("Error communicating with BMP180\n");
}
else
{
printf("Initialized BMP180\n");
break;
}
wait(1);
}
while(1)
{
bmp180.startTemperature();
wait_ms(5); // Wait for conversion to complete
float temp;
if(bmp180.getTemperature(&temp) != 0)
{
printf("Error getting temperature\n");
continue;
}
bmp180.startPressure(BMP180::ULTRA_LOW_POWER);
wait_ms(10); // Wait for conversion to complete
int pressure;
if(bmp180.getPressure(&pressure) != 0)
{
printf("Error getting pressure\n");
continue;
}
printf("Pressure = %d Pa Temperature = %f C\n", pressure, temp);
wait(1);
}
}