#define PIN_TRIG 13				// define de la pin
#define PIN_ECHO 12				// define de la pin

struct sensor {					// declaration de la structure sensor{
		int deviceId;						// deviceId, measurementType de type int
    int measurementType;
};
 
float readDistanceCM() {			// permet de la distance 

  digitalWrite(PIN_TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(PIN_TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(PIN_TRIG, LOW);
  int duration = pulseIn(PIN_ECHO, HIGH);
  return duration * 0.034 / 2;
}

QueueHandle_t queue;
 
void setup() {
 
		Serial.begin(115200);
    pinMode(PIN_TRIG, OUTPUT);		// serial config
		pinMode(PIN_TRIG, INPUT);			// pinMode


  queue = 	xQueueCreate( 10, sizeof( struct sensor ) );	// https://greenwaves-technologies.com/manuals/BUILD/FREERTOS/html/group__xQueueCreate.html
 
  if(queue == NULL){
    Serial.println("Error creating the queue");
  }
 
}
 
void loop() {
 
// Start a new measurement:


  if(queue == NULL){
    Serial.println("Queue was not created");
    return;
  }
 
		for(int i= 0;i<10;i++)						// lire 10 fois les données de la structure 
  {
    
    struct sensor mySensor;
    mySensor.deviceId = i;
    mySensor.measurementType = rand()%10 +1; 	// mettre une valeur aléatoire en 0 et 10, utilisation de rand;
  
    xQueueSend(queue,&mySensor, portMax_DELAY);  		// https://greenwaves-technologies.com/manuals/BUILD/FREERTOS/html/group__xQueueSend.html
  }
 
  struct sensor element;
 
  for(int i = 0; i<10; i++){
    xQueueReceive(queue, &element, portMax_DELAY);		// https://greenwaves-technologies.com/manuals/BUILD/FREERTOS/html/group__xQueueReceive.html
 
			float distance = readDistanceCM();	// resultat du traitement de readDistanceCM dans "distance"
		Serial.print("Device ID: ");
    Serial.println(element.deviceId);
 
    Serial.print("Measurement type: ");
    Serial.println(element.measurementType);
 
    Serial.print("Valeur en cm: ");
    Serial.println(distance);			// afficher les 3 valeurs "Device ID:","Measurement type: ", "Valeur en cm: "
		Serial.println('\n');
    vTaskDelay(1000 / portTICK_PERIOD_MS);					// période de 1 s
  }
 
  Serial.println();
  delay(4000);
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23