CẤU TRÚCToán tử số học Toán tử so sánh Toán tử logic Phép toán hợp nhất Phép chia lấy +Cách chú thích trong khi lập trình: Trong khi lập trình cần phải ghi chú để giải thích các biến, h
Trang 1BÀI 3:
CÁC LỆNH LẬP TRÌNH CƠ BẢN TRONG ARDUINO
Trang 2I CẤU TRÚC
Toán tử số học Toán tử so sánh Toán tử logic Phép toán hợp nhất
Phép chia lấy
+Cách chú thích trong khi lập trình:
Trong khi lập trình cần phải ghi chú để giải thích các biến, hằng, thao tác xử lý giúp cho chương trình rõ ràng dễ hiểu, dễ nhớ, dễ sửa chữa và để người khác đọc vào dễ hiểu Trong C có các ghi chú sau: // hoặc /* nội dung ghi chú */
// dùng để ghi chú một hàng /* … */ có thể ghi chú một hàng hoặc nhiều hàng
Trang 31.Câu lênh if…else
*Cú pháp:
if ([biểu thức 1] [toán tử so sánh] [biểu thức 2]) //biểu thức điều kiện
{
[câu lệnh 1];
}
else
{
[câu lệnh 2];
}
*ví dụ:
int a = 0;
if (a == 0) {
a = 10;
} else {
a = 1;
} // kết quả: a = 10
*lưu ý: Lệnh if không bắt buộc phải có nhóm lệnh nằm sau từ
khóa else
Trang 42.Câu lệnh switch/case
*Cú pháp:
switch (biểu thức)
{
case giá trị 1 : khối lệnh 1;
break;
case giá trị 2 : khối lệnh 2;
break;
…
case giá trị n : khối lệnh n;
break;
default : khối lệnh;
[break;]
}
*Giải thích: Khi giá trị của biểu thức bằng giá trị i thì lệnh i sẽ
được thực hiện Nếu sau lệnh i không có lệnh break thì tiếp tục thực hiện các lệnh sau nó Ngược lại thoát khỏi cấu trúc switch Nếu giá trị biểu thức không trùng với bất kỳ giá trị i nào thì lệnh tương ứng với từ khóa default sẽ được thực hiện
*Lưu ý:
- Không đặt dấu chấm phẩy sau câu lệnh switch
- Biểu thức phải là có kết quả làgiá trị nguyên (char, int, long,
…)
- Lệnh 1, 2…n có thể gồm nhiều lệnh, nhưng không cần đặt trong cặp dấu { }
Trang 5*Ví dụ:
switch(ithang)
{
case1:case2:case3 :printf("Quy 1.\n");
break;
case4:case5:case6:printf("Quy 2.\n");
break;
case7:case8:case9:printf("Quy 3.\n");
break;
case10:case11:case12:printf("Quy 4.\n");
break;
default:printf("Phai nhap vao so trong khoang 1 12\n"); }
Trang 6II.KHAI BÁO:
1.Khai báo các hàm chuẩn
#include <[đường dẫn đến file chứa thư viện]>
Ý nghĩa: cho phép chương trình của bạn tải một thư viện đã được viết sẵn Tức là bạn có thể truy xuất được những
tài nguyên trong thư viện này từ chương trình của mình Nếu bạn có một đoạn code và cần sử dụng nó trong nhiều chương trình, bạn có thể dùng #include để nạp đoạn code ấy vào chương trình của mình, thay vì phải chép đi chép lại đoạn code ấy
VD: Giả sử bạn có thư mục cài đặt Arduino IDE tên là ArduinoIDE, thư viện của bạn có tên là EEPROM (được lưu
ở \ArduinoIDE\libraries\EEPROM\)
Một đoạn code lưu ở file code.h nằm trong thư mục function của thư viện EEPROM thì được khai báo như sau:
#include <function/code.h> //đường dẫn đầy đủ: \ArduinoIDE\libraries\EEPROM\function\code.h
Trang 72.Khai báo hằng:
#define [tên hằng] [giá trị của hằng]
Ý nghĩa: cho phép bạn đặt tên cho một hằng số
nguyên hay hằng số thực Trước khi biên dịch,
trình biên dịch sẽ thay thế những tên hằng bạn
đang sử dụng bằng chính giá trị của chúng và
giá trị của nó không thay đổi trong quá trình
tính toán
VD: #define PI 3.14
Lúc này, tất cả các tên PI trong chương
trình xuất hiện sau này đều được thay bằng
3.14 Vì vậy, ta thường gọi PI là tên hằng, nó
biểu diễn số 3.14
3.Khái báo biến:
*Cú pháp:
<Kiểu dữ liệu> <Danh sách tên biến>;
Diễn giải:
- <Kiểu dữ liệu>: là kiểu dữ liệu muốn khai báo cho biến
CHÚ Ý:
+int khai báo cho biến số nguyên +float khai báo cho biến số thực
- <Danh sách tên biến>: gồm các tên biến có cùng kiểu dữ liệu, mỗi tên biến cách nhau dấu phẩy (,), cuối cùng là dấu chấm phẩy (;)
VD:
+int Tuoi; //khai báo biến Tuoi có kiểu int +float TrongLuong; //khai báo biến TrongLuong có kiểu float
Trang 8III.HÀM VÀ THỦ TỤC
1.Hàm toán học:
1.1.Hàm toán học min()
min(x, y);
x: số thứ nhất, mọi kiểu dữ liệu đều được chấp
nhận
y: số thứ hai, mọi kiểu dữ liệu đều được chấp nhận
*Ý nghĩa:Trả về số nhỏ nhất trong 2 số Hàm min
được dùng để lấy chặn trên (không để giá trị vượt
quá một mức quy định nào đó)
VD: min(a, 100);
1.2.Hàm toán học delay()
delay(ms)
ms: thời gian ở mức mili giây
*Ý nghĩa: delay có nhiệm vụ dừng chương trình
trong thời gian mili giây Và cữ mỗi 1000 mili giây
= 1 giây.
VD: Điều khiển đèn LED sáng nhấp nháy theo yêu cầu bằng arduino uno R3
void setup() {
pinMode(13, OUTPUT);
} void loop() {
digitalWrite(13, HIGH); // turn the LED on delay(1000); // led sáng trong vòng 1 giây digitalWrite(13, LOW); // turn the LED off
delay(1000); // led tắt trong vòng 1 giây
}
Trang 92 Hàm nhập xuất
2 1.Hàm nhập xuất analogWrite():
analogWrite([chân phát xung PWM], [giá trị xung
PWM])
Giá trị mức xung PWM: nằm trong khoảng từ 0 đến 255,
tương ứng với mức duty cycle từ 0% đến 100%
*Ý nghĩa: là lệnh xuất ra từ một chân trên mạch Arduino một
mức tín hiệu analog (phát xung PWM) Người ta thường điều
khiển mức sáng tối của đèn LED Bạn không cần gọi hàm
pinMode() để đặt chế độ OUTPUT cho chân sẽ dùng để phát
xung PWM trên mạch Arduino
*Ví Dụ:
int led = 10;
void setup() { }
void loop() { for (int i = 0; i <= 255; i++) {
analogWrite(led,i);
delay(20); } }
Đoạn code trên có chức năng làm sáng dần một đèn LED
được kết nối vào chân số 10 trên mạch Arduino
2.2 Hàm nhập xuất analogRead():
analogRead(chân đọc điện áp);
*Ý nghĩa: Là đọc giá trị điện áp từ một chân Analog Trên mạch Arduino UNO có 6 chân Analog In, được kí hiệu từ A0 đến A5 Trên các mạch khác cũng có những chân tương tự như vậy với tên chữ "A" đứng đầu, sau đó là số hiệu của chân analogRead() luôn trả về 1 số nguyên nằm trong khoảng từ 0 đến 1023 tương ứng với thang điện áp (mặc định) từ 0 đến 5V
* Ví dụ: int voltage = analogRead(A0);
Trang 102.3 Lệnh pinMode():
pinMode ( pin, mode)
+pin : Số của chân digital mà bạn
muốn thiết đặt
+mode : có thể là INPUT hoặc
OUTPUT
* Ý nghĩa: Cấu hình một pin (chân) quy
định hoạt động như là một đầu vào
(INPUT) hoặc đầu ra (OUTPUT)
*Ví dụ:
int ledPin = 13; //điều khiển đèn
LED chân số 13 của arduino
void setup()
{ pinMode(ledPin, OUTPUT); // thiết đặt chân ledPin là OUTPUT
} void loop()
{
digitalWrite(ledPin, HIGH); // bật đèn led
delay(5000); // dừng trong 5 giây
digitalWrite(ledPin, LOW); // tắt đèn led delay(5000); // dừng trong 5 giây }
Trang 112.4 Lệnh digitalWrite():
digitalWrite(pin,value)
+pin: Số của chân digital mà bạn muốn thiết
đặt
+value: HIGH hoặc LOW
*ý nghĩa: Xuất tín hiệu ra các chân digital, có
2 giá trị là HIGH hoặc là LOW Nếu một pin
được thiết đặt là OUTPUT bởi pinMode() Và
bạn dùng digitalWrite để xuất tín hiệu thì điện
thế tại chân này sẽ là 5V (hoặc là 3,3 V trên
mạch 3,3 V) nếu được xuất tín hiệu là HIGH,
và 0V nếu được xuất tín hiệu là LOW
*Ví dụ:
int ledPin = 13; // đèn LED được kết nối với chân digital 12 void setup()
{ pinMode(ledPin, OUTPUT); // thiết đặt chân ledPin là OUTPUT
} void loop() {
digitalWrite(ledPin, HIGH); // bật đèn led delay(1000); // dừng trong 1 giây
digitalWrite(ledPin, LOW); // tắt đèn led delay(1000); // dừng trong 1 giây }
Trang 122.5 Lệnh digitalRead():
digitalRead(pin)
+pin (chân) : giá trị của digital muốn đọc
+Trả về giá trị: HIGH hoặc LOW
*Ví dụ: Ví dụ này sẽ làm cho đèn led tại pin 13 nhận
giá trị như giá trị tại pin 2
int ledPin = 13; // chân led 13
int inPin = 2; // button tại chân 2
int val = 0; // biến "val" dùng để lưu tín hiệu từ
digitalRead
void setup() {
pinMode(ledPin, OUTPUT); // đặt pin digital
13 là output pinMode(inPin, INPUT); // đặt pin digital 2 là input
} void loop() {
val = digitalRead(inPin); // đọc tín hiệu từ digital2
digitalWrite(ledPin, val); // thay đổi giá trị của đèn LED là giá trị của digital 2
}