TA的每日心情 | 无聊 2016-10-8 20:34 |
---|
签到天数: 10 天 连续签到: 1 天 [LV.3]偶尔看看II
|
接上一贴https://jingyan.eeboard.com/article/75348
板子到手后,还不熟悉,还没想好要做什么设计,那么就把板子上的设备先测一遍再说;
按照linksprite官网页面https://www.linksprite.com/wiki/index.php5?title=Mb...
一个一个地测来:
1、LED:双色LED;
2、KEY:两个按键;
3、BUZZER:一个无源蜂鸣器;
4、BLE:蓝牙功能;
5、UART:板子上的串口;
6、LIS3DH:SPI接口的三轴加速度传感器;
7、BMP180:IIC接口的温度和压力传感器;
测完后,只恨自己不会C++,短时间内也入不了门了,不过勉强还是能使用这块板子的,总结如下:
1、GPIO口可以正常使用,LED可以用来做指示灯,按键可以用来做输入,蜂鸣器可以用来做提示和警示,剩余引出的GPIO可以用来扩展一些功能;
2、蓝牙部分需要学习,可以用来跟手机进行通信;串口可以正常使用,可以用来跟PC机进行通信,特别是用于调试;
3、传感器可以正常使用,可以用在网上找的程序读出传感器数据,加速度传感器可以用来测倾角,振动等,温度传感器可以用来监测板卡温度,压力传感器暂时没想到用来做什么;
详细测试过程如下:
1、LED:直接在Mbed_BLE_Sensors_Tag板卡官网找程序,复制粘贴到main.cpp里面,保存编译下载运行,就可以观察到LED闪烁了。
#include "mbed.h" DigitalOut LED_R(P0_20); // Configure and control a digital output pinDigitalOut LED_G(P0_19);int main() { while(1) { LED_R=0; // low level is lighted LED_G=1; wait(0.5); LED_R=1; LED_G=0; wait(0.5); } }这里面涉及到两个函数,DigitalOut 和wait
2、KEY:也是直接在Mbed_BLE_Sensors_Tag板卡官网找程序,复制粘贴到main.cpp里面,保存编译下载运行,然后去按按键,观察现象。
#include "mbed.h" DigitalOut LED_R(P0_20); // Configure and control a digital output pin DigitalOut LED_G(P0_19); DigitalIn key1(P0_28); // Configure and control a digital input pin DigitalIn key2(P0_29); int main() { unsigned char i = 0; while(1) { if(!key1) // get key value { wait_ms(10); if(!key1) i = 1; } else if(!key2) { wait_ms(10); if(!key2) i = 2; } else i = 0; if(i == 1) // light LED { LED_G = !LED_G; LED_R = 1; wait(0.2); } else if(i == 2) { LED_R = !LED_R; LED_G = 1; wait(0.2); } else { LED_R = 1; LED_G = 1; } } }这里涉及到一个新的函数DigitalIn :
3、BUZZER:跟LED一样,都是IO口做数字输出用,只是换了一个IO口:
#include "mbed.h"DigitalOut buzzer(P0_22); // Configure and control a digital output pinint main() { unsigned char i = 1; while(1) { buzzer=!buzzer; wait_ms( i++ / 100 ); // frequency can be 1KHz/500Hz/333Hz } }4、BLE:蓝牙功能,板卡官网上最后面的地方给了一个例程,例程的网址是https://developer.mbed.org/users/helloqi/code/Link...
还给了安卓系统的蓝牙软件APK地址https://static1.squarespace.com/static/5039e08be4b0...
把例程下载到板子上,应用软件装在手机上,照着官网的步骤试了一下,可以用。
5、UART:串口直接在Mbed_BLE_Sensors_Tag板卡官网找程序,复制粘贴到main.cpp里面,保存编译下载运行,连接到PC机,用串口助手就可以看到现象;
#include<mbed.h>Serial pc(P0_23,P0_25); int main(void){ unsigned char i = 0; pc.baud(9600); while(1) { printf("--runing--%d--\r\n",i++); wait(0.5); }}这里涉及到一个新的函数Serial ,配置时只需要配置基本参数就可以了。
运行后,用串口助手可以看到测试程序发送的数据,直接使用中文字符编译时会警告串口助手看到乱码:
6、LIS3DH:SPI接口的三轴加速度传感器,没有去看手册,直接复制Mbed_BLE_Sensors_Tag板卡官网找程序,复制粘贴到main.cpp里面,保存编译下载运行,将加速度信息用串口送到串口助手,观察。
#include<mbed.h> uint16_t x_a,y_a,z_a; bool flag = 0; SPI spi_master(P0_6,P0_5,P0_7); //mosi miso sclk DigitalOut cs(P0_4); Serial pc(P0_23,P0_25); uint8_t LIS3DH_SPI_RD(uint8_t addr) { uint8_t temp; cs = 0; wait_us(10); spi_master.write(addr); temp=spi_master.write(0xff); wait_us(10); cs = 1; return temp; } void LIS3DH_SPI_WR(uint8_t addr,uint8_t wrdata) { cs = 0; wait_us(10); spi_master.write(addr); spi_master.write(wrdata); wait_us(10); cs = 1; } void SPI_LIS3DH_Init() { spi_master.format(8,3); spi_master.frequency(100000); wait_ms(5); LIS3DH_SPI_WR(0x24,0x80); wait_ms(5); LIS3DH_SPI_WR(0x20,0x17); LIS3DH_SPI_WR(0x23,0x80); } void get_val(void) { uint8_t Dx_L=1,Dy_L=1,Dz_L=1; uint8_t Dx_H=1,Dy_H=1,Dz_H=1; if(LIS3DH_SPI_RD(0x0f|0x80)==0x33) { printf("check device ok!\r\n"); flag=1; Dx_H=LIS3DH_SPI_RD(0x29|0x80); Dx_L=LIS3DH_SPI_RD(0x28|0x80); Dy_H=LIS3DH_SPI_RD(0x2b|0x80); Dy_L=LIS3DH_SPI_RD(0x2A|0x80); Dz_H=LIS3DH_SPI_RD(0x2d|0x80); Dz_L=LIS3DH_SPI_RD(0x2C|0x80); } else printf("check device err!\r\n"); x_a=Dx_H<<8|Dx_L/16; y_a=Dy_H<<8|Dy_L/16; z_a=Dz_H<<8|Dz_L/16; } int main(void) { SPI_LIS3DH_Init(); while(1) { get_val(); if(flag) { printf("Dx=:%d\r\n",x_a); printf("Dy=:%d\r\n",y_a); printf("Dz=:%d\r\n\r\n",z_a); flag=0; wait(1); } } }板卡静置时的加速度新信息:
倾斜板卡时的加速度信息:
7、BMP180:IIC接口的温度和压力传感器,按照Mbed_BLE_Sensors_Tag板卡官网的指导,我没有成功写出可以编译成功的程序,后面就在mebd上搜了一个BMP180的程序,将里面的示例程序修改一下IO口成功的。
// show how the BMP180 class works#include "mbed.h"#include "BMP180.h"Serial pc(P0_23,P0_25);int main(){ long temp ; long pressure; int error ; pc.baud(9600); BMP180 mybmp180(P0_17,P0_18); while(1) { error = mybmp180.readTP(&temp,&pressure,OVERSAMPLING_ULTRA_HIGH_RESOLUTION); printf("Temp is %.2f\r\n",(float)temp/10); printf("ressure is %ld\r\n",pressure); printf("Error is %d\r\n\r\n",error); wait(2); }}用手摸一会,温度和压力值会稍微有些变化,由于板卡温度已经超过36℃,所以我手摸上去,温度会稍微降低一些。
至此,板卡上的各个功能基本测完了。 |
|