Giao tiếp này thông qua giao thức gọi là kết nối serial, hay còn gọi là UART, sử dụng 2 dây là trasmit (TX) và receive (RX).
Bạn copy đoạn code sau vào Arduino
int number = 0; void setup() { //Initialize serial and wait for port to open: Serial.begin(9600); Serial.println("Program started"); } void loop() { Serial.println(number); number = number + 1; delay(1000); }
Để làm việc với giao tiếp serial, chúng ta cần sử dụng thư viện Serial. Trong hàm setup(), câu lệnh Serial.begin() giúp khởi tạo thư viện Serial. 9600 là tốc độ truyền tải dữ liệu qua lại giữa board Blocky Node và máy tính. Bạn cần chọn đúng tốc độ này trong màn hình Serial monitor để theo dõi dữ liệu serial nhận được.
Câu lệnh Serial.println() là để in ra một dòng text trong màn hình Serial monitor. Bạn cũng có thể dùng Serial.print() để in ra nhưng không xuống hàng và các text in ra sẽ nối nhau cho đến khi có câu lệnh Serial.println().
Trong hàm loop, chúng ta sẽ in ra giá trị của biến (variable) number, sau đó tăng giá trị biến này lên 1 và tạm dừng 1000ms và lặp lại. Delay giúp cho các giá trị in ra không chạy qua nhanh khiến chúng ta rất khó nhìn.
Trước khi bạn sử dụng 1 biến trong Arduino, bạn cần khai báo nó ở đầu chương trình. Biến number được khai báo ở dòng 1 với kiểu là int (viết tắt của Integer), là một kiểu số nguyên. Ngoài ra, biến còn có thể mang giá trị thuộc nhiều kiểu dữ liệu khác nhau như char hay String (kiểu text), float (số thập phân có lẻ) hay bool (Boolean, true hay false)…
Bạn chọn đúng loại board và upload. Sau khi upload thành công, bạn mở chức năng Serial monitor và quan sát trong cửa sổ này các giá trị được in ra và tăng dần.
Kiến thức liên quan:
Biến là gì? Trong lập trình, biến đóng vai trò rất quan trọng. Bạn có thể hiểu biến như là những tờ giấy nháp mà bạn dùng để ghi các ghi các giái trị tính toán trong quá trình giải 1 bài toán. Mỗi biến này sẽ có một tên không được trùng nhau và một kiểu dữ liệu của giá trị mà nó sẽ lưu trữ. Bạn nên đặt tên các biến một cách dễ hiểu, điều này sẽ giúp cho chương trình của bạn rõ ràng hơn.
Serial sẽ là một thư viện mà bạn sẽ sử dụng rất nhiều trong các chương trình Arduino, nó giúp bạn in các giá trị hiện tại của các biến hay trạng thái của các chân của vi điều khiển… trong chương trình nhằm mục đích debug.
Có một số trường hợp chúng ta cần gửi dữ liệu đến board Arduino với mục đích điều khiển. Chúng ta sẽ thử viết một chương trình cho phép nhập 1 giá trị vào cửa sổ Serial và board Node Wifi sẽ bật tắt đèn led onboard tùy vào giá trị nhập vào là 0 hay 1.
void setup() { Serial.begin(9600); pinMode(15, OUTPUT); } void loop() { // if there's any serial available, read it: while (Serial.available() > 0) { // look for the next valid integer in the incoming serial stream: int command = Serial.parseInt(); // look for the newline. That's the end of your sentence: if (Serial.read() == '\n') { if (command == 1) { Serial.println("ON"); digitalWrite(15, HIGH); } else { Serial.println("OFF"); digitalWrite(15, LOW); } } } }
Bạn chọn board NodeMCU 1.0 và COM port và upload thử đoạn code. Sau khi bật cửa sổ Serial monitor, bạn thử nhập vào số 0 và 1 thì sẽ thấy đèn led onboard của Blocky Node được bật tắt tương ứng.
Như vậy là bạn đã biết cách làm việc với Serial, một công cụ rất quan trọng trong quá trình debug và test code ở các bài tiếp theo.
Arduino reference: If (and comparison operators)