#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;
int measurementType ; // deviceId, measurementType de type int
};
float readDistanceCM() {
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
int duration = pulseIn(PIN_ECHO, HIGH);
return duration * 0.017;
}
QueueHandle_t queue;
void setup() {
Serial.begin(9600);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, OUTPUT);
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 result = readDistanceCM();// resultat du traitement de readDistanceCM dans "distance"
Serial.print("Device ID:"); // afficher les 3 valeurs "Device ID:","Measurement type: ", "Valeur en cm: "
Serial.println(element.deviceId); // afficher les 3 valeurs "Device ID:","Measurement type: ", "Valeur en cm: "
Serial.print("Measurement type: "); // afficher les 3 valeurs "Device ID:","Measurement type: ", "Valeur en cm: "
Serial.println(element.measurementType); // afficher les 3 valeurs "Device ID:","Measurement type: ", "Valeur en cm: "
Serial.print("Valeur en cm:"); // afficher les 3 valeurs "Device ID:","Measurement type: ", "Valeur en cm: "
Serial.println(result); // afficher les 3 valeurs "Device ID:","Measurement type: ", "Valeur en cm: "
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
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND