Arduino to Micro Epsilon

Bonjour,

Je travaille sur un projet qui utilise un capteur telemetrique "optoNCDT1320".
J'aimerais pouvoir connecter ce capteur a une carte Arduino pour relever les donnees correspondant a la distance.
Cependant je ne comprends pas comment relier le Rx+, Rx-, Tx+ et Tx- a la carte Arduino.

Le seul bout de code que j'ai ressemble a ca

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10,11); // RX, TX

void setup() {

 Serial.begin(115200);
 while (!Serial) {
   Serial.println("Port Connected");
 }
 mySerial.begin(115200);
 mySerial.println("Hello");
}

void loop() { // run over and over
  // mySerial.listen();
 // while there is data coming in, read it
 // and send to the hardware serial port:
 while (mySerial.available() > 0) {
   Serial.println("Data from port :");
   char inByte = mySerial.read();
   Serial.write(inByte);
   Serial.println(inByte);
   Serial.println("OK");
 }
}

lien vers votre produit et sa datasheet?

Datasheet : https://www.micro-epsilon.com/download/manuals/man--optoNCDT-1320--en.pdf

Bonsoir
la doc p 29 indique que la connection est à faire en RS422 (d'où les Rx+, Rx-, Tx+ et Tx-)
Chercher une carte d'adaptation RS422/Arduino
ici par exemple chez Electrodragon, mais on, en trouve aussi ailleurs

On est oblige d'utiliser ce type de shield ?
Exist il un moyen de le faire sans shield ?

vous avez besoin d’adapter les tensions et protocoles - c’est le plus simple

J'ai finalement utilise une droche de mon capteur qui delivre un courant de 4mA a 20mA en fonction de la distance. J'ai donc relie cette sortie avec une resistance de 250 ohm pour avoir une tension de 0-5V en sortie pour pouvoir lire cette donnee sur la broche analogique de la carte arduino.
Cependant les valeur que m'affiche le termial ne represente occunement la distance lu par le capteur et je ne comprends pas pourquoi. Pouvez vous m'aider ?

Voici le code utilise :

/*
 * Programmation du capteur optoNCDT 1320 de Micro Epsilon avec la broche
 * blanche qui delivre un courrant de 4mA a 20mA
 */
const double analogOutPin = A0;

double outputValue = 0;
float VoltValue = 0;
float distance = 0;

unsigned long DELAY_TIME = 10000; // 10 sec
unsigned long delayStart = 0; // the time the delay started
bool delayRunning = false; // true if still waiting for delay to finish

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);

  // start delay
  delayStart = millis();
  delayRunning = true;
}

void loop() {
  // put your main code here, to run repeatedly:  
  outputValue = analogRead(analogOutPin);
  
  // print the results to the Serial Monitor:
  Serial.print("Value = ");
  Serial.println(outputValue);

  //Convertion data to distance
  VoltValue = ((outputValue*5)/1024);  // Volt
 // Serial.println(VoltValue);
  distance = ((VoltValue*100)/5);    // Distance en mm
  //Serial.println(distance);
  Serial.println();

  // check if delay has timed out
  if (delayRunning && ((millis() - delayStart) >= DELAY_TIME)) {
    delayRunning = false; // finished delay -- single shot, once only
    //while(1);
  }
}
[code/]