Tải bản đầy đủ (.docx) (341 trang)

Practical arduino engineering (thực hành kĩ thuật Arduino)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (8.53 MB, 341 trang )

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA ĐIỆN TỬ VIỄN THÔNG
THỰC HÀNH KĨ THUẬT
ARDUINO
1
Sinh viên thực hiện:
D6-DTVT2
Nguyễn Thanh Hải © Vũ Đình Hoan
Nguyễn Đức Anh Lê Xuân Quyền
Nguyễn Tuấn Bảo Vũ Viết Tùng
Nguyễn Văn Đại Nguyễn Thị Yến B
Nguyễn Văn Hà
Chương 1: Quá trình của kĩ thuật Ardruino
Trong chương này, chúng ta sẽ thảo luận về các quy trình kỹ thuật và làm thế nào bạn có thể sử
dụng nó để hợp lí hóa các mẫu thử bằng cách tránh các vấn đề xảy ra với phần cứng và phần
mềm và giữ một tiến trình cố định . Trong suốt cuốn sách này, bạn sẽ có những thiết kế mà sẽ
2
được tổ chức thành một trình tự có thể gọi là các “quá trình kĩ thuật “ . Dưới đây là tóm tắt của
các trình tự này
Thu thập các yêu cầu .
Tạo các tài liệu yêu cầu .
Thu thập phần cứng .
Cấu hình phần cứng .
Viết phần mềm .
Gỡ lỗi của phần mềm Arduino .
Xử lý sự cố phần cứng .
Hoàn tất mẫu thử .
Như bạn có thể tưởng tượng, thậm chí tóm tắt này của quá trình kỹ thuật là rất hiệu quả khi tạo
mẫu, đó là lý do tại sao chúng tôi sẽ sử dụng nó với Arduino trong cuốn sách này.Vậy Arduino là
gì ? Arduino là một vi điều khiển rất tùy biến , ngoài ra nó còn là mã nguồn mở, có nghĩa là mã
nguồn có sẵn cho các nhu cầu lập trình của bạn ; môi trường phát triển tích hợp (IDE) (nơi bạn


sẽ được viết phần mềm của bạn) là miễn phí, và hầu hết các tài nguyên bạn có thể tìm được là mã
nguồn mở . Điều duy nhất bạn phải mua là bộ vi điều khiển Arduino chính nó. Arduino được hỗ
trợ rất tốt trên Web và trong sách vở, điều này làm cho nó rất dễ dàng để nghiên cứu làm thế nào
để chủ đề; một vài trang web sẽ giúp bạn bắt đầu học arduino là www.Arduino.cc và
/>Nhưng cuốn sách này là một cách đợn giản hơn để tham khảo; cuốn sách này sẽ dạy cho bạn về
quá trình kĩ thuật arduino - một kỹ năng rất hữu ích cho việc tạo các thiết kế dễ đọc hơn, hiệu
quả và đáng tin cậy hơn .
Thu Thập Phần Cứng
Trước khi nghiên cứu các bước quy trình kỹ thuật, điều quan trọng là phải biết một số các bộ
phận và vật liệu cần có . Trong suốt cuốn sách này, bạn sẽ cần những linh kiện kế tiếp của phần
3
cứng để hoàn thành các thiết kế khác nhau.Chúng ta sẽ làm việc trên (đối với một danh sách đầy
đủ của phần cứng được sử dụng trong cuốn sách này, xin vui lòng xem Phụ lục A):
 Arduino Duemilanove hoặc UNO : Bạn có thể sử dụng vi điều khiển Duemilanove hoặc
UNO trong cuốn sách này (Hình 1-1) . Chúng có nhiều cổng I / O cho các cảm biến và
động cơ . Chúng ta sẽ sử dụng các điểm I / O để điều khiển và theo dõi các thiết kế khác
nhau trong cuốn sách này.

Hình 1-1 :
Arduino
UNO (trái ) and
Duemilanove
(
phải)

Arduino BT hoặc Bluetooth Mate sliver: Ta nên sử dụng modem Bluetooth Mate sliver cho
cuốn sách này bởi vì nó có thể làm cho Arduino Duemilanove hoặc UNO của bạn hành xử như
một ArduinoBT với một nửa chi phí. Ngoài ra, các ArduinoBT không có điểm đầu ra 3.3V, vì
vậy bạn sẽ cần phải thêm mạch để các Arduino để có được 3.3V , cái mà bạn cần trong chương 6
của cuốn sách này . Hình 1-2 minh họa hai phần của phần cứng.

4

Hình 1-2: ArduinoBT
(left) and
Bluetooth
Mate Silver
(right)
Solderless breadboard: Một phần rất quan trọng của phần cứng là breadboard solderless (xem
Hình 1-3), được sử dụng để thực hiện mạch của bạn. Đối với cuốn sách này, bạn cần phải có một
breadboard solderless hạng trung. Nó sẽ được sử dụng trong cả hai giai đoạn thiết kế và xử lý sự
cố của dự án.

Hình 1-3 : Một ví dụ về một solderless
breadboard
5
Dây: Chúng ta sẽ sử dụng một số lượng lớn các dây trong cuốn sách này; bạn có thể có được
một kit wire jumper ( kit đi dây ) ở hầu như bất kỳ cửa hàng điện tử.
Lá chắn Arduino: Chúng tôi sẽ sử dụng một số lá chắn trong cuốn sách này, bao gồm cả lá chắn
động cơ, GPS, GSM, và LCD (xem Hình 1-4).

Hình 1-4 : Một cặp lá chắn Arduino , GPS Shield ở bên trái và lá chắn
motor ở bên phải
Lá chắn động cơ : Lá chắn này được sử dụng để điều khiển động cơ lên tới 18V. Nó bao gồm
một mặt gắn kết cầu H , cái mà cho phép một mô tơ điện áp cao hơn đc sử dụng tốt cũng như
điều khiển hai mô tơ. Để biết thêm thông tin về cầu H , chúng ta có thể đọc chương 3 .
Lá chắn GPS : Lá chắn này được sử dụng để có được thông tin vị trí từ vệ tinh GPS. Nó sử
dụng các tiêu chuẩn của Hiệp hội Điện tử Hàng Hải Quốc gia (NMEA) , có thể được phân tích
để cho bạn biết bất kỳ các con số về những thứ như kinh độ và vĩ độ cho dù GPS có một số vấn
đề về sửa lỗi , loại sửa lỗi , một sự đánh dấu thời gian và tỉ số tín hiệu trên nhiễu .Thông tin chi
tiết về hệ thống GPS được trình bày ở chương 5 .

Lá chắn GSM : Lá chắn này sẽ cho phép bạn sử dụng sức mạnh của Hệ Thống Truyền Thông
Di Động Toàn Cầu (GSM) để gửi tin nhắn văn bản qua lại ở khoảng cách lớn ; lá chắn này cũng
sử dụng một giao thức chuẩn, gọi là giao thức GSM.
Lá chắn LCD : Được sử dụng để thêm các hình ảnh về cuộc sống vào trong các robot. Các lá
chắn LCD cũng có thể được sử dụng để tạo giao diện người dùng của riêng bạn cho robot của
bạn hoặc bất kỳ thiết kế nào khác mà bạn muốn persue.
6
Cảm biến : Đây là rất quan trọng vì chúng tạo ra sự sống cho các thiết kế của bạn. Một số ví dụ
là cảm biến PIR (hồng ngoại thụ động ), sonar và nhiệt độ (xem Hình 1- 5).

Hình 1-5 : Một cảm biến PIR (trái) và một cảm biến sonar (phải)
Cảm biến PIR: Đây là một bộ cảm biến vượt trội để phát hiện những thay đổi trong ánh sáng
hồng ngoại và có thể phát hiện những thay đổi về nhiệt độ. Nó cũng là rất tốt với khả năng phát
hiện chuyển động .
Cảm biến Sonar: Sonar cảm biến phát hiện tốt các đối tượng trong môi trường xung quanh. Các
cảm biến Sonar mà chúng ta sẽ sử dụng là một bộ cảm biến Parallax và cho ta biết khoảng cách
bao xa tới các đối tượng .
Cảm biến nhiệt độ: Những cảm biến này được sử dụng để đọc nhiệt độ. Để sử dụng chúng,
trước tiên bạn cần mở rộng quy mô điện áp với nhiệt độ bạn muốn ghi lại; bạn có thể tìm thêm
thông tin về bộ cảm biến này trong chương 6.
Servos và motor : điều khiển nhiều khía cạnh của thiết kế (xem Hình 1-6).
7

Hình 1-6 : Các ví dụ về một số mô tơ
Các loại khác: Đây là những thành phần phổ biến nhất, chẳng hạn như điện trở, tụ điện, đèn
LED, điốt, và bóng bán dẫn (xem hình 1-7).

Hình 1-7 :Các thành phần khác của phần cứng (các khối thiết bị đầu cuối, tụ điện, điện trở, đèn
LED, và chuyển mạch)
8

Thu Thập Các Công Cụ.
Trong phần này chúng ta sẽ được mô tả ngắn gọn một loạt các công cụ , đối với một danh sách
đầy đủ các công cụ bạn cần vui lòng xem Phụ lục A.
Hàn sắt: Công cụ này được sử dụng để kết nối các mạch với nhau; mà chúng ta sẽ sử dụng nó
chủ yếu để kết nối dây mạch (xem Hình 1-8).

Hình 1-8 : Một mỏ hàn sắt và ống đặt của nó
Hàn: Bạn sẽ sử dụng kết hợp với sắt hàn; nó là kim loại kết nối các mạch với nhau. Hàn có nhiệt
độ nóng chảy rất thấp.
Kìm mũi nhọn: Những kìm là rất quan trọng; chúng được sử dụng để giữ dây và mạch tại chỗ,
quấn dây xung quanh mạch, (xem hình 1-9).
Kính phóng đại : Công cụ này được sử dụng để xem tốt hơn mạch.
Kềm (dikes): Chúng được sử dụng để cắt dây (xem hình 1-9).
Kìm cắt tuốt dây: Công cụ này được sử dụng để tách dây cách điện (xem hình 1-9)
9
Đồng hồ vạn năng: Có thể là công cụ quan trọng nhất mà bạn có thể sở hữu, công cụ này cho
phép bạn đọc điện áp AC (dòng xoay chiều) và DC (dòng một chiều), amps (ampe), và ohms
(xem Hình 1-9).
Máy tính khoa học: Điều này cho phép bạn làm các phép tính khác nhau (Luật Ohm, chia điện
áp, vv).

Hình 1-9 : Công cụ bổ sung từ trái sang phải: Đồng hồ vạn năng, kìm nhọn , kìm cắt dây (trên) ,
kìm cắt,tuốt dây (dưới )
Tìm hiểu về Quy Trình Kỹ Thuật
Các quy trình kỹ thuật là rất hữu ích trong việc tạo các thiết kế của bạn hiệu quả hơn, sắp xếp
hợp lý, và dễ hiểu. Quá trình này bao gồm thu thập yêu cầu, tạo ra các tài liệu yêu cầu, tập hợp
các phần cứng chính xác, cấu hình phần cứng, viết phần mềm, gỡ lỗi phần mềm, khắc phục sự cố
phần cứng, và phát tín hiệu ngừng trên nguyên mẫu hoàn thành
Thu thập yêu cầu
Một ngày, khi bạn là một kỹ sư, bạn có thể được yêu cầu để tới một công ty và đánh giá nhu cầu

của họ cho một thiết kế cụ thể. Phần này của quá trình kỹ thuật là rất quan trọng; tất cả mọi thứ
sẽ phụ thuộc vào các yêu cầu bạn thu thập tại cuộc gặp đầu tiên này . Ví dụ, giả sử bạn biết rằng
10
khách hàng của bạn cần phải nhấp nháy đèn LED ở một tốc độ nhất định [chèn một trường
hợp ví dụ ở đây để tuôn ra các ý tưởng]. Và đối với công việc đó, bạn và khách hàng xác định
rằng các bộ vi xử lý Arduino là sự lựa chọn tốt nhất. Để sử dụng Arduino nhấp nháy đèn LED
[chèn một ví dụ ở đây], một khách hàng cần một đèn LED nhấp nháy ở khoảng 100ms.
Khởi tạo những tài liệu yêu cầu
Dựa trên nhu cầu của khách hàng và giải pháp đề xuất của bạn, sau đây là một tài liệu yêu cầu rất
đơn giản:
Phần cứng .
Arduino.
LED.
Pin 9V.
Cổng kết nối Pin 9V.
Điện trở 22 ohm .
Phần mềm .
Một chương trình nhấp nháy LED ở khoảng 100ms .
Có thể đây là một ví dụ đơn giản , nhưng chúng ta sẽ sử dụng định dạng này cho phần còn lại của
cuốn sách . Một trong những lý do bạn tạo một tài liệu yêu cầu là để ngăn chặn tính năng biến
dạng từ biến . Điều này xảy ra khi một khách hàng tiếp tục thêm tính năng cho phần mềm và /
hoặc phần cứng. Điều nàydĩ nhiên là một vấn đề bởi vì bạn sẽ làm việc nhiều giờ mà không phải
trả thêm tiền vào một thiết kế mà có thể không bao giờ kết thúc . Bạn nên tạo một tài liệu yêu
cầu, vì vậy bạn và khách hàng có thể biết những gì bạn đang làm và các tính năng bạn sẽ tạo cho
thiết kế của bạn. Sau khi bạn đã tạo ra các tài liệu yêu cầu, bạn có thể tạo một sơ đồ sẽ giúp bạn
gỡ lỗi các phần mềm sau này trong quá trình thiết kế (xem hình 1-10).
11

Hình 1-10 : Một chương trình nháy LED
Thu Thập Phần Cứng

Phần rất quan trọng tiếp theo của quy trình kỹ thuật là đảm bảo chắc chắn rằng bạn có phần
cứng bên phải. Yêu cầu phần cứng của bạn cần được quyết định như bạn đang thu thập các yêu
cầu, nhưng điều quan trọng là phải đảm bảo tất cả các phần cứng của bạn là tương thích. Nếu nó
không tương thích, thay đổi phần cứng có thể là cần thiết nhưng bạn nên tham khảo ý kiến của
công ty bạn đang làm việc để đảm bảo họ sẽ hài lòng với bất kỳ thay đổi phần cứng nào .
Cấu Hình Phần Cứng
Một khi bạn có phần cứng chính xác, đó là thời điểm để cấu hình nó. Tùy thuộc vào phần cứng
cần thiết cho thiết kế , cấu hình có thể thay đổi. Ví dụ, chúng ta hãy nhìn vào cấu hình phần cứng
cho thiết kế LED nhấp nháy.
Arduino
Pin 9V
LED
Cổng kết nối Pin 9V
12
Để thiết lập phần cứng, chúng ta cần phải kết nối các đèn LED tới pin kỹ thuật số 13 và nối đất
trên Arduino (xem hình 1-11), như minh họa trong sơ đồ thể hiện trong hình 1-12.

Hình 1-11 : Các thiết lập phần cứng cho thiết kế nhấp nhát LE
Hình 1-12 : Một sơ đồ nguyên lí của thiết kế nhấp nháy LED
13
Đầu tiên, chúng ta cần phải cài đặt Arduino IDE. Để làm điều này, đi đến
www.Arduino.cc/en/Main/Software. Arduino IDE sẽ làm việc với Windows Vista hoặc 7, Mac
OS X, và các hệ thống Linux. Sau khi Arduino IDE sẽ được tải về máy tính để bàn của bạn, nó
sẽ được trong một định dạng nén, do đó giải nén file Arduino-0022 trên máy tính để bàn của
bạn. Arduino IDE đã được cài đặt.
Bây giờ bạn có Arduino IDE được cài đặt trên máy tính của bạn, bạn cần phải chắc chắn rằng nó
được cấu hình đúng. Để làm điều này, mở Arduino IDE, và vào Tools cổng nối tiếp (Serial
port) ; chọn cổng nối tiếp ( Serial port) Arduino của bạn được kết nối với. Tiếp theo, chọn Tools
board , và chọn Arduino board bạn đang sử dụng (cuốn sách này sử dụng Arduino Duemilanove
Atmega328). Một khi phần cứng của bạn được cấu hình, nó là thời điểm để viết chương trình

phần mềm.
Viết Chương trình
Bây giờ, chúng ta hãy xem xét các chương trình cần phải viết. Đây là một phần quan trọng của
quá trình kỹ thuật . Chúng ta hãy nhìn vào tài liệu yêu cầu của thiết kế nhấp nháy LED để quyết
định những gì chương trình sẽ cần phải làm: đèn LED cần nhấp nháy trong khoảng thời gian
100msn. Chương trình có thể viết được dưới dạng sau:
// Nhấp nháy led trong 100ms
const
int
LEDdelay
= 100; // gọi trễ

void
setup()
{
pinMode(13, OUTPUT); //
tạo đầu ra ở chân 13
}
void
loop()
{
digitalWrite(13,
HIGH); //
ghi ở mức cao

14
bit
to pin 13 delay(LEDdelay); // trễ
100ms
digitalWrite(13,

LOW);
delay(LEDdelay) // điều này sẽ tạo một lỗi cú pháp do một dấu chấm phẩy bị thiếu
Chú ý Khi bạn cố gắng để biên dịch chương trình này để Arduino của bạn, nó mang lại cho bạn
một lỗi. Điều này là do một lỗi cú pháp mà mà chúng ta sẽ gỡ lỗi trong phần tiếp theo.
Sửa Lỗi Chương Trình Arduino
Chương trình cuối cùng thất bại trong việc biên dịch vì một lỗi cú pháp. Đây là loại lỗi là do mã
định dạng không chính xác, chẳng hạn như một dấu chấm phẩy mất tích (đó là lý do tại sao các
chương trình cuối cùng không biên dịch). Dưới đây là mã sửa đổi:
// Nhấp nháy led trong 100ms
const
int
LEDdelay
= 100; // gọi trễ

void
setup()
{
pinMode(13, OUTPUT); //
tạo đầu ra ở chân 13
}
void
loop()
{
digitalWrite(13,
HIGH); //
ghi ở mức cao
bit
to pin 13 delay(LEDdelay); // trễ
100ms
digitalWrite(13,

LOW);
delay(LEDdelay)
; // dấu chấm phẩy tồn tại , code sẽ được biên dịch
}
Lỗi cú pháp không phải là lỗi tồi tệ nhất . Các lỗi tồi tệ nhất bạn có thể nhận được các lỗi logic;
Chúng ta có thể gỡ lỗi các lỗi logic trong một chương trình Arduino bằng cách sử dụng một sơ
đồ để tìm ra nơi các giá trị được không xếp hàng.
15
Xử lí sự cố phần cứng
Công cụ số một được sử dụng để xử lí sự cố phần cứng là đồng hồ vạn năng . Công cụ này có thể
cứu phần cứng của bạn khỏi bị hư hỏng. Ví dụ, nếu đồng hồ vạn năng của bạn phát hiện rằng
nguồn điện là nhiều hơn là cần thiết, thiết lập phần cứng cho thiết kế nhấp nháy đèn LED có thể
sử dụng một điện trở 22 Ohm để hạn dòng cho LED.
Hoàn Thành Mẫu Thử
Một khi bạn đã hoàn thành việc gỡ lỗi phần mềm và khắc phục sự cố phần cứng, bạn cần phải có
một nguyên mẫu hoàn thành sẽ làm việc trong hầu hết các trường hợp . Một khi b đã hoàn thành
việc gỡ lỗi phần mềm và khắc phục sự cố phần cứng, bạn cần phải có một nguyên mẫu hoàn
thành sẽ làm việc trong hầu hết các trường hợp. Trong chương này, chúng ta sử dụng một thiết
kế rất đơn giản, nhưng trong các chương sau, thiết kế sẽ trở nên phức tạp hơn, và các quy trình
kỹ thuật sẽ trở nên cần thiết hơn để đảm bảo mã code là hiệu quả, hợp lý, và dễ hiểu
Tóm Tắt Sơ Lược
Trong chương này, ta đã học được những phần khác nhau của phần cứng và các công cụ khác
nhau như: Arduino, Arduino Shields (lá chắn arduino), Đồng hồ vạn năng, và kìm nhọn , sau đó
chúng ta đã tìm hiểu về qui trình kĩ thuật Arduino . Các bước trong quá trình này là : thu thập
yêu cầu, tạo các tài liệu yêu cầu, tập hợp các phần cứng , cấu hình phần cứng, viết phần mềm, gỡ
lỗi các phần mềm Arduino, khắc phục sự cố phần cứng, và hoàn thành nguyên mẫu . Tacũng xác
định một số điều khoản mới sẽ giúp hiểu được quy trình kỹ thuật, vàchúng ta đã học được sự
khác biệt giữa các lỗi logic và cú pháp.
16
Chương 2: Tìm hiểu về chương trình phần mềm

Arduino
Trong chương này, chúng ta sẽ thảo luận về các khối lập trình khác nhau sẽ được sử dụng trong
cuốn sách này. Nếu bạn đã được lập trình trong C, bạn sẽ thấy rằng lập trình cho các Arduino là
rất giống nhau. Nếu không, chương này sẽ dạy cho bạn những khái niệm cơ bản. Tại sao nó quan
trọng cho bạn để tìm hiểu những điều cơ bản của lập trình Arduino? Về lâu dài, điều này sẽ giúp
giữ mã của bạn thoáng và dễ đọc. Ngoài ra, học tập các vòng lặp cơ bản (loop) và cấu trúc ban
đầu sẽ cho phép chúng ta tập trung hơn vào các thư viện sau đó. Thư viện có thể có các lớp, loại,
hoặc các chức năng và có thể được gọi bằng cách sử dụng các từ khóa trong chương trình . Mục
đích của thư viện là để dễ dàng thêm nhiều chức năng hơn cho chương trình của bạn bằng cách
sử dụng mã code đã được tạo ra trước. Một số thư viện ta sẽ tìm hiểu trong chương này là
NewSoftwareSerial, Thư viện LCD, TinyGPS,và một vài thư viện khác .
Bắt Đầu Với setup( ) và loop( )
Tất cả các chương trình Arduino phải có hai thành phần chính để làm việc đúng là setup () và
loop () . Chúng được thực hiện như sau :
// chương trình Arduino cơ bản
void
setup()
{
// thiết đặt I/O tại đây
}
void
loop()
{
//
làm một số công việc
}
17
setup ( ) được sử dụng để thiết lập cổng I / O chẳng hạn như đèn LED, cảm biến, động cơ, và
cổng nối tiếp. Cần chú ý thiết lập là rất quan trọng bởi vì để sử dụng các chân trên Arduino,
chúng ta cần phải thông báo với Arduino rằng chúng sẽ được sử dụng.

loop ( ) nắm giữ tất cả các mã điều khiển các cổng I / O . Ví dụ, ở đây bạn sẽ thông báo với
động cơ (motor) của bạn chạy với một tốc độ nhất định. Chúng ta sẽ tìm hiểu làm thế nào để
thiết lập và điều khiển I / O trong các phần tiếp theo. Chương trình Arduino cũng có chức năng
bổ sung các chương trình con, rất hữu ích bạn có thể gọi trong vòng lặp loop () hoặc chương
trình con của nó. Để sử dụng một chương trình con, trước tiên bạn phải khởi tạo nó ở phần đầu
của chương trình , đó là một mẫu thử chức năng . Dưới đây là một ví dụ :
// hàm nguyên mẫu

void
delayLED();
void
setup()
{
}
void
loop()
{
}
// ví dụ về chương trình con

void delayLED()
{
// thực hiện sau cấu trúc
loop()
}
Khởi Tạo Biến
Biến là các khối xây dựng một chương trình cơ bản nhất; chúng được sử dụng để truyền dữ liệu
xung quanh chương trình của bạn và được sử dụng trong tất cả các chương trình chúng tai sẽ tìm
hiểu trong cuốn sách này. Chúng tacó thể viết một số dạng của các biến ngôn ngữ Arduino trong
Bảng 2-1 :

18
Bảng 2-1 : Các loại biến
Tên biến Giá trị Dải biểu diễn
char
'a'
–128 to
127
byte
1011
0 to
255
Int
-1
–32,768 to
32,767
unsigned
int
5
0 to
65,535
long
512
–2,147,483,648
to
2,147,483,647
unsigned
long
3,000,000
0 to 4,294,967,
295

float
2.513
–3.4028235E+38
to
3.402823
5E+
38
double 2.513
–3.4028235E+38
to
3.402823
5E+
38
Bây giờ bạn cần phải biết làm thế nào để khai báo các biến. Để khai báo, bạn cần phải biết những
gì trong phạm vi các biến có thể được sử dụng và sau đó xác định (hoặc liệt kê) phạm vi đáp ứng
nhu cầu của bạn. Trong cuốn sách này, chúng ta sẽ tìm hiểu hai loại biến : biến cục bộ và biến
số chung. Một biến cục bộ chỉ hoạt động trong phạm vi nhất định của nó. Ví dụ, một vòng lặp
giữ các biến khai báo của nó chỉ trong dấu ngoặc đơn của nó, do đó, những biến này là cục bộ
cho một vòng lặp loop . Một biến số chung (toàn cục ) có thể được gọi tại bất kỳ điểm nào trong
chương trình của bạn. Để xác định một biến số chung , khởi tạo nó ở phần đầu của chương trình
của bạn. Chương trình sau đây minh họa cách khởi tạo các biến cục bộ và biến số chung :
// Khởi tạo biến
int x; // Biến này được là toàn cục và có sẵn để truy cập trong suốt chương trình này
void setup()
{
}
void loop()
{
x = 1 + 2; // gán giá trị 3 cho x
19

for(int i; i <= 100; i++)
{
// i là biến cục bộ có thể được gọi trong vòng lặp for
}
Phần còn lại của khai báo biến được thiết lập theo cách tương tự cho đến khi bạn bắt đầu sử
dụng mảng. Mảng cho phép bạn sử dụng nhiều giá trị cùng loại, ví dụ, nếu muốn vượt qua nhiều
chân kỹ thuật số mà không cần phải khai báo mỗi một cá thể .
int pins[ ]
=
{13,9,8};
Đó là một ý tưởng tốt để khai báo kích thước của mảng, như trong ví dụ sau:
const
int
NumOfPins
=
3;
int
pins[NumOfPins] =
{13,9,8};
Điều này sẽ cho phép bạn truy cập thông tin của mảng, và sau đó, bạn có thể truyền thông tin đó
để một pin kỹ thuật số hoặc bất cứ điều gì khác mà bạn muốn. Biến bây giờ đã được khai báo,
làm thế nào để bạn sử dụng chúng ? Điều này sẽ được thảo luận trong phần tiếp theo của chương
này.
Lưu ý : Whitespacing có nghĩa là bạn đã thêm dòng trống và không gian trong mã code để
làm cho nó dễ đọc hơn
Viết Câu Lệnh Có Điều Kiện
Câu lệnh điều kiện có thể được sử dụng để kiểm soát dòng dữ liệu của chương trình của bạn. Ví
dụ, nói rằng bạn muốn chạy một động cơ chỉ khi một nút được nhấn; bạn có thể làm như vậy
bằng cách sử dụng câu lệnh điều kiện. Chúng tôi sẽ thảo luận về các câu lệnh có điều kiện sau
đây: if, if-elseif, if-else, câu lệnh chuyển đổi.

Một câu lệnh if rất quan trọng , dưới đây là một ví dụ về câu lệnh if :
int i;
if (i < 10)
{
20
i++;
}
Bạn cũng có thể thêm câu lệnh elseif ở cuối câu lệnh if để thêm các điều kiện khác vào
chương trình và tạo ra một lệnh if-elseif, ví dụ:
int i;
if (i < 10)
{
i++;
}
else if (i > 10)
{
i ;
}
Một thực chương trình sử dụng một câu lệnh điều kiện sẽ được đọc một giá trị từ một chiết áp ,
như trong ví dụ sau đây:
potValue = analogRead(potPin);
if (potValue <= 500)
{
Eles{
digitalWrite(motorpin, 1);
digitalWrite(motorpin, 0);
}
Chú ý : Bạn phải nhớ thiết lập các chân của Arduino để trước khi bạn gọi chúng trong một
vòng lặp loop.
Một câu lệnh chuyển đổi được sử dụng nếu bạn có nhiều điều kiện bởi vì nó làm gọn mã code

của bạn. Dưới đây là một ví dụ về một câu lệnh chuyển đổi :
21
switch (potValue){ case 500;
digitalWrite(motorPin,1);
case 501;
digitalWrite(ledPin,1);
break;

default:
digitalWrite(motorPin,0);
digitalWrite(ledPin,0);
Trong ví dụ này, nếu potValue bằng 500, động cơ sẽ bật, và nếu potValue bằng 501, một đèn
LED sẽ bật. Các trường hợp mặc định là true khi potValue không phải 500 hay 501, và trong
trường hợp đó, động cơ và LED đều tắt
Làm Việc Với Vòng Lặp LOOP
Loops có nhiều công dụng bao gồm cả việc loại bỏ mã dư thừa và lặp qua mảng . Các vòng lặp
chúng ta sẽ sử dụng là : for , while và do….while . Những vòng lặp sẽ cho phép chúng ta chạy
qua mã trong khi một điều kiện là đúng (hay sai, trong một số trường hợp).
Vòng lặp for : Vòng lặp này được sử dụng để lặp lại một khối mã một số cố định của thời gian.
Các thiết lập cơ bản của vòng lặp này là :
For ( int i=0 ; i<=10 ;i++ )
{ // viết câu lệnh ở đây
}
Một ứng dụng thực tế cho một cho vòng lặp for là sử dụng nó để cập nhật nhiều cài đặt pinMode:
int pins [ ]
=
{13,9,8};
void
setup()
22

{
for(int
i
= 0;
i<=2;i++) // cài đặt mỗi chân
{
pinMode(pin[i],
OUTPUT);
}
}
void
loop() // đặt code ở đây
{
}
Lưu ý pinMode được sử dụng để thiết lập các chân I / O của bạn trên Arduino
Vòng lặp while : vòng lặp này sẽ chạy cho đến khi một điều kiện đã được đáp ứng; nếu điều
kiện đầu tiên là sai, nó sẽ không chạy ở tất cả. Ví dụ, bạn muốn sử dụng một vòng lặp while nếu
bạn muốn chạy mã cho đến khi được một giá trị nhất định đến từ một cảm biến. Ví dụ sau đây
minh họa nguyên tắc này :

int
potPin = A1;
int potPin = 9 ;

int potVal;
void
setup ( )
{
pinMode(motorPin,OUTPUT);
pinMode(potPin,INPUT);

}
void
loop()
{
potVal =
analogRead(potPin);

while(potVal
<= 100) / / Chạy cho đế n khi potVal lớn hơn 100
23
digitalW rite ( motorpin,1) ;
}
}
Điều đầu tiên mã này khởi tạo các chân chiết và động cơ ; sau đó, khai báo biến potVal giúp
giữ các giá trị chiết áp. Tiếp theo, chúng ta thiết lập
các motorPin cho một đầu ra và potPin để một đầu vào . Cuối cùng, chúng ta sử dụng vòng lặp
while với một điều kiện potVal100, và trong khi điều kiện đó đúng, động cơ sẽ được bật .
Vòng lặp Do while : Nó giống như các vòng lặp while ngoại trừ các câu lệnh điều kiện được
kiểm tra ở cuối vòng lặp, vì vậy vòng lặp này sẽ chạy ít nhất một lần. Dưới đây là một ví dụ:
Do
{ i++ ; // tăng i
} while ( i<=100) ;
Giao Tiếp Số
Trong suốt cuốn sách này, chúng tôi sẽ được giao tiếp với nhiều loại I / O thông qua các chân kỹ
thuật số, vì vậy điều quan trọng là phải hiểu làm thế nào mà các khối giao tiếp làm việc . Cụ thể,
chúng tôi sử dụng các câu lệnh digitalWrite (pin, HIGH / LOW) và digitalRead (pin) để giao tiếp
với các chân kỹ thuật số. Một ví dụ này được hiển thị trong Liệt kê 2-1.
Liệt kê 2-1 : Câu lệnh số
int button = 12 ;
int led = 13 ;

int buttonState ;
void setup ( )
{
pinMode(button,INPUT);
pinMode (led,OUTPUT);
}
24
void loop ( )
{
buttonState = digitalRead(button); // Gán nút cho buttonState
if(buttonState==1)
{
digitalWrite(led,HIGHT); // ghi giá trị 1 vào chân số 13
}
Else
{
digitalWrite ( led , LOW) ; // ghi giá trị 0 vào chân thứ 13
}
}
Chương trình này sử dụng digitalWrite () và digitalRead () để có được giá trị của chân nút và viết
một giá trị mới cho nó (trong trường hợp này là cao hoặc thấp)
Lưu ý : sử dụng các chân số PWM để kiểm soát tốc độ động cơ và độ sáng LED
Giao Tiếp Với Các Linh Kiện Tương Tự
Bạn cũng có thể sử dụng giao tiếp tương tự với cảm biến và động cơ, có nghĩa là bạn có thể kết
nối chiết áp để điều khiển tốc độ động cơ thông qua một chân điều chế độ rộng xung (PWM)
trên Arduino. Các chức năng cho giao tiếp tương tự là analogRead (giá trị) và analogWrite (chân
, giá trị). Điều duy nhất bạn cần phải ghi nhớ là một chiết áp sẽ cho một giá trị từ 0 đến 1024, do
đó bạn sẽ có quy mô analogWrite từ 0 đến 255, ví dụ:
analogWrite (LED,ledValue/4) ; // 1024/4 = 255
Giao Tiếp Nối Tiếp

Chúng ta sẽ sử dụng giao tiếp nối tiếp trong suốt cuốn sách này . Giao tiếp nối tiếp cho phép
chúng ta giao tiếp với một máy tính, màn hình LCD, và nhiều thiết bị khác, như bạn sẽ thấy
trong một số chương tiếp theo. Một số lệnh nối tiếp là : Serial.begin (baud), Serial.Println
25

×