Web Analytics

K Lab.

モノ作りしたり、写真撮ったり。

VL53L0XをArduinoで複数制御する。

どうもみなさんこんにちはK LABです。

今回は開発中のロボット、『pal』に搭載するVL53L0Xを複数制御してみました。


回路はこんな感じです。

f:id:KLAB:20210418111031j:plain
回路図


コードはこのようになっています。
※このコードは下記のコードを参考にし、作成しました。github.com

#include <Wire.h>//使用するライブラリをインクルード
#include <VL53L0X.h>

VL53L0X sensor;
VL53L0X sensor2;

void setup()
{

pinMode(5, OUTPUT); //XSHUIを5に接続
pinMode(4, OUTPUT);//XSHUIを4に接続
digitalWrite(4, LOW);//ここからセンサのi2cアドレスを書き換える処理
digitalWrite(5, LOW);

delay(500);
Wire.begin();//I2C通信ライブラリ(Wire)の初期化


Serial.begin (9600);
Serial.println("プログラムが開始しました\n");

pinMode(4, INPUT);
delay(150);
Serial.println("00");
sensor.init(true);//距離センサ(VL53L0X)の初期化

Serial.println("01");
delay(100);
sensor.setAddress((uint8_t)22);
Serial.println("02");

pinMode(5, INPUT);
delay(150);
sensor2.init(true);//距離センサ(VL53L0X)の初期化
Serial.println("03");
delay(100);
sensor2.setAddress((uint8_t)25);
Serial.println("04");

Serial.println("addresses set");
sensor.startContinuous(100);//連続測定を開始する、100⇒100ms間隔でサンプリングする、ここに0を指定した場合は可能な限り頻繁にサンプリングする
sensor2.startContinuous(100);

}

void loop()
{
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;


for (byte i = 1; i < 120; i++)
{

Wire.beginTransmission (i);
if (Wire.endTransmission () == 0)
{
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
count++;
delay (1); // maybe unneeded?
} // end of good response
} // end of for loop
Serial.println ("Done.");
Serial.print ("Found ");
Serial.print (count, DEC);
Serial.println (" device(s).");

int dist; //センサの出力[mm]を保存する変数
dist = sensor.readRangeContinuousMillimeters(); //センサーから距離[mm]
Serial.print(dist);
Serial.print("[mm]\n");

/*タイムアウトが起きた場合はタイムアウトが起きたことを出力する。*/
if (sensor.timeoutOccurred()){
Serial.print("タイムアウトが起きました\n");
}

int rdist; //センサの出力[mm]を保存する変数
rdist = sensor2.readRangeContinuousMillimeters(); //センサーから距離[mm]
Serial.print(rdist);
Serial.print("[mm]\n");

/*タイムアウトが起きた場合はタイムアウトが起きたことを出力する。*/
if (sensor2.timeoutOccurred()){
Serial.print("タイムアウトが起きました\n");
}

delay(3000);
}