Giao tiếp giữa 2 arduino

Giới thiệu, nội dung đề xuất nắm

Giao tiếp thân mạch zagranmama.com là vô cùng quan trọng, vì có không ít dự án phức hợp và câu hỏi lập trình bên trên 1 zagranmama.com là điều không thể. Hôm nay, mình vẫn hướng dẫn chúng ta cách tiếp xúc giữa 2 mạch zagranmama.com ngẫu nhiên bằng việc sử dụng thư viện Serial Command.

Bạn đang xem: Giao tiếp giữa 2 arduino

Phần cứng

Thư viện

Chúng ta sẽ thực hiện thư viện Serial Command để xây dựng những "câu lệnh" (command). Bạn download thư viện ấy tại đây. Kế tiếp bạn tạo ra thư mục với tên "Serial Command" trên thư mục libraries. Tiếp đến bạn giải nén file thư viện vừa rồi vào thư mục vừa tạo ra là ok! sau cuối bạn tắt zagranmama.com IDE rồi lật lại zagranmama.com IDE.

Hoặc so với zagranmama.com IDE 1.6.x, bạn cũng có thể thêm thư viện bằng phương pháp như hình dưới. Tiếp nối chọn file zip đã download ở trên là ok.

 

Lắp mạch

Click vào ảnh để xem rõ hơn nhé

Giải thích và lập trình

Ở đây, tớ gồm ý định cần sử dụng zagranmama.com UNO (HOST) nhờ cất hộ lệnh mang lại zagranmama.com Nano (CLIENT) để điều khiển các đèn led (thiết bị ngoại vi). Bạn cần hiểu rằng, có mang HOST cùng CLIENT là vì mình từ bỏ đặt, bởi vậy chúng ta hoàn toàn rất có thể dùng zagranmama.com Nano để điều khiển và tinh chỉnh zagranmama.com UNO hoặc tốt hơn nữa là biến nó thành 2 vps trong một "mạng kín" (nghĩa là 2 con này đang tự can hệ lẫn nhau, mỗi nhỏ vừa là HOST vừa là SLAVE cùng một lúc).

Xem thêm: 3 Cách Tải Nhạc Vào Usb, Về Thẻ Nhớ Bằng Máy Tính Đơn Giản, Hướng Dẫn Cách Tải Nhạc Vào Usb Nhanh Nhất

Bạn upload đoạn code sau vào HOST.

void setup() Serial.begin(9600);// các bạn khởi sản xuất một cổng Serial trên baudrate 9600. Ở Client, chúng ta cũng nên mở một cổng Serial thuộc Baudrate cùng với HOSTint Step = 0;void loop() if (Step == 0) Serial.println("LED_RED 1"); // Đèn đỏ sáng. 1 == HIGH else if (Step == 1) Serial.println("LED_RED 0"); // Đèn đỏ tắt . 0 == LOW else if (Step == 2) Serial.println("LED_BLUE 1");// Đèn xanh sáng else if (Step == 3) Serial.println("LED_BLUE 0");// Đèn xanh tắt Step = (Step + 1) % 4; //Step sẽ tuần từ tuần hoàn các giá trị trong vòng từ 0 --> 3 delay(1000);// dừng một giây giữa các lần gửiBạn upload đoạn code sau vào CLIENT

#include // thêm vào sketch thư viện Serial CommandSerialCommand sCmd; // Khai báo biến áp dụng thư viện Serial Commandint red = 2, xanh = 3;void setup() //Khởi tạo ra Serial ngơi nghỉ baudrate 9600 (trùng với HOST) Serial.begin(9600); //pinMode 2 đèn led là output pinMode(red,OUTPUT); pinMode(blue,OUTPUT); // một vài hàm trong tủ sách Serial Command sCmd.addCommand("LED_RED", led_red); // Khi tất cả câu lệnh tên là LED_RED vẫn chạy hàm led_red sCmd.addCommand("LED_BLUE", led_blue); void loop() sCmd.readSerial(); //Bạn không cần phải thêm ngẫu nhiên dòng code làm sao trong hàm loop này cả// hàm led_red sẽ được thực thi khi nhờ cất hộ hàm LED_REDvoid led_red() //Đoạn code này dùng để đọc TỪNG tham số. Những tham số mang định có kiểu tài liệu là "chuỗi" char *arg; arg = sCmd.next(); int value = atoi(arg); // chuyển chuỗi thành số digitalWrite(red,value);// hàm led_blue sẽ được thực thi khi nhờ cất hộ hàm LED_BLUEvoid led_blue() //Đoạn code này dùng làm đọc TỪNG tham số. Những tham số mặc định có kiểu tài liệu là "chuỗi" char *arg; arg = sCmd.next(); int value = atoi(arg); // gửi chuỗi thành số digitalWrite(blue,value);Sau lúc upload 2 đoạn code này thì cứ sau từng một giây thì đèn đỏ sáng rồi tắt kế tiếp là đèn xanh. Lý do như vậy?

Bởi bởi vì cứ sau mỗi một giây thì HOST lại giữ hộ lệnh đến CLIENT. Và tùy ở trong vào câu lệnh CLIENT đang chuyển đào bới các hàm không giống nhau. Vậy như thế nào là lệnh và giải pháp đọc thông số của từng lệnh là như vậy nào?

Lệnh là gì?

Lệnh là 1 trong những chuỗi tất cả có những thành phần sau:Từ trước tiên được hotline là tên câu lệnh (command name).Các từ tiếp nối được gọi là tham số.Một lệnh buộc phải tất cả tên câu lệnhMột lệnh có thể tất cả một hoặc những hoặc không có tham số.Ở trong đoạn code nhưng tớ upload lên mạch HOST, tớ vẫn tự kiến tạo 2 lệnh:LED_RED LED_RED là tên gọi câu lệnh là trạng thái đang truyền mang đến led đỏ (sáng - 1 hoặc tắt - 0)LED_BLUE LED_BLUE là tên gọi câu lệnh là trạng thái vẫn truyền mang lại led xanh (sáng - 1 hoặc tắt - 0)Các lệnh thực tế chỉ là một trong những chuỗi được ngừng bởi ký kết tự xuống cái ( ) (nếu bạn dùng hàm Serial.println() thì ko cần suy xét ký từ bỏ này. Tuy nhiên nếu dùng hàm Serial.print() thì bạn phải thêm một cam kết tự ở cuối mỗi câu lệnh. Ví dụ:

Serial.print("LED_RED 1 ");

Làm sao để đọc được lệnh tự HOST làm việc CLIENT?

Làm rứa nào để đọc các tham số trong một lệnh sống CLIENT

Cực kỳ 1-1 giản, bạn chỉ cần dùng đoạn code trong hàm led_red() hoặc led_green() để tiến đọc. Mình khuyên răn bạn chỉ nên gửi các tham số là số nguyên để thuận tiện cho vấn đề xử lý, không nên gửi các tham số là chuỗi, vì bạn phải chuyển sang hình trạng String để dùng những phép so sánh, vấn đề đó là không nên. Còn nếu như muốn gửi một câu ra một screen LCD (chẳng hạn) thì chúng ta phải tự cải cách và phát triển thêm một tí xíu nữa cho câu hỏi đọc tham số. Mình vẫn viết ngơi nghỉ mục bình luận. 

Kết luận

Hãy sáng chế với mô hình HOST --> CLIENT và các bạn sẽ thấy hết sức thú vị đấy. Trong tương lai, mình đang hướng dẫn chúng ta dùng máy tính xách tay để giao tiếp với zagranmama.com (vấn đề này hơi là nâng cao nên chúng ta có thể sẽ hóng khá lâu từ nội dung bài viết này đấy, nhưng mà mình hứa sẽ có

*
).

Nào, các bạn hãy thử chế một quy mô HOST / CLIENT CLIENT / HOST xem nào, không cạnh tranh đâu!