```### 前提・実現したいこと ESP-32を用いて加速度センサーの値をbluetooth通信によりシリアルモニタに表示させる arduino環境で加速度センサーの値をESP-32を用いてbluetooth通信によりシリアルモニタに表示させるシステムを作っています。ボードに書き込み、実行すると通信は繋がるのですが加速度の値の変化が読み取れず、一定の値が表示され続けてしまいます。bluetooth通信ではなく有線であればセンサーの値の変化も正確に表示できている状況です。 ### 発生している問題・エラーメッセージ
エラーメッセージなどは表示されていません。
実際にシリアルモニタ表示される文字列
x:175.0xg y:175.0yg z:175.0zg
上記の値が変化することなく表示され続けます。
### 該当のソースコード
#include "BluetoothSerial.h"
BluetoothSerial bt;
const char *bt_name = "ESP32";
int S1_PIN = 4;
int S2_PIN = 13;
int S3_PIN = 14;
void setup() {
Serial.begin(115200);
bt.begin(bt_name);
pinMode(S1_PIN, OUTPUT);
pinMode(S2_PIN, OUTPUT);
pinMode(S3_PIN, OUTPUT);
}
void loop() {
// 地球の重力である1Gの加速度(m/s^2)
float ms2 = 9.80665;
// 電源電圧5V時のオフセット電圧(0G = 2.5V = 2500mV)
float offset_voltage = 2500.0;
// XYZの電圧(mV)を取得する
float x = (analogRead(S1_PIN) / 1024.0) * 5.0 * 1000;
float y = (analogRead(S2_PIN) / 1024.0) * 5.0 * 1000;
float z = (analogRead(S3_PIN) / 1024.0) * 5.0 * 1000;
// XYZからオフセット電圧を引いた電圧を求める
x = x - offset_voltage;
y = y - offset_voltage;
z = z - offset_voltage;
// XYZから重力を求める
float xg = x / 1000.0;
float yg = y / 1000.0;
float zg = z / 1000.0;
// XYZの重力から加速度(m/s^2)を算出して出力する
bt.print("X : ");
bt.print(xg * ms2);
bt.print(" Y : ");
bt.print(yg * ms2);
bt.print(" Z : ");
bt.print(zg * ms2);
bt.println(" m/s^2");
delay(100);
}
### 試したこと 加速度センサーの表示させる値を三軸ではなくX軸のみで行い、データ量を少なくしましたが効果はありませんでした。 ### 補足情報(FW/ツールのバージョンなど) ```ここに言語を入力 int S1_PIN = 4; int S2_PIN = 13; int S3_PIN = 14; void setup() { Serial.begin(115200); pinMode(S1_PIN, OUTPUT); pinMode(S2_PIN, OUTPUT); pinMode(S3_PIN, OUTPUT); } void loop() { // 地球の重力である1Gの加速度(m/s^2) float ms2 = 9.80665; // 電源電圧5V時のオフセット電圧(0G = 2.5V = 2500mV) float offset_voltage = 2500.0; // XYZの電圧(mV)を取得する float x = (analogRead(S1_PIN) / 1024.0) * 5.0 * 1000; float y = (analogRead(S2_PIN) / 1024.0) * 5.0 * 1000; float z = (analogRead(S3_PIN) / 1024.0) * 5.0 * 1000; // XYZからオフセット電圧を引いた電圧を求める x = x - offset_voltage; y = y - offset_voltage; z = z - offset_voltage; // XYZから重力を求める float xg = x / 1000.0; float yg = y / 1000.0; float zg = z / 1000.0; // XYZの重力から加速度(m/s^2)を算出して出力する Serial.print("X : "); Serial.print(xg * ms2); Serial.print(" Y : "); Serial.print(yg * ms2); Serial.print(" Z : "); Serial.print(zg * ms2); Serial.println(" m/s^2"); delay(100); }
上記のBLE回線を使用しないコードであれば値の変化を正しく読み取れるので配線に問題はないと思われます。
arduino ide
ESP32-DevKitC ESP-WROOM-32開発ボード
三軸加速度センサー