【发布时间】:2015-04-08 16:33:24
【问题描述】:
使用 Blend Micro(基本上是 Arduino Uno + Nordic nRF8001)通过 BLE 收集和发送传感器数据。不知道如何发送浮点数。
这是一段代码:
if ((lib_aci_is_pipe_available(&aci_state, PIPE_AIR_QUALITY_SENSOR_TEMPERATURE_MEASUREMENT_TX)) && (lib_aci_is_pipe_available(&aci_state, PIPE_AIR_QUALITY_SENSOR_RELATIVE_HUMIDITY_TX)) && (lib_aci_is_pipe_available(&aci_state, PIPE_AIR_QUALITY_SENSOR_CARBON_MONOXIDE_LEVEL_TX)))
{
// Read DHT & MQ7 sensors
h = dht.readHumidity(); // Read humidity from DHT
t = dht.readTemperature(); // Read temperature as Celsius from DHT
f = dht.readTemperature(true); // Read temperature as Fahrenheit from DHT
int VoutAn = analogRead(MQ7PIN); //Read Vout in analog from MQ7
// Compute heat index
hi = dht.computeHeatIndex(f, h);
// Compute CO in PPM
float Vout = (5.0/1023)*VoutAn;
co = 100.468*(pow(((5/Vout)-1),-1.43));
lib_aci_send_data(PIPE_AIR_QUALITY_SENSOR_TEMPERATURE_MEASUREMENT_TX, &f, sizeof(f));
lib_aci_send_data(PIPE_AIR_QUALITY_SENSOR_RELATIVE_HUMIDITY_TX, &h, sizeof(h));
lib_aci_send_data(PIPE_AIR_QUALITY_SENSOR_CARBON_MONOXIDE_LEVEL_TX, &co, sizeof(co));
}
这是编译错误:
Arduino:1.0.6 (Mac OS X),主板:“Blend Micro 3.3V/16MHz(超频)”
BLE-DHT-MQ7-Test.ino:在函数“void loop()”中:
BLE-DHT-MQ7-Test.ino:287:错误:无法将“float*”转换为“uint8_t*” 对于参数 '2' 到 'bool lib_aci_send_data(uint8_t, uint8_t*, uint8_t)'
BLE-DHT-MQ7-Test.ino:288:错误:无法将“float*”转换为“uint8_t*” 对于参数 '2' 到 'bool lib_aci_send_data(uint8_t, uint8_t*, uint8_t)'
BLE-DHT-MQ7-Test.ino:289:错误:无法将“float*”转换为“uint8_t*” 对于参数 '2' 到 'bool lib_aci_send_data(uint8_t, uint8_t*, uint8_t)'
我对aci_send_data函数的理解是,参数2是一个uint8_t变量,指向内存中要发送的数据,这个数据可以是任何形式。但它似乎只有在数据位于 uint8_t 变量中时才有效 - 例如如果我将我的变量转换为 uint8_t,这将编译 - 但我需要浮点数......
所以我的问题:
我是否正确理解了 aci_send_data 函数?
如果是这样,我做错了什么?
如果没有,我该如何发送花车?
谢谢!
【问题讨论】:
标签: arduino bluetooth-lowenergy