Ios 如何使用蓝牙LE(BLE迷你模块)在OSX上读取Arduino浮点值
红熊实验室BLE迷你模块()的SimpleControl示例可将模拟读数(如温度传感器)从Arduino发送到iOS/OSX,并带有以下Arduino代码:Ios 如何使用蓝牙LE(BLE迷你模块)在OSX上读取Arduino浮点值,ios,macos,bluetooth-lowenergy,Ios,Macos,Bluetooth Lowenergy,红熊实验室BLE迷你模块()的SimpleControl示例可将模拟读数(如温度传感器)从Arduino发送到iOS/OSX,并带有以下Arduino代码: uint16_t value = analogRead(ANALOG_IN_PIN) BLEMini_write(0x0B); BLEMini_write(value >> 8); BLEMini_write(value); 但是,我尝试将原始模拟读数(例如162)转换为实际温度读数(例如摄氏度/27.15),并将转换传输到i
uint16_t value = analogRead(ANALOG_IN_PIN)
BLEMini_write(0x0B);
BLEMini_write(value >> 8);
BLEMini_write(value);
但是,我尝试将原始模拟读数(例如162)转换为实际温度读数(例如摄氏度/27.15),并将转换传输到iOS/OSX,但在OSX上我只读取奇怪的值(例如13414)。我使用的Arduino代码如下:
int reading = analogRead(ANALOG_IN_PIN);
float voltage = reading * 5.0;
float temp = (voltage - 0.5) * 100;
int tempINT = temp;
uint16_t value = tempINT;
BLEMini_write(0x0B);
BLEMini_write(value >> 8);
BLEMini_write(value);
-(void) bleDidReceiveData:(unsigned char *)data length:(int)length
{
NSLog(@"Length: %d", length);
// parse data, all commands are in 3-byte
for (int i = 0; i < length; i+=3)
{
NSLog(@"0x%02X, 0x%02X, 0x%02X", data[i], data[i+1], data[i+2]);
if (data[i] == 0x0A) // Digital In data
{
if (data[i+1] == 0x01)
lblDigitalIn.stringValue = @"HIGH";
else
lblDigitalIn.stringValue = @"LOW";
}
else if (data[i] == 0x0B) // Analog In data
{
UInt16 Value;
Value = data[i+2] | data[i+1] << 8;
lblAnalogIn.stringValue = [NSString stringWithFormat:@"%d", Value];
}
}
}
OSX应用程序的代码部分如下所示:
int reading = analogRead(ANALOG_IN_PIN);
float voltage = reading * 5.0;
float temp = (voltage - 0.5) * 100;
int tempINT = temp;
uint16_t value = tempINT;
BLEMini_write(0x0B);
BLEMini_write(value >> 8);
BLEMini_write(value);
-(void) bleDidReceiveData:(unsigned char *)data length:(int)length
{
NSLog(@"Length: %d", length);
// parse data, all commands are in 3-byte
for (int i = 0; i < length; i+=3)
{
NSLog(@"0x%02X, 0x%02X, 0x%02X", data[i], data[i+1], data[i+2]);
if (data[i] == 0x0A) // Digital In data
{
if (data[i+1] == 0x01)
lblDigitalIn.stringValue = @"HIGH";
else
lblDigitalIn.stringValue = @"LOW";
}
else if (data[i] == 0x0B) // Analog In data
{
UInt16 Value;
Value = data[i+2] | data[i+1] << 8;
lblAnalogIn.stringValue = [NSString stringWithFormat:@"%d", Value];
}
}
}
-(void)bledireceivedata:(unsigned char*)数据长度:(int)长度
{
NSLog(@“长度:%d”,长度);
//解析数据时,所有命令均为3字节
对于(int i=0;i Value=data[i+2]| data[i+1]所有特征数据都是字节。一旦特征数据被读取,则由中央应用程序将数据转换为适当的格式(如外设制造商所述,或某些特征还包含格式描述符,该描述符将描述数据的格式)