私は学校の上級プロジェクトに取り組んでおり、HM-19 Bluetooth 5.0 モジュールを使用して別の Bluetooth 5.0 モジュールに接続し、マスタースレーブ接続を確立する必要があります。
それは問題なく実行できますが、超音波センサーがスキャンを実行するために必要なコードを含めると、HM-19 へのコマンドは何も返さず、接続の検索などの基本的な機能を実行できません。超音波センサー コードを使用した場合と使用しない場合でテストしましたが、コードのセンサー部分を使用すると問題が発生します。
明確にするために、私がやろうとしているのは、Bluetooth 5.0チップを別のチップに接続し、通常のコマンドを実行しながら、手を前に置いたときにシリアルモニターに距離を入力することだけです。これは単なるテストです。それが完了したら、本当にやりたいことに移ります。
プロジェクトの出発点にすぎません。ボイドループにセンサーとBluetoothチップの関数呼び出しがあります。そこにあるのはそれだけです。
この問題を解決する方法を知りたいだけです。超音波センサーでスキャンして Bluetooth モジュールにコマンドを送信するにはどうすればよいですか? どんな助けでも大歓迎です。
[センサーがコメントされたときの結果は次のとおりです][1] および [チップが言うことを返すコードの部分に到達できない無限ループにつながる失敗した結果は次のとおりです][2]。最後に、ほとんどのリンクには HM-10 用のものが含まれていますが、コマンドは基本的に HM-19 と同じです。スタックオーバーフローにより、文字数が増えるまでこの投稿を編集できないため、さらに追加しています。これを読んでいるあなたが良い昼/夜の人を持っていることを願っています.
これが私のコードです:
// SerialIn_SerialOut_HM-10_01
//
// Uses hardware serial to talk to the host computer and AltSoftSerial for communication with the bluetooth module
//
// What ever is entered in the serial monitor is sent to the connected device
// Anything received from the connected device is copied to the serial monitor
// Does not send line endings to the HM-10
//
// Pins
// BT VCC to Arduino 5V out.
// BT GND to GND
// Arduino D8 (SS RX) - BT TX no need voltage divider
// Arduino D9 (SS TX) - BT RX through a voltage divider (5v to 3.3v)
//
#include <AltSoftSerial.h>
AltSoftSerial BTserial;
// https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
char c=' ';
boolean NL = true;
const int trigPin = 9;
const int echoPin = 10;
float duration, distance;
boolean wait_your_turn = false; //My attempt to make sure the sensor and the Bluetooth module don't interfere with each other
//if I'm sending data from the serial monitor to the bluetooth module and vice versa it switches to true and the bluetooth module
//does its thing, so the sensor doesn't get in the way.
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
Serial.print("Sketch: "); Serial.println(__FILE__);
Serial.print("Uploaded: "); Serial.println(__DATE__);
Serial.println(" ");
BTserial.begin(9600);
Serial.println("BTserial started at 9600");
}
void loop()
{
Bluetooth();
Sensor();
}
void Sensor(){
if((wait_your_turn == true))
{}
else
{
Serial.println("Scanning for stuff.");
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration*.0343)/2;
if(distance <= 20)
{
Serial.println(distance);
delay(500);
}
}
}
void Bluetooth()
{
if (Serial.available())
{
if(wait_your_turn == false)
Serial.println("Serial is available");
wait_your_turn = true;
while(Serial.available()>0)
c = Serial.read();
Serial.write(c);
if(c!=10&c!=13)
BTserial.print(c);
}
if (BTserial.available())
{
// Serial.print("We are at the bluetooth portion.");
while(BTserial.available())
c = BTserial.read();
Serial.print(c);
wait_your_turn = false;
}
}
[1]: https://i.stack.imgur.com/Dn4i0.png
[2]: https://i.stack.imgur.com/s9Ifv.png