Page 1 sur 1

Détecteur laser VL5310

Posté : mar. 31 août 2021 09:35
par couvelaere
Bonjour,
Une présentation du détecteur laser VL5310 qui fonctionne à toutes les échelles.

https://db5pap001files.storage.live.com ... pmode=none

Voici le programme qui vous permettra d'utiliser des lasers VL5310 en nombre non limité sur vos réseaux. J'ai documenté le mieux que j'ai pu le code et bien sûr vous pouvez l'adapter à votre besoin. Une vidéo qui est comme dab mauvaise, on peut pas être bon partout..

https://youtu.be/09p7sDttmUc

/* programme de test d'un système de capture
* du passage d'un train par des lasers du commerce
* VL5310 et Arduino
* Francis Couvelaére, 30 août 2021
* programme libre de droits
*/
// déclaration des librairies nécessaires
#include "Wire.h"
#include "VL53L0X.h"
// déclaration des deux détecteurs
VL53L0X DET101;
VL53L0X DET102;
// création des variables des deux détecteurs
int etatdet101 = 0;
int etatdet102 = 0;
void setup()
{
// initialisation des détecteurs et attribution d'adresses I2C différentes
// mise à l'état bas des deux entrées XSHUT des VL5310
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
delay(500);
Wire.begin();
Serial.begin (9600);
pinMode(4, INPUT);
delay(150);
DET101.init(true);
delay(100);
DET101.setAddress((uint8_t)22);
pinMode(5, INPUT);
delay(150);
DET102.init(true);
delay(100);
DET102.setAddress((uint8_t)25);
Serial.println("les détecteurs sont opérationnels");
// démarrage de la détection
DET101.startContinuous();
DET102.startContinuous();
}
void loop()
{
//traitement de la sortie du canton 01 vers le canton 07 via l'aiguillage AG01 par le détecteur DET101
etatdet101 = (DET101.readRangeContinuousMillimeters()); // le laser DET101 mesure la distance libre au dessus de lui
if (etatdet101 < 200) { // on prend 200 mm pour référence, valeur adaptable sur le circuit après tests
Serial.println("il y a un train qui roule en direction de l'aiguillage AG02 et du canton 7");
}
else {
Serial.println("il n'y a pas de train qui roule en direction de l'aiguillage AG02 et du canton 7");
}
if (DET101.timeoutOccurred()) {
Serial.print("DET101, temps de capture dépassé");
}
//traitement de la sortie du canton 01 vers le canton 06 via l'aiguillage AG02 par le détecteur DET102
etatdet102 = (DET102.readRangeContinuousMillimeters()); // le laser DET102 mesure la distance libre au dessus de lui
if (etatdet102 < 200) { // on prend 200 mm pour référence, valeur adaptable sur le circuit après tests
Serial.println("il y a un train qui roule en direction de l'aiguillage AG01 et du canton 6");
}
else {
Serial.println("il n'y a pas de train qui roule en direction de l'aiguillage AG01 et du canton 6");
}
if (DET102.timeoutOccurred()) {
Serial.print("DET102, temps de capture dépassé");
}
Serial.println();
delay(2000);
}