Professional Documents
Culture Documents
Hướng Dẫn Sử Dụng Arduino Advanced
Hướng Dẫn Sử Dụng Arduino Advanced
2
Arduino một nền tảng mã nguồn mở gồm phần cứng và phần mềm được ra mắt năm
2005 Là
tại một
Ý. nền tảng mã nguồn mở gồm phần cứng và phần mềm.
Phần cứng Arduino là các bo mạch vi xử lý được thiết kế dựa trên nền tảng vi điều
khiển AVR Atmel 8bit hoặc ARM Atmel 32-bit, được dùng để xây dựng các ứng dụng
tương tác với môi trường hoặc tương tác với nhau một cách dễ dàng. Một bo mạch
Arduino thường bao gồm cổng giao tiếp USB, các chân I/O truyền nhận tín hiệu tương
tự, tín hiệu số tương thích với nhiều bo mở rộng khác nhau.
VỀ
ARDUINO
Vi điều khiển
Chân cắm
tín hiệu tương tự
Đi cùng với phần cứng Arduino là phần mềm Arduino IDE (môi trường
phát triển tích hợp) tương thích với hầu hết các nền tảng từ Windows,
Linux đến MacOS. Arduino IDE cho phép người dùng viết chương trình
(lập trình) cho các bo mạch Arduino bằng ngôn ngữ C hoặc C++.
33
Node Wifi 32 là phiên bản có chức năng, hình
dạng, kích thước và cách sử dụng giống với
Arduino Uno R3 nhưng được cải tiến, vi xử lý được
thay thế bằng ESP32
ESP32.
Là các cổng có GPIO chỉ
có thể sử dụng cho chức
năng input/output digital.
Node
Wifi 32
Arduino
kit
Xoay quanh các bài tập đi từ cơ bản đến nâng cao, các module cảm biến,
ngoại vi đa dạng và có thể tương tác trực quan, được lập trình bằng ngôn
ngữ lập trình chuyên nghiệp, Arduino Kit mong muốn có thể giúp bạn đọc
tiếp cận và làm quen với ngôn ngữ lập trình C/C++ và nền tảng Arduino
theo cách dễ dàng và thú vị nhất.
Tải xuống
5
Truy cập https://www.arduino.cc/ Chọn nơi lưu file cài đặt (mặc định là C:\
Sau đó chọn mục Software -> Download Program File\Arduino) và chọn Install để bắt
đầu quá trình cài đặt.
Cài đặt Chọn phiên bản phù hợp với máy tính của bạn và
nhấn để tải về.
IDE Chạy file vừa tải về, cửa sổ Setup sẽ xuất hiện,
chọn I Agree và Next để tiếp tục.
Khi có yêu cầu xác nhận cài đặt driver tại
cửa sổ Windows Security, chọn Install.
Thư viện
đây vào ô Additional Boards Manager
URLs:
https://dl.espressifif.com/dl/package_esp32_
https://dl.espress .com/dl/package_esp32_
index.json
- Auto Format: là chức năng giúp định dạng chương trình tự động.
Để sử dụng chức năng này, trong vùng lập trình, click chuột phải và chọn “Auto Format”.
e
8
du l
M o
á c
C
9
Đèn LED
Chuẩn bị Chương trình
1. Node Wifi 32
2. Module Switch Trong Arduino IDE, vào File -> New để tạo
(LED) 3. Module LED một chương trình mới. Nhập đoạn chương
trình dưới đây vào chương trình mới vừa
tạo.
Mục tiêu
const int ledPin = 25;
Điều khiển LED chớp tắt với chu kỳ 2
giây (sáng 1 giây, tắt 1 giây). void setup() {
pinMode(ledPin, OUTPUT);
Kết nối phần cứng }
void loop() {
Kết nối module LED với port D1 như hình digitalWrite(ledPin, HIGH);
LED (Light Emitting Diode - điốt minh họa. delay(1000);
phát quang) là các điốt có
digitalWrite(ledPin, LOW);
khả năng phát ra ánh sáng
delay(1000);
hay tia hồng ngoại, tử ngoại.
LED
LED
}
uart i2c.. I2c. Khai báo giá trị chân tín hiệu (GPIO):
Ngoài ra, trong một chương trình còn có các phần khai Ta dùng lệnh digitalWrite để điều khiển một
báo thư viện ở đầu chương trình (nếu có sử dụng thư viện), digital output, trạng thái HIGH để bật LED.
khai báo biến (thường khai báo ngay sau phần khai báo Sau đó tắt LED và cũng tạm dừng chương trình 1 giây:
thư viện), các chương trình con khác, v.v. Chúng ta sẽ lần digitalWrite(ledPin, LOW);
lượt tìm hiểu các phần này qua các bài học. delay(1000);
}
Chương trình điều khiển LED chớp tắt là chương trình cơ
Trạng thái LOW trong dòng lệnh dùng để tắt LED.
bản nhất khi bắt đầu lập trình với Arduino IDE.
Để chọn board Node Wifi 32, các bạn vào Tools -> Board -> Cần lưu lại chương trình trước khi biên dịch và upload code
Node32s vào board.
Vào File -> Save (Ctrl
Ctrl + S)
S để lưu. Mặc định Arduino IDE sẽ
lưu chương trình vào thư mục Arduino nằm trong thư mục
Documents của máy tính.
Bạn có thể đặt tên và lưu chương trình tại đây hoặc tạo
riêng một thư mục khác như hình bên dưới để dễ dàng quản
lý các file code của mình sau này.
Như phần trước đã hướng dẫn, bạn cần chọn board, chọn
cổng COM, sau đó nhấn nút để biên dịch và nạp chương
trình. Khi nạp chương trình xong, Arduino IDE sẽ hiển thị thông
báo “Done uploading”. Hãy thử và quan sát kết quả chương
trình bạn vừa nạp nhé!
12 Chuẩn bị Chương trình
gạt
const int switchPin = 27;
3. Module LED const int ledPin = 25;
int switchState;
Mục tiêu
(Switch) void setup() {
pinMode(switchPin, INPUT);
Điều khiển đèn LED bằng switch: gạt pinMode(ledPin, OUTPUT);
switch để bật LED, gạt ngược lại để }
tắt LED.
void loop() {
Kết nối phần cứng switchState =
digitalRead(switchPin);
Kết nối module Switch với port D2 và if (switchState == 1) {
Công tắc gạt (Switch) được sử module LED với port D1 như hình minh digitalWrite(ledPin, HIGH);
dụng để bật, tắt tín hiệu cố họa. } else {
định giúp thiết lập chức năng digitalWrite(ledPin, LOW);
hoặc điều khiển robot. LED
LED }
}
uart i2c.. I2c.
Switch
d3 d2 d1
A3 A2 A1
Giải thích chương trình
13
Đầu tiên khai báo GPIO cần sử dụng: switchPin là GPIO Ngược lại nếu công tắc không bật thì tắt LED:
kết nối với module switch, ledPin là GPIO kết nối với module
} else {
LED. 2 biến này là hằng số (const) và có kiểu dữ liệu là int. digitalWrite(ledPin, LOW);
const int switchPin = 27; }
const int ledPin = 27; }
Khai báo biến switchState để lưu lại trạng thái của switch,
khi switch bật trạng thái switchState bằng 1, khi switch tắt
Biên dịch và nạp chương trình
trạng thái switchState bằng 0.
int switchState; Chọn Board và chọn cổng COM, sau đó nhấn nút để biên
dịch và nạp chương trình.
Trong hàm setup(), khai báo pinMode cho switchPin là INPUT,
ledPin là OUTPUT. Sau khi nạp chương trình xong, gạt switch và quan sát trạng
void setup() { thái của đèn LED.
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}
Trong hàm loop(), đọc trạng thái của switch và gán cho
biến switchState bằng dòng lệnh:
void loop() {
switchState =
digitalRead(switchPin);
Sau đó dùng câu lệnh điều kiện để điều khiển LED theo
trạng thái của swich. Nếu switch bằng 1, công tắc bật thì
điều khiển LED sáng:
if (switchState == 1) {
digitalWrite(ledPin, HIGH);
14 Chuẩn bị Chương trình
int ledState;
Mục tiêu
void setup() {
Điều khiển đèn LED bằng nút nhấn: pinMode(ledPin, OUTPUT);
nhấn nút để bật đèn, nhấn thêm lần pinMode(buttonPin, INPUT);
nữa để tắt đèn. }
void loop() {
if (digitalRead(buttonPin) ==
HIGH) {
Nút nhấn (Button) được sử delayMicroseconds(20);
dụng trong các chức năng Kết nối phần cứng if (digitalRead(buttonPin) ==
điều khiển. HIGH) {
Nút nhấn là loại nhấn nhả ledState = !ledState;
(Push Button), sau khi nhấn kích LED
digitalWrite(ledPin,
tín hiệu nút nhận sẽ tự động trở ledState);
uart i2c.. I2c.
lại trạng thái ban đầu. }
BUTTON }
d3 d2 d1 }
A3 A2 A1
Giải
Giải thích
thích chương
chương trình
trình
15
Đầu tiên khai báo GPIO cần sử dụng: buttonPin là GPIO kết Sau đó kiểm tra lại trạng thái nút nhấn một lần nữa. Nếu
nối với module button, ledPin là GPIO kết nối với module LED. digitalRead (buttonPin) vẫn bằng 1, ta thực hiện đổi trạng
2 biến này là hằng số và có kiểu dữ liệu là int. thái ledState.
const int buttonPin = 27; ledState = !ledState;
const int ledPin = 25; Cuối cùng điều khiển LED theo ledState:
Khai báo biến ledState để lưu lại trạng thái cần điều khiển digitalWrite(ledPin,
LED. Nếu ledState bằng 1, cần bật LED. Nếu ledState bằng ledState);
0. cần tắt LED. }
}
int ledState;
Cảm biến
Chuẩn bị Chương trình
1. Node Wifi 32
chuyển
2. Module PIR Sensor const int sensorPin = 36;
3. Module LED const int ledPin = 25;
động
int sensorState = 0;
Mục tiêu
void setup() {
Đèn LED sẽ tự động sáng khi phát hiên pinMode(ledPin, OUTPUT);
(PIR Sensor) chuyển động. pinMode(sensorPin, INPUT);
Serial.begin(115200);
}
void loop() {
sensorState =
digitalRead(sensorPin);
Kết nối phần cứng if (sensorState) {
PIR (Passive InfraRed) là bộ digitalWrite(ledPin, HIGH);
cảm biến thụ động dùng Serial.println(“Phat hien chuyen
nguồn kích thích là tia hồng LED
dong!!”);
ngoại (IR), chính là các tia } else {
uart i2c.. I2c.
nhiệt phát ra từ các vật thể. digitalWrite(ledPin, LOW);
PIR chuyển đổi tia nhiệt thành }
dạng tín hiệu điện và nhờ đó d3 d2 d1 }
mà có thể nhận ra các vật
thể nóng đang chuyển động. A3 A2 A1
Cảm biến này gọi là thụ động
vì nó không dùng nguồn nhiệt
tự phát mà phụ thuộc vào
các nguồn nhiệt của các đối
tượng khác.
Giải
Giải thích
thích chương
chương trình
trình
17
Đầu tiên khai báo GPIO cần sử dụng: sensorPin là GPIO kết Dùng câu lệnh điều kiện để điều khiển LED theo sensorState.
nối với module cảm biến chuyển động, ledPin là GPIO kết Biểu thức điều kiện (sensorState == 1) có thể được viết rút
nối với module LED. 2 biến này là hằng số và có kiểu dữ gọn thành (sensorState). Nếu sensorState bằng 1 thì điều
liệu là int. khiển LED bật và in ra thông báo “Phát hiện chuyển động”.
const int sensorPin = 36; if (sensorState) {
const int ledPin = 25; digitalWrite(ledPin, HIGH);
Khai báo biến sensorState để lưu lại trạng thái đọc được từ Serial.println(“Phat hien chuyen dong!!”);
cảm biến chuyển động, sensorState bằng 1 khi có chuyển
động, sensorState bằng 0 khi không có chuyển động. Ngược lại nếu sensorState không bằng 1 thì điều khiển tắt
int sensorState = 0; LED.
} else {
Trong hàm setup(), khai báo pinMode cho sensorPin là INPUT, digitalWrite(ledPin, LOW);
ledPin là OUTPUT. }
void setup() { }
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT);
Ngoài ra, trong bài này chúng ta sẽ sử dụng chức
Biên dịch và nạp chương trình
năng in thông báo ra màn hình Serial Monitor,
đây là chức năng rất hữu ích trong Arduino IDE.
Chọn Board và chọn cổng COM, sau đó nhấn nút để biên
Để sử dụng chức năng này, cần khai báo:
dịch và nạp chương trình.
Serial.begin(115200);
} Sau khi nạp chương trình xong thì thử chuyển động gần cảm
biến và quan sát LED.
Trong hàm loop(), đọc trạng thái từ cảm biến va chạm bằng
dòng lệnh:
void loop() {
sensorState =
digitalRead(sensorPin);
18
Cảm biến
Chuẩn bị Chương trình
1. Node Wifi 32
âm thanh
2. Module Sound Sensor const int sensorPin = 36;
int sensorState = 0;
void loop() {
sensorState =
digitalRead(sensorPin);
Serial.println(sensorState);
delay(100);
Kết nối phần cứng }
Cảm biến âm thanh (Sound
Sensor) được sử dụng để nhận
biết cường độ âm thanh của
môi trường, cảm biến trả ra
giá trị điện áp Analog tuyến uart i2c.. I2c.
tính với cường độ âm thanh,
ứng dụng trong chống trộm, d3 d2 d1
LED nhảy theo nhạc,... sound sensor
A3 A2 A1
Giải
Giải thích
thích chương
chương trình
trình Biên dịch và nạp chương trình
19
Đầu tiên khai báo GPIO cần sử dụng: sensorPin là GPIO kết Chọn Board và chọn cổng COM, sau đó nhấn nút để biên
nối với module cảm biến âm thanh. Như các bài học trước, dịch và nạp chương trình.
biến sensorPin là hằng số và có kiểu dữ liệu int.
Sau khi nạp chương trình xong, hãy thử vỗ tay để xem hoạt
const int sensorPin = 36; động của relay.
Khai báo biến sensorState lưu lại trạng thái đọc được từ
cảm biến âm thanh.
int sensorState = 0;
Rơ-le
Chuẩn bị Chương trình
1. Node Wifi 32
2. Module Relay const int sensorPin = 36;
(Relay) 3. Module Sound Sensor const int relayPin = 25;
int relayState = 0;
Mục tiêu
void setup() {
Mục tiêu: Điều khiển relay bằng tiếng pinMode(sensorPin, INPUT);
vỗ tay. Vỗ tay 1 cái bật relay, vỗ tay pinMode(relayPin, OUTPUT);
thêm cái nữa tắt relay. Serial.begin(115200);
}
void loop() {
if (digitalRead(sensorPin)) {
relayState = !relayState;
Kết nối phần cứng }
Rơ-le điện (Relay) được sử if (relayState) {
dụng để đóng ngắt các thiết digitalWrite(relayPin, HIGH);
bị AC/DC sử dụng công suất LED Relay
} else {
lớn: Quạt, đèn, motor,... digitalWrite(relayPin, LOW);
Relay trên mạch là dạng uart i2c.. I2c.
}
thường mở, khi có tín hiệu kích }
sẽ đóng tương tự như công tắc d3 d2 d1
bật tắt đèn trong nhà. sound sensor
A3 A2 A1
Giải
Giải thích
thích chương
chương trình
trình
21
Khai báo GPIO cần sử dụng: Ngược lại, nếu relayState không bằng 1 thì tắt relay:
const int sensorPin = 36; } else {
const int relayPin = 25; digitalWrite(relayPin, LOW);
}
Khai báo biến relayState lưu lại trạng thái của relay: }
int relayState = 0;
Còi báo
Chuẩn bị Chương trình
1. Node Wifi 32
2. Module Buzzer const int buzzerPin = 25;
(Buzzer) int t = 5;
void tick_tick() {
Mục tiêu int i;
for (i = 0; i < 4; i++) {
Làm đồng hồ bấm giờ: digitalWrite(buzzerPin, HIGH);
Sau một khoảng thời gian nhất định delay(60);
được cài đặt trước, buzzer sẽ phát ra digitalWrite(buzzerPin, LOW);
âm báo. delay(60);
}
}
void setup() {
Kết nối phần cứng pinMode(buzzerPin, OUTPUT);
Buzzer (Còi báo) giúp phát Serial.begin(115200);
ra âm thanh. Nguyên tắc hoạt }
động rất đơn giản là sẽ phát
ra âm thanh khi chân tín hiệu
được bật sang HIGH và sẽ tắt uart i2c.. I2c.
void loop() {
khi chân tín hiệu bật về LOW. Buzzer
delay(t * 1000);
Module buzzer có thể được sử d3 d2 d1
Serial.println(“Het gio!!!”);
dụng với chức năng PWM giúp tick_tick();
phát ra nhiều giai điệu khác A3 A2 A1 }
nhau.
Giải
Giải thích
thích chương
chương trình
trình
23
Khai báo GPIO cần sử dụng: Trong hàm loop(), tạm dừng chương trình một khoảng thời
const int buzzerPin = 25; gian t đã đặt trước.
Khai báo biến t lưu lại thời gian đặt trước của đồng hồ bấm
void loop() {
giờ (đơn vị thời gian là giây). Sau khoảng thời gian này,
delay(t * 1000);
đồng hồ sẽ phát ra âm báo.
int t = 5; Sau t giây, tức là đã hết khoảng thời gian đặt trước, in ra
Hàm tick_tick() phát ra âm báo như chuông đồng hồ báo thông báo “hết giờ” và gọi hàm tick_tick để phát ra âm báo.
thức. Trong hàm tick_tick(), dùng vòng lặp for để bật tắt
buzz er tạo thành âm thanh tick-tick-tick-tick. Serial.println(“Het gio!!!”);
tick_tick();
void tick_tick() { }
int i;
for (i = 0; i < 4; i++) {
digitalWrite(buzzerPin, HIGH);
delay(60); Biên dịch và nạp chương trình
digitalWrite(buzzerPin, LOW);
delay(60); Chọn Board và chọn cổng COM, sau đó nhấn nút để biên
} dịch và nạp chương trình.
Vòng lặp for là kiểu vòng lặp được sử dụng với số lần lặp
lại biết trước. Sau khi nạp chương trình xong, hãy quan sát kết quả.
Các chương trình con như tick_tick() được viết trước hàm
setup() và hàm loop() và sau phần khai báo biến.
Khoảng
#define TRIG 19
#define ECHO 18
cách
Mục tiêu void setup ()
{
Cửa sổ Serial monitor sẽ hiển thị kết pinMode(TRIG, OUTPUT);
(Ultrasonic quả khoảng cách đọc được từ cảm pinMode(ECHO, INPUT);
biến đến các vật cản xung quanh. Serial.begin(115200);
Distance }
Sensor) void loop () {
unsigned int duration;
float distance;
digitalWrite(TRIG, 0);
Kết nối phần cứng delayMicroseconds(2);
digitalWrite(TRIG, 1);
delayMicroseconds(5);
digitalWrite(TRIG, 0);
duration = pulseIn(ECHO, 1);
uart i2c.. I2c. distance = duration / 2 / 29.412;
Cảm biến khoảng cách
(Ultrasonic Distance Sensor) d3 d2 d1 Serial.print(“Distance: ”);
sử dụng sóng siêu âm để đo Serial.print(distance);
khoảng cách đến vật cản A3 A2 A1 Serial.print(“ cm”);
phía trước, thích hợp để làm delay(500);
các loại robot tránh vật cản, }
chống trộm, đo khoảng cách,...
Giải
Giải thích
thích chương
chương trình
trình
25
1. Node Wifi 32
góc xoay
2. Module Rotary #define sensorPin 36
3. Module LED #define ledPin 32
int sensorValue = 0;
d3 d2 d1
xoay, ứng dụng trong việc lập
trình điều khiển: Dimmer, tăng
A3 A2 A1
giảm độ sáng bằng biến trở,...
Giải thích chương trình
27
Đầu tiên cần khai báo GPIO cần sử dụng: Điều khiển LED sáng với độ sáng tương ứng giá trị vừa đọc
#define sensorPin 36 được từ cảm biến và in giá trị cảm biến ra để quan sát:
#define ledPin 32
analogWrite(ledPin, sensorValue);
GPIO kết nối với cảm biến và LED là các GPIO có hỗ trợ Serial.print(“sensor value: “);
ADC để sử dụng analog input và analog output. Serial.println(sensorValue);
Có thể xem thêm về analog input và analog output tại
https://ohtech.vn/all-courses/lap-trinh-esp32-voi- Giá trị đọc được qua bộ chuyển đổi ADC là một
arduinoide/lessons/analog-input-va-analog-output-voi- số nằm trong khoẳng từ 0 - 4095, ta có thể quy
esp32/ đổi số này về một số trong khoảng 0 - 100 bằng
cách dùng hàm map để xác định độ sáng của LED.
Khai báo biến sensorValue lưu lại giá trị đọc được từ cảm biến:
Serial.print(map(sensorValue, 0, 4095, 0,
int sensorValue = 0; 100));
Serial.println(“%”);
Trong hàm setup(), khai báo pinMode của sensorPin là INPUT, }
pinMode của ledPin là OUTPUT và khởi tạo Serial:
Trong hàm loop(), đọc giá trị cảm biến bằng Sau khi nạp chương trình xong, hãy quan sát kết quả.
hàm analogRead rồi gán giá trị cho sensorValue.
void loop() {
sensorValue = analogRead(sensorPin);
28
Cảm biến
Chuẩn bị NạpChương
chươngtrình
trình
1. Node Wifi 32
ánh sáng
2. Module Light Sensor #define sensorPin 36
3. Module LED #define ledPin 32
int sensorValue = 0;
Mục tiêu
void setup() {
pinMode(sensorPin, INPUT);
Đèn LED sẽ tự động sáng khi ở môi
pinMode(ledPin, OUTPUT);
trường tối và tắt đi khi ở môi trường Serial.begin(115200);
sáng. }
void loop() {
sensorValue =
analogRead(sensorPin);
analogWrite(ledPin,4095-
Kết nối phần cứng sensorValue);
Light Sensor (Cảm biến ánh Serial.print(“sensor value: “);
sáng) được sử dụng để nhận Serial.println(sensorValue);
biết cuờng độ ánh sáng của LED
Serial.print(map(sensorValue, 0,
môi trường, cảm biến trả ra 4095, 0, 100), DEC);
giá trị điện áp Analog tuyến uart i2c.. I2c.
Serial.println(“%”);
tính với cường độ ánh sáng, light sensor
}
ứng dụng: bật tắt đèn thông d3 d2 d1
minh, vườn thông minh,...
A3 A2 A1
Giải thích chương trình
29
Chương trình này hoạt động tương tự chương trình trong bài
cảm bieresn góc xoay, tuy nhiên giá trị của cảm biến ánh
sáng sẽ thay đổi phụ thuộc vào độ sáng của môi trường.
Khi trời càng tối, giá trị đọc được từ cảm biến càng thấp,
ta cần điều khiển LED sáng khi tới tối do đó ta cần lấy phần
bù (4095) trừ cho sensorValue để điều khiển LED:
analogWrite(ledPin,4095- sensorValue);
Để quy đổi độ sáng của đèn LED, ta dùng:
Serial.print(map(sensorValue, 0, 4095, 0,
100), DEC);
Sau khi nạp chương trình xong, hãy quan sát kết quả.
30
Màn hình
Chuẩn bị Chương trình
1. Node Wifi 32 Ở bài này, bạn cần cài đặt thư viện
LCD 16x2
2. Module 16x2 LCD LiquidCrystal_I2C để chạy chương trình cho
LCD, xem tiếp hướng dẫn ở phần cài đặt
thư viện.
Mục tiêu
(16 x 2 LCD) #include <LiquidCrystal_I2C.h>
Module 16x2 LCD sẽ hiện ra dòng chữ
LiquidCrystal_I2C lcd(0x27, 16,
”Hello World!”.
2);
void setup() {
lcd.init();
lcd.backlight();
}
Kết nối phần cứng
Màn hình 16x2 LCD là dạng void loop() {
màn hình LCD Text với 32 ký tự lcd.setCursor(2, 0);
(16 x 2 dòng) trên màn hình lcd.print(“Hello World!”);
giúp hiển thị các thông tin điều delay(1000);
khiển, giá trị cảm biến, thông uart i2c.. I2c. lcd.clear();
báo,... một cách trực quan. delay(1000);
d3 d2 d1 }
A3 A2 A1
Cài đặt thư viện
31
Có nhiều thư viện hỗ trợ LCD, ở bài này chúng ta sử dụng
thư viện LiquidCrystal_I2C
LiquidCrystal_I2C.
Truy cập:
https://github.com/marcoschwartz/LiquidCrystal_I2C/archive/
master.zip để tải thư viện.
Có 2 cách cài thư viện sau khi tải về:
Cách 1:
Giải nén file vừa tải về, bạn sẽ có thư mục LiquidCrystal_
I2C-master.
Di chuyển thư mục LiquidCrystal_I2C-master đến thư mục
libaries theo đường dẫn Documents\Arduino\libraries . Dẫn đến thư mục chứa file vừa tải về, chọn file rồi nhấn
Open.
Open
Sau đó khởi động lại Arduino IDE để sử dụng thư viện.
Đợi phần mềm hoàn tất cài đặt là có thể sử dụng thư viện
Cách 2: vừa cài.
Vào Sketch -> Include Library -> Add .ZIP Library.
32
Đầu tiên cần khai báo thư viện LiquidCrystal_I2C bằng câu delay(1000);
lệnh: lcd.clear();
#include <LiquidCrystal_I2C.h> delay(1000);
Tiếp theo, cấu hình LCD với các thông số địa chỉ I2C, số Hàm loop() sẽ lặp lại liên tục, tạo thành hiệu ứng hiển thị 1
cột, số hàng. Địa chỉ I2C chính là địa chỉ đã tìm được ở giây, tắt 1 giây liên tục.
phần trên:
LiquidCrystal_I2C lcd(0x27, 16, 2); Biên dịch và nạp chương trình
Trong Hàm setup(), cần khởi tạo lcd bằng lệnh khởi tạo:
Chọn Board và chọn cổng COM, sau đó nhấn nút để
void setup() { biên dịch và nạp chương trình.
lcd.init();
Sau khi nạp chương trình xong, hãy quan sát kết quả.
Bật đèn nền màn hình để dễ dàng quan sát nội dung hiển
thị trên đó:
lcd.backlight();
}
Trong hàm loop(), để hiển thị nội dung ra màn hình, đầu tiên
cần đặt vị trí con trỏ tại vị trí muốn hiển thị. Ở đây đặt vị
trí con trỏ tại cột 2, hàng 0. Bạn có thể thay đổi thành số
tương ứng với vị trí bạn muốn đặt con trỏ.
void loop() {
lcd.setCursor(2, 0);
Hiển thị nội dung Hello World! ra màn hình bằng hàm print.
Dùng hàm clear để xóa màn hình sau 1 giây, sau đó lại dừng
chương trình 1 giây.
33
Cảm biến
Chuẩn bị Chương trình
1. Node Wifi 32 Ở bài này, bạn cần cài đặt thư viện DHT để
nhiệt độ
2. Module Temperature & Humidity chạy chương trình, xem tiếp hướng dẫn ở
Sensor DHT11 phần cài đặt thư viện.
độ ẩm
#include <LiquidCrystal_I2C.h>
Mục tiêu #include “DHT.h”
void setup() {
Kết nối phần cứng Serial.begin(9600);
lcd.init();
lcd.backlight();
dht.begin();
Cảm biến nhiệt độ & độ ẩm uart i2c.. I2c.
Temperature & Humidity
}
(Temperature & Humidity Sensor
DHT11) được sử dụng để xác void loop() {
d3 d2 d1
định nhiệt độ và độ ẩm của float h = dht.readHumidity();
không khí trong các ứng dụng: float t = dht.readTemperature();
A3 A2 A1
trồng cây, theo dõi thời tiết,... if (isnan(h) || isnan(t)) {
Serial.println(F(“Failed to
read from DHT sensor!”));
return;
}
34
lcd.setCursor(0, 0);
lcd.print(“Temperature: “); Tìm thư viện DHT
DHT, chọn version mới nhất và nhấn Install để
lcd.setCursor(13, 0); cài đặt.
lcd.print(t);
lcd.setCursor(20, 0);
lcd.print(“do C”);
lcd.setCursor(0, 1);
lcd.print(“Humidity: “);
lcd.setCursor(13, 1);
lcd.print(h);
lcd.setCursor(20, 1);
lcd.print(“%”);
delay(1000);
}