I2C 实例

LinkNode上的BMP180传感器采用的是I2C进行通信。

本例会利用I2C获取温度和气压的数据。

硬件清单

  1. LinkNode
  2. Micro USB 数据线
  3. 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);
   }
}