首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法将我的加速度计数据xyz转换为频率。

我无法将我的加速度计数据xyz转换为频率。
EN

Stack Overflow用户
提问于 2021-03-12 04:29:44
回答 1查看 63关注 0票数 0

我正在使用Arduino nano ble 33,我想将x,y,z的加速度计值转换成频率,然后这些频率值需要通过Arduino nano 33 ble发送。有人能帮我解决这个问题吗?提前谢谢。

这是我的代码:代码现在只从加速度计读取原始数据。

代码语言:javascript
复制
< #include "Arduino.h"
    #include <ArduinoBLE.h>
    #include "Nano33BLEAccelerometer.h"
    // #include "arduinoFFT.h"
    
    #define BLE_BUFFER_SIZES    20
    #define BLE_DEVICE_NAME     "Nano 33 BLE"
    #define BLE_LOCAL_NAME      "Accelerometer BLE"
    
    
    Nano33BLEAccelerometerData accelerometerData;
    
    BLEService BLEAccelerometer("590d65c7-3a0a-4023-a05a-6aaf2f22441c");
    BLECharacteristic accelerometerXBLE("0004", BLERead | BLENotify | BLEBroadcast, 
    BLE_BUFFER_SIZES);
    BLECharacteristic accelerometerYBLE("0005", BLERead | BLENotify | BLEBroadcast, BLE_BUFFER_SIZES);
    BLECharacteristic accelerometerZBLE("0006", BLERead | BLENotify | BLEBroadcast, BLE_BUFFER_SIZES);
    
    
    char bleBuffer[BLE_BUFFER_SIZES];
    
    void setup()
    {
        Serial.begin(115200);
        while(!Serial);
    
        if (!BLE.begin()) 
        {
            while (1);    
        }
        else
        {
            BLE.setDeviceName(BLE_DEVICE_NAME);
            BLE.setLocalName(BLE_LOCAL_NAME);
            BLE.setAdvertisedService(BLEAccelerometer);
    
            BLEAccelerometer.addCharacteristic(accelerometerXBLE);
            BLEAccelerometer.addCharacteristic(accelerometerYBLE);
            BLEAccelerometer.addCharacteristic(accelerometerZBLE);
    
            BLE.addService(BLEAccelerometer);
            BLE.advertise();
    
            Accelerometer.begin();
            accelerometerXBLE.writeValue((byte)0x01);
            
            accelerometerYBLE.writeValue((byte)0x01);
            accelerometerZBLE.writeValue((byte)0x01); 
            Serial.println("X, Y, Z");
        }
    }
    
    void loop()
    {
        BLEDevice central = BLE.central();
        if(central)
        {
          Serial.println("Connected");
            int writeLength;
            while(central.connected())
            {            
                if(Accelerometer.pop(accelerometerData))
                {
                    writeLength = sprintf(bleBuffer, "%f", accelerometerData.x);
                    accelerometerXBLE.writeValue(bleBuffer);
                    writeLength = sprintf(bleBuffer, "%f", accelerometerData.y);
                    accelerometerYBLE.writeValue(bleBuffer);
                    writeLength = sprintf(bleBuffer, "%f", accelerometerData.z);
                    accelerometerZBLE.writeValue(bleBuffer);      
                    delay(1000);
                    Serial.printf("%f,%f,%f\r\n", accelerometerData.x, accelerometerData.y, 
                     accelerometerData.z);
                }
            }
        }
    } >
EN

回答 1

Stack Overflow用户

发布于 2021-03-12 14:34:00

你所要求的并不简单。您将需要使用傅立叶变换。点击此处阅读:https://see.stanford.edu/materials/lsoftaee261/chap8.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66590105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档