Cho những ai đam mê lập trình Arduino một nền tảng vi mạch thiết kế mở phần cứng (Opensource hardware) và phần mềm (Opensource software). Phần cứng Arduino là những bộ vi điều khiển bo mạch đơn (Singleboard microcontroller) được tạo ra tại thị trấn Ivrea ở Ý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn. Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý ..
Trang 1Tập lệnh cơ bản của Arduino
a) Các kiểu dữ liệu.
Loại dữ
liệu
Tên
Số ô nhớ Miền giá trị Chức năng
boolean boolean boolean ten_bien; 1
byte
Nhận 2 giá trị:
True hoặc false
Biểu diễn 2 trạng thái đối lập nhau
Ký tự Char char ten_bien =
ki_tu;
char ten_bien = 'A';
char ten_bien = 65;
1byte -128 127,
lưu được 1 kí tự
Biểu diễn một
kí tự thông qua bảng mã ASCII
Ký tự unsigned
char
unsigned char ten_bien = ki_tu;
Ví dụ:
unsigned char myChar
= 240;
1 byte
0 – 255, lưu được 1 kí tự
Biểu diễn một
kí tự thông qua bảng mã ASCII
byte byte byte ten_bien =
gia_tri;
vd:
byte a = 123;
1 byte
0 – 255 Biểu diễn số
nguyên
Kiểu
nguyên
Integer int ten_bien; hoặc
int ten_bien = gia_tri;
2byte -32768
32767
Biểu diễn các
số nguyên
ví dụ: int led;
int ledPin = 13;
Kiểu
thực
float float ten_bien;
float ten_bien = gia_tri;
4 byte
-3.4028235E+38 đến
3.4028235E+38
Biểu diễn các giá trị số thực
Mảng
dữ liệu
array Kieu_du_lieu
ten_bien[]=mang;
Ví dụ:
Biểu diễn mảng giá trị hoặc kí tự int myInts[6];
int myPins[] = {2, 4,
8, 3, 6};
char message[6] =
Trang 2b) Nhóm lệnh chuyển đổi kiểu dữ liệu
1 int() Chuyển kiểu dữ liệu của
một giá trị về kiểu int
int(x)
2 char() Chuyển kiểu dữ liệu của
một giá trị về kiểu char
char(x)
3 byte() Chuyển kiểu dữ liệu của
một giá trị về kiểu byte
byte(x)
4 word() Chuyển kiểu dữ liệu của
một giá trị về kiểu word hoặc ghép 2 giá trị thuộc kiểu byte thành 1 giá trị kiểu word
word(x) word(8bitDauTien,8bitSauCung)
5 long() Chuyển kiểu dữ liệu của
một giá trị về kiểu long
long(x)
6 float() Chuyển kiểu dữ liệu của
một giá trị về kiểu float
float(x)
c) Nhóm lệnh nhập xuất Digital (Digital I/O)
1 digitalRead() Đọc tín hiệu từ một chân digital (
được thiết đặt là INPUT) Trả về hai giá trị thấp hoặc cao
digitalRead(pin)
2 digitalWrite() Xuất tín hiệu ra một chân digital, có
hai giá trị là HIGH hoặc LOW
digitalWrite(pin,value)
3 pinMode() Cấu hình 1 pin quy định hoạt động
như là một đầu vào (INPUT) hoặc
pinMode(pin,mode)
Trang 3đầu ra (OUTPUT)
d) Nhóm lệnh nhập xuất Analog I/O (Analog I/O)
1 analogRead() Đọc giá trị điện áp
từ một chân Analog (ADC)
analogRead(pin)
2 analogWrite() Xuât một mức tín
hiệu ra một chân analog (phát xung PWM)
analogWrite(pin,value)
3 analogReference() Đặt lại mức (điện
áp) tối đa khi đọc tín hiệu analogRead
analogReference(type) type là một trong các kiểu giá trị sau: DEFAULT, INTERNAL, INTERNAL1V1,
EXTERNAL
e) Nhóm lệnh toán học (Math)
Trang 4STT Tên Chức năng Cú pháp
1 abs() Trả về giá trị tuyệt đối của một số abs(n)
2 constrain() Gán giá trị một số nằm trong
khoảng cho trước
constrain(x,a,b)
3 max() Trả về giá trị lớn nhất của hai số max(a,b)
4 min() Trả về giá trị nhỏ nhất của hai số min(a,b)
5 pow() Trả về giá trị x lũy thừa y pow(x,y)
6 sqrt() trả về giá trị là căn bậc hai của một
số
sqrt(x)
7 sin() Trả về giá trị là sin của góc x (đơn
vị là radian)
sin(x)
8 cos() Trả về giá trị là cos của góc x (đơn
vị là radian)
cos(x)
9 tan() Trả về giá trị là tan của góc x (đơn
vị là radian)
tan(x)
10 sizeof() trả về số byte bộ nhớ của một biến,
hoặc là trả về tổng số byte bộ nhớ của một mảng array
sizeof(x)
11 lowByte() trả về byte cuối cùng (8 bit cuối
cùng) của một chuỗi các bit
lowByte(x)
12 highByte() trả về một chuỗi 8 bit kề với 8 bit
cuối cùng của một chuỗi các bit
highByte(x)
13 bitRead() trả về giá trị tại một bit n nào đó
được xác định bởi người lập trình của một số nguyên (x) Bit n sẽ được tính từ phải qua trái, và số thứ tự đầu tiên là số 0
bitRead(x, n);
Ví dụ:
bitRead(B11110010,0); // trả về 0
14 bitWrite() sẽ ghi đè bit b (mang giá trị 0 hoặc
1) tại một vị trí xác định n của số
bitWrite(x, n, b);
Trang 5nguyên x
15 bitSet() sẽ thay giá trị tại một bit xác định n
của một số nguyên x thành 1
bitSet(x, n)
16 bitClear() thay giá trị tại một bit xác định n
của một số nguyên x thành 0
bitClear(x, n)
f) Toán tử logic
g) Toán tử so sánh
h) Lệnh thời gian (TIME)
khoảng thời gian x (tính bằng mili giây) được chỉ định là tham số
delay(x)
2 delayMicroseconds() Tạm dừng chương trình trong delayMicroseconds(x)
Trang 6khoảng thời gian x (tính bằng microgiây) được chỉ định là tham số
3 millis() trả về một số - là thời gian
(tính theo mili giây) kể từ lúc mạch Arduino bắt đầu chương trình Nó sẽ tràn số
và quay số 0 (sau đó tiếp tục tăng) sau 50 ngày
millis();
i) Lệnh ngẫu nhiên
1 random() Trả về một giá trị ngẫu
nhiên trong khoảng giá trị cho trước
random(max+1) random(min,max+1)
k) Nhóm lệnh nhập xuất nâng cao (Advanced I/O)
1 tone() Dùng để tạo ra sóng
vuông ở tần số được định trước (chỉ nửa chu kỳ ) tại một pin digital bất kỳ (analog vẫn được)
tone(pin, frequency) tone(pin, frequency, duration)
2 noTone() Dùng để kết thúc việc tạo
tone() trên một pin nào
đó đang chạy lệnh tone()
noTone(pin)
3 pulseIn() Đọc một xung tín hiệu
digital (HIGH/ LOW) và trả về nửa chu kỳ của xung tín hiệu ( tức là thời
pulseIn(pin, value) pulseIn(pin, value,timeout)
Trang 7gian tín hiệu Chuyển từ mức cao xuống mức thấp hoặc ngược lại
4 shiftOut() Dùng để chuyển 1 byte
(gồm 8 bit) ra ngoài từng bit một
shiftOut(dataPin, clockPin, bitOrder, value)
(gồm 8 bit) từng bit một
shiftIn(dataPin, clockPin, bitOrder)
6
l) Lệnh giao tiếp
1 Serial Được dùng trong việc
giao tiếp giữa các board mạch với nhau (hoặc board mạch với máy tính hoặc với các thiết bị khác)
Serial.begin(9600)
2
m) Nhóm lệnh giao tiếp với LCD
1 lcd.begin() Khai báo loại LCD bao
gồm số hàng và số cột
lcd.begin(a,b)
2 lcd.print() In ra màn hình chuỗi ký
tự
lcd.print(“ Xin chào Việt Nam”)
3 lcd.setCursor() Xác định vị trí đặt con
trỏ
lcd.setCursor(a,b)
n) Các câu lệnh điều kiện và vòng lặp
Trang 8+ For:
Cú pháp:
for (<kiểu dữ liệu nguyên> <tên biến chạy> = <vị trí xuất phát>; <tên biến chạy> <= <vị trí kết thúc>; <tên biến chạy> += <mỗi lần bước mấy bước>) {
<đoạn câu lệnh>;
}
Ví dụ:
for (int i = 1;i<=10;i=i+1)
{ x=i;}
+ If:
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]
}
Nếu biểu thức điều kiện trả về giá trị TRUE, [câu lệnh 1] sẽ được thực hiện, ngược lại, [câu lệnh 2] sẽ được thực hiện
Ví dụ:
int a = 0;
if (a == 0) {
a = 10;
} else {
a = 1;
}
// a = 10
+ While:
Cú pháp
while (<điều kiện>) {
//các đoạn lệnh;
}
Ví dụ:
int day = 1;
int nam = 2014; // Năm 2014
while (day < 365) { //Chừng nào day < 365 thì còn chạy (<=364) Khi day == 365 thì hết 1 năm
day += 1; //
Trang 9delay(60*60*24);// Một ngày có 24 giờ, mỗi giờ có 60 phút, mỗi phút có 60 giây
}
nam += 1; // bây giờ đã là một năm mới ! Chúc mừng năm mới :)
o) Các câu lệnh tăng giảm
+ Cộng trừ 1 đơn vi:
x++; // tăng x lên 1 giá trị và trả về giá trị cũ của x
++x; // tăng x lên 1 giá trị và trả về giá trị mới của x
x ; // trừ x lên 1 giá trị và trả về giá trị cũ của x
x ; // trừ x lên 1 giá trị và trả về giá trị mới của x
+ Cộng trừ một số y nhất định
x += y; // giống như phép toán x = x + y;
x -= y; // giống như phép toán x = x - y;
x *= y; // giống như phép toán x = x * y;
x /= y; // giống như phép toán x = x / y;
p) Lệnh go to
Đi tới một nhãn nào đó trong chương trình
Cú pháp: goto label;