Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

LẬP TRÌNH ARDUINO

Lê Viết Vĩnh
0903.522.967
vinhlv@donga.edu.vn
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.1. Tổng quan về lập trình vào ra (IO).
5.1.1. Lập trình IO là gì?
5.1.2. Các thiết bị vào ra
5.2. Cấu trúc chân IO số.
5.3. Tập lệnh IO số.
5.4. Các bước xây dựng chương trình cho ứng dụng.
5.5. Lập trình điều khiển các ứng dụng IO.
5.5.1. Điều khiển LED đơn
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.1. Tổng quan về lập trình vào ra (IO).
5.1.1. Lập trình IO là gì?

LED, relay, BJT,


Nút bấm, công tấc, công Mosfet, màn hình LCD,
tấc hành trình, cảm …
biến,… (trực tiếp hoặc gián tiếp
(những thiết bị đưa ra điều khiển các cơ cấu
tín hiệu logic 0/1) chấp hành Đèn, Bơm,
Quạt, Động cơ,…)

Thiết bị vào Thiết bị thu thập dữ liệu Thiết bị ra


(đọc vào), tính toán và điều
khiển (xuất tín hiệu ra)
trung tâm
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.1. Tổng quan về lập trình vào ra (IO).
5.1.2. Các thiết bị vào ra
Thiết bị vào: Là những thiết bị đưa tín hiệu đến cho Arduino tính toán, xử lý và
điều khiển các thiết bị khác.
Ví dụ: Nút bấm, công tấc, công tấc hành trình, cảm biến, …. (những thiết bị
đưa ra tín hiệu mức logic 1/0)
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.1. Tổng quan về lập trình vào ra (IO).
5.1.2. Các thiết bị vào ra
Thiết bị ra: Là những thiết bị nhận tín hiệu điều khiển từ Arduino để có thể hoạt
động: chạy/dừng, sáng/tắt, ON/OFF,…..
Ví dụ: Role, Contactor, đèn, thiết bị bán dẫn công suất,.…. (những thiết bị hoạt
động dựa trên mức logic 1/0)
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.2. Cấu trúc chân IO số.

Tùy Arduino, NANO, UNO ta có 12 chân IO số, MEGA 2560 có 54 chân.


BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.2. Cấu trúc chân IO số.

Tùy Arduino, NANO, UNO ta có 12 chân IO số, MEGA 2560 có 54 chân.


BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.2. Cấu trúc chân IO số.

Tùy Arduino, NANO, UNO ta có 12 chân IO số, MEGA 2560 có 54 chân.


BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.2. Cấu trúc chân IO số.

Các chân số của Arduino chỉ xuất ra được 2 mức logic: 0/1 tương ứng với 2
mức điện áp 0V/5V.
Dòng điện mỗi chân có thể chịu được là khoảng 20mA
Cần sử dụng thiết bị trung gian khi kết nối
với tải có dòng và áp lớn.
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.2. Cấu trúc chân IO số.
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.2. Cấu trúc chân IO số.
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.3. Tập lệnh IO số. (tham khảo đầy đủ trong tài liệu)
1. int “thiết bị” = “vị trí chân”;
2. pinMode(“thiết bị”, “kiểu”);
3. digitalWrite(“chân”, “mức logic”);
4. digitalRead(chân);
5. delay(“giá trị”);
6. pulseIn(“chân”, “mức”);
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.3. Tập lệnh IO số. (tham khảo đầy đủ trong tài liệu)
1. int “thiết bị” = “vị trí chân”;
- Khai báo cho chương trình biết, ta có “thiết bị” IO nối với “vị trí
chân” nào đó của Arduino.
+“thiết bị”: là những thiết bị IO nối với Arduino.
+ “vị trí chân”: là một trong các chân IO của Arduino.
- Ví dụ: có nút bấm được kết nối vào chân số 3, LED nối vào
chân số 7 của A_UNO.
int NUT_BAM = 3;
int LED = 7;
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.3. Tập lệnh IO số. (tham khảo đầy đủ trong tài liệu)

2. pinMode(“thiết bị”, “kiểu”);


- Khai báo cho chương trình biết, ta sử dụng “thiết bị” IO với
mục đích gì (“kiểu” gì).
+“thiết bị”: là những thiết bị IO nối với Arduino.
+ “kiểu”: có thể là INPUT, OUTPUT, INPUT_PULLUP
- Ví dụ: có nút bấm được kết nối vào chân số 3, LED nối vào
chân số 7 của A_UNO.
int NUT_BAM = 3;
int LED = 7;
pinMode (NUT_BAM,INPUT); //đầu vào
pinMode (LED, OUTPUT); //đầu ra
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.3. Tập lệnh IO số. (tham khảo đầy đủ trong tài liệu)

3. digitalWrite(“chân”, “mức logic”);


- Xuất “mức logic” ra ngoài “chân”
+“chân”: là chân IO của Arduino.
+ “mức logic”: có thể là LOW, HIGH
- Ví dụ: có nút bấm được kết nối vào chân số 3, LED nối vào
chân số 7 của A_UNO.
int NUT_BAM = 3;
int LED = 7;
pinMode (NUT_BAM,INPUT); //đầu vào
pinMode (LED, OUTPUT); //đầu ra
digitalWrite(LED,LOW); //xuat logic 0
digitalWrite(LED,HIGH);//xuat logic 1
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.3. Tập lệnh IO số. (tham khảo đầy đủ trong tài liệu)

4. digitalRead(chân);
- Đọc mức logic của “chân” và trong Arduino
+“chân”: là chân IO của Arduino.
+ Trả về mức logic 0/1.

- Ví dụ: có nút bấm được kết nối vào chân số 3, đọc tín hiệu
của nút lưu vào biến (1 bít)
int NB = 3;
boolean trang_thai_nut;
………………………………………………………….
trang_thai_nut = digitalRead(NB);
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.3. Tập lệnh IO số. (tham khảo đầy đủ trong tài liệu)

- Ví dụ: có nút bấm được kết nối


vào chân số 3, LED nối vào chân
số 7 của A_UNO.
Yêu cầu:
Đọc trạng thái của nút bấm, điều
khiển LED.
Bấm nút thì bật LED, nếu nút
bấm không được bấm thì tắt
LED
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.3. Tập lệnh IO số. (tham khảo đầy đủ trong tài liệu)

5. pulseIn(“chân”, “mức”);
- Đọc xung có “mức” tín hiệu HIGH/LOW ở “chân”
+“chân”: là chân IO của Arduino.
+ “mức” có thể là: HIGH/LOW
+ Trả về thời gian mà xung ở mức HIGH/LOW

- Ví dụ:
int XUNG = 13;//doc tin hieu xung tu chan 13
unsigned long do_rong;//khai bao bien
……
……
do_rong = pulseIn(XUNG,HIGH);//do do rong muc cao
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.3. Tập lệnh IO số. (tham khảo đầy đủ trong tài liệu)

6. delay(“giá trị”);
-Tạo thời gian trễ với độ lớn của thời gian T
T = 1ms* “gia tri”
“giá trị” là biến unsigned long
VD: tạo thời trễ 2 giây(T = 2 giây)
delay(2000);
-Tham khảo thêm:
millis(); //trả về giá trị thời gian(ms) kể từ lúc A_ bắt đầu
micros();// trả về giá trị thời gian(us) kể từ lúc A_ bắt đầu
delayMicrosecon();//tao trễ với độ phân dãi là 1us
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.4. Các bước xây dựng (viết) chương trình điều khiển
- Từ yêu cầu của ứng ta thiết kế sơ đồ nguyên lý, sơ đồ mạch in, sơ đồ đấu dây
cho ứng dụng. Lập bảng phân công IO.
- Từ yêu cầu của công nghệ, nguyên lý hoạt động của ứng dụng ta thiết kế Lưu
đồ thuật toán của chương trình.
- Viết chương trình dựa trên lưu đồ thuật toán đã thiết kế.
+ Dịch chương trình, kiểm tra lỗi.
+ Mô phỏng.
+ Nạp chương trình cho ứng dụng.
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.4. Các bước xây dựng (viết) chương trình điều khiển
1. Lập bảng phân công IO.

THIẾT BỊ VÀO THIẾT BỊ RA


Stt TB ĐC MT Stt TB ĐC MT
1 NB 2 1 LED 10

2 CT 3 2 DEN 11

3 CB 4 3 QUAT 12
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.4. Các bước xây dựng (viết) chương trình điều khiển
2. Lưu đồ thuật toán
Có thể sử dụng phần mềm Visio (office) hoặc vẽ online tại www.draw.io

Bắt đầu

Kết thúc

Kiểm tra,
Thực hiện công việc điều kiện, so
sánh
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.4. Các bước xây dựng (viết) chương trình điều khiển
3. Viết chương trình
BÀI 5: LẬP TRÌNH VÀO RA SỐ (INPUT/OUTPUT)
5.5. Lập trình điều khiển các ứng dụng IO.
5.5.1. Điều khiển LED đơn
SIM1
Viết chương trình điều khiển
LED đơn nối vào chân 13
Arduino, sáng 0,9 giây, tắt 0,7 AREF

giây 13

ARDUINO
RESET 12
~11
5V ~10
~9
D1

SIMULINO
LED-GREEN

POWER
GND 8

ATMEGA328P

DIGITAL (PWM~)
7
~6

ATMEL
ANALOG IN
A0 ~5
A1 4
R1
A2 ~3
100
A3 2
A4 TX > 1
A5 RX < 0
www.arduino.cc
blogembarcado.blogspot.com
SIMULINO UNO
THIẾT BỊ VÀO THIẾT BỊ RA
Stt TB ĐC MT Stt TB ĐC MT
1 LED 13
Bài tập 1:
Viết chương trình điều khiển SIM1
LED đơn nối vào chân MM
Arduino, sáng D,D giây, tắt Y,Y
giây AREF
(ngày/tháng/năm sinh của SV) 13

ARDUINO
RESET 12
~11
5V ~10
~9
D1

SIMULINO
LED-GREEN

POWER
GND 8

ATMEGA328P

DIGITAL (PWM~)
7
~6

ATMEL
ANALOG IN
A0 ~5
A1 4
R1
A2 ~3
100
A3 2
A4 TX > 1
A5 RX < 0
www.arduino.cc
blogembarcado.blogspot.com
SIMULINO UNO
Bài tập 2: Điều khiển đèn giao thông ngã tư
Thời gian đèn xanh: 7 giây, đèn vàng X1
là 3 giây, 2 tuyến đường giống nhau
nên thời gian đèn đỏ là 10 giây
V1
Xanh: D,D – Vàng: M,M

Đ1

X2

V2

Đ2

t1 t2 t3 t4 t5

You might also like