功能 | 模組 | 通訊 |
在車上顯示即時資訊 | 黃藍雙色SSD1306 0.96吋 OLED | I2C 共用 |
操作OLED面板 | 遊戲搖杆、按鈕 | OUT1,2、訊號線1條 |
在車上秤重,防止運送時的突發狀況(實際demo用手機當作食物去測重) | 秤重模組HX711 | I2C 共用 |
個別房卡辨識 | RFID模組MFRC-522、房卡(RFID) | I2C 共用(UART、I2C、SPI皆可) |
播放相應提示聲音 | wav,mp3解碼器DFPlayer、MicroSD卡、喇叭 |
UART 2條 |
播放相應提示聲音2 | 無源蜂鳴器 | 訊號線1條 |
與Arduino Mega 2560開發版連線藍芽模組 | HC-05 | UART 2條 |
{ "menu": [1, 2, 0, 0, 0, 3, 1, 8, 33, 0], "room": "h", "rfid": [0, 9, 10, 5], } |
String payload = ""; int menu_latest[10]; int UID_latest[4]; DynamicJsonDocument doc(800); deserializeJson(doc, payload); for (int i = 0; i < 10; i++) menu_latest[i] = (int)doc["menu"][i]; String temp = doc["room"]; char room_number_latest = temp[0]; for (int i = 0; i < 4; i++) UID_latest[i] = (int)doc["rfid"][i]; |
template <typename T> class Queue { struct Node { T room_number; int menu[10]; int UID[4]; Node *next; long waiting_time; }; Node *head; Node *tail; int qsize; long start_time; public: Queue() { head = NULL; tail = NULL; qsize = 0; } ... void put(int (&menu)[10], const T &room_number, int (&UID)[4]) { Node *newNode = new Node; if (qsize) { tail->next = newNode; newNode->room_number = room_number; for (int i = 0; i < 10; i++) newNode->menu[i] = menu[i]; for (int i = 0; i < 4; i++) newNode->UID[i] = UID[i]; newNode->waiting_time = millis(); newNode->next = NULL; tail = newNode; } else { head = tail = newNode; newNode->room_number = room_number; for (int i = 0; i < 10; i++) newNode->menu[i] = menu[i]; for (int i = 0; i < 4; i++) newNode->UID[i] = UID[i]; newNode->waiting_time = millis(); newNode->next = NULL; } qsize++; } } |
// 宣告UART接口1 HardwareSerial SerialBT(1); // HC-05 SerialBT.begin(38400, SERIAL_8N1, 27, 13); // Serial的TX,RX //車輛移動到h, j, k的位置 SerialBT.write(queue.room_number()); |
if (SerialBT.available()) { char completed = SerialBT.read(); if (completed == '1') { notice_status("/Arrived"); // notice line state = 2; return; } } |
同標籤作品搜尋:程式
留言共 8 篇留言
前一篇:【Adobe】巴哈進版圖... 後一篇:【Matlab】使用複數...