Professional Documents
Culture Documents
Bài TH Bu I 3 - DL&DK
Bài TH Bu I 3 - DL&DK
Bài 03: LẬP TRÌNH GIAO TIẾP NỐI TIẾP QUA CỔNG RS232
❖ Nội dung thực hành:
1. Yêu cầu 01:
Yêu cầu: Thiết kế giao diện chương trình thực hiện chức năng truyền ký tự
điều khiển và nhận chuỗi ký tự từ hệ thống nhúng thông qua cổng RS232.
➢ Mô tả cụ thể:
- Ký tự điều khiển truyền xuống board nhúng sẽ được hiển thị trên 8 LED
đơn như là một byte (quan sát giá trị nhị phân tương ứng với ký tự truyền từ
máy tính).
- Board nhúng sẽ truyền chuỗi ký tự tương ứng khi nhấn phím, giao diện trên
máy tính sẽ nhận và hiển thị chuỗi ký tự tương ứng.
• Đoạn code:
char PinOut[] = { 22, 23, 24, 25, 26, 27, 28, 29 }; // Nhận và xử lý phím ấn
#define K0 42 if (digitalRead(K0) == 0)
#define K1 47 Serial.println('0');
#define K2 46 if (digitalRead(K1) == 0)
#define K3 43 Serial.println('1');
//----------------------- Serial.println('2');
pinMode(COM, OUTPUT); }
} }
void loop() { }
if (Serial.available()) {
char ch = Serial.read();
ShiftOut(ch);
}
1 2
• Đoạn code:
char PinOut[] = { 22, 23, 24, 25, 26, 27, 28, 29 }; void setup() {
char indexx; }
1 } 2
if (digitalRead(K2) == 0) //-----------------------------
} }
3 } 4
➢ Mô tả cụ thể:
o Trên PC (giao diện node-red) thực hiện các chức năng sau:
▪ Thiết kế giao diện gồm có 03 slider điều khiển tương ứng 03 LED RBG
▪ Thiết kế giao diện hiển thị thông tin của cảm biến nhiệt độ và ánh sáng
dưới dạng Gause.
o Trên mạch nhúng thực hiện các yêu cầu như sau:
▪ Nhận dữ liệu điều khiển led RGB và điều khiển các đèn tương ứng.
▪ Hiển thị giá trị PWM của các LED RGB trên LCD – dòng 1
▪ Hiển thị giá trị của cảm biến trên LCD – dòng 2.
• Đoạn code:
#include <LiquidCrystal.h> // khoi dong cong RS232
#define LR 13 }
#define LG 11 //----------------------------------------
delay(500);
lcd.clear(); 1 2
lcd.setCursor(4, 1); }
lcd.print(str); delay(100);
3 } 4
❖ Giao diện Node-RED của nhóm:
// Đoạn code hàm function 17:
var str = msg.payload;
var p1 = str.indexOf("T");
var p2 = str.indexOf("P");
tmp = str.substring(p1+1,p2);
lux =
str.substring(p2+1,str.length);
msg.payload = Number(tmp);
msg1 = {payload:Number(lux)};
return [msg,msg1];
R{{payload}}
G{{payload}}
B{{payload}}