#include <Arduino_FreeRTOS.h>
#include <queue.h>
QueueHandle_t xQueue;
void setup() {
Serial.begin(9600);
// Tạo một hàng đợi để chứa 5 số nguyên
xQueue = xQueueCreate(5, sizeof(int));
if (xQueue != NULL) {
xTaskCreate(vSenderTask, "Sender", 128, NULL, 1, NULL);
xTaskCreate(vReceiverTask, "Receiver", 128, NULL, 1, NULL);
}
}
void loop() {
// Không sử dụng loop() trong FreeRTOS
}
void vSenderTask(void *pvParameters) {
int i = 0;
while (1) {
// Gửi dữ liệu vào hàng đợi
xQueueSend(xQueue, &i, portMAX_DELAY);
Serial.print("Sent: ");
Serial.println(i);
i++;
vTaskDelay(1000 / portTICK_PERIOD_MS); // Chờ 1 giây
}
}
void vReceiverTask(void *pvParameters) {
int rxInt;
while (1) {
// Nhận dữ liệu từ hàng đợi
xQueueReceive(xQueue, &rxInt, portMAX_DELAY);
Serial.print("Received: ");
Serial.println(rxInt);
}
}