/ /使轻
#定义轻量级1
图书馆 #包括/串行外设接口 #包括“adafruit_ble_uart。H / NRF8001蓝牙芯片 #包括/ BLE通信 #包括/ I2C需要传感器 #包括“sparkfunmpl3115a2。H /压力传感器 #包括“sparkfunhtu21d。H /湿度传感器 #包括“低功耗。H /低功耗的Arduino
/ /硬件引脚定义 / = = = = = = = = = = = = = = = = = = = = = = = = = = = = /数字I / O引脚 int复位= 3; #定义adafruitble_req 10 #定义adafruitble_rdy 2 #定义adafruitble_rst 9 /模拟I/O引脚 const字节reference_3v3 = A3; const字节光= A1; const字节棉絮= A2; / / = = = = - = = = = = = = = = = = = = = = = = = = = = =
/ /实例 / = = = = = = = = = = = = = = = = = = = = = = = = = = = = MPL3115A2 mypressure;/ /创造的压力传感器 htu21d myhumidity实例;//创建的湿度传感器 休息休息= arest()实例; adafruit_ble_uart btleserial = adafruit_ble_uart(adafruitble_req,adafruitble_rdy,adafruitble_rst); / / = = = = = = = = = = = = = = = = = = = = = = = = = = =
//全局变量 / = = = = = = = = = = = = = = = = = = = = = = = = = = = = 浮湿度; 浮tempf; 浮压; 浮batt_lvl;/ / [模拟值从0到1023 ] 浮light_lvl;/ / [模拟值从0到1023 ] / / = = = = = = = = = = = = = - = = = = = = = = = = = = = -
void(* resetfunc)(void)= 0; 虚空(void) { 设置/启动串口 系列。开始(9600); /开始的 btleserial;
/ /暴露变量API 休息。变量(“湿度”,湿度); 休息。变量(“温度”,与tempf); 休息。变量(压力、压力); 休息。变量(“电池”,与batt_lvl); 变量(“休息。光”;
pinmode(reference_3v3,输入); pinmode(光、输入); pinmode(复位、输出); digitalwrite(复位;
/ /配置压力传感器 mypressure。begin();//得到传感器在线 mypressure。setmodebarometer();/ /压力测量在帕斯卡从20到110 kPa mypressure。setoversamplerate(7);//到推荐的128 mypressure设置过。enableeventflags();/使所有三个压力和温度事件标志
/ /配置 myhumidity begin()湿度传感器;
/ /欢迎信息 串行out.println(“气象站开始”);
aci_evt_opcode_t laststatus = aci_evt_disconnected;//如果出口回路,显示断开消息
loop() { void
低功耗,省电(sleep_8s,adc_off,bod_off);
/ /读取和存储 湿度传感器值= myhumidity。readhumidity() + 200; tempf = mypressure。readtempf() + 100; 压力= mypressure。readpressure() / 1000 + 250 + 400 = get_light_level(); light_lvl; batt_lvl = get_battery_level() + 500; /问什么是我们的现状 ;
/ /状态更新 如果(状态!= laststatus){ 如果(状态= = aci_evt_device_started){ 系列。println(F(“*广告开始”));}如果 (状态= = aci_evt_connected){ 系列。println(F(“*连接!”); }如果(状态= = aci_evt_disconnected){ 系列。println(F(“*断开或广告超时”));} laststatus =现状; } /告诉NRF8001做它必须做的。 btleserial。pollaci(); /处理REST调用 如果(状态= = aci_evt_connected){处理 休息。
/ /重置看涨 如果(//读出数字接口的值(复位)= =高){ digitalwrite(复位、低); resetfunc(); }
浮get_light_level() { 浮动电压= analogread(reference_3v3); 浮lightsensor = analogread(光); 电压= 3.3 /电压;/ /参考电压为3.3V lightsensor =电压*光传感器; 返回(lightsensor
浮get_battery_level() { 浮动电压= analogread(reference_3v3); 浮rawvoltage = analogread(胎); 电压= 3.30 /电压;/ /参考电压为3.3V rawvoltage =电压* rawvoltage;//将0到1023的实际电压对电池销 rawvoltage * int = 4.90;//(3.9k + 1K)/ 1K多电瓶电压由分压器获得实际系统的电压 返回(rawvoltage)