KIỂU DỮ LIỆU ARDUINO
Chúng đóng một vai trò quan trọng khi lập
trình Arduino. Arduino, một máy tính có tính bất khả tri về dữ liệu cao (nó
không biết hoặc quan tâm đến cách thức dữ liệu nhận được được gửi đến nó.)
Nếu không có kiểu dữ liệu, bạn không thể
xác định có bao nhiêu byte bộ nhớ được dành riêng cho biến đó và loại dữ liệu nào
có thể được lưu trữ trong biến, điều này làm cho kiểu dữ liệu của biến trở nên
quan trọng.
Kiểu dữ liệu có thể được định nghĩa là một
phân loại mô tả giá trị của một biến và các thao tác chúng ta có thể thực hiện
trên đó. Ngoài biến, hàm còn có kiểu dữ liệu tùy thuộc vào giá trị chúng trả về.
Trong hướng dẫn này, bạn sẽ tìm hiểu về
tất cả các loại dữ liệu khác nhau mà bạn sẽ sử dụng khi lập trình Arduino của mình.
Các kiểu dữ liệu là:
- void
- boolean
- char
- unsigned
char
- byte
- int
- unsigned
int
- word
- long
- unsigned
long
- short
- float
- double
Bảng tóm tắt
void chỉ
được sử dụng khi khai báo hàm. Nó được sử dụng để chỉ ra rằng hàm dự kiến sẽ
không trả về giá trị nào khi chúng được gọi. Điều quan trọng cần lưu ý là các hàm
Setup và Loop thuộc loại void và cũng không trả về bất kỳ thông tin nào.
void setup()
{
Serial.begin(9600);
}
boolean
boolean chứa một trong hai giá trị boolean, đúng hoặc sai
int LEDpin = 5; //
LED on pin 5
int switchPin = 13; //
momentary switch on 13, other side connected to ground
boolean running = false;
void setup()
{
pinMode(LEDpin, OUTPUT);
pinMode(switchPin,
INPUT);
digitalWrite(switchPin,
HIGH); // turn on pullup resistor
}
void loop()
{
if
(digitalRead(switchPin) == LOW)
{ // switch is pressed - pullup keeps pin high
normally
delay(100); // delay to debounce
switch
running =
!running; // toggle
running variable
digitalWrite(LEDpin,
running); // indicate via LED
}
}
char
char viết tắt của ký tự, là kiểu dữ liệu dùng để lưu trữ giá trị ký
tự (A,B,C). Khi khởi tạo nhiều ký tự, nó sẽ được viết bằng dấu ngoặc đơn (ví dụ:
'A') nhưng đối với chuỗi, chúng sử dụng dấu ngoặc kép (ví dụ:.”ABC”)
Các ký tự sẽ được lưu trữ dưới dạng số. Để biết mã hóa cụ thể, bạn
có thể tham khảo Biểu đồ ASCII như hình bên dưới.
Vì
các ký tự sẽ được lưu trữ dưới dạng số nên bạn có thể thực hiện các phép tính số
học trên chúng bằng giá trị ASCII của ký tự. Kiểu dữ liệu char mã hóa các số từ
-128 đến 127.
unsigned char
Kiểu dữ liệu unsigned char mã hóa các số từ 0 đến 255.
Kiểu dữ liệu Arduino này có bộ nhớ 8 bit/1 byte tương tự như kiểu
dữ liệu byte. Để rõ ràng và nhất quán trong phong cách lập trình Arduino, đối với
kiểu dữ liệu một byte không dấu, nên sử dụng kiểu dữ liệu byte.
unsigned char myChar = 240;
byte
Tương tự như kiểu dữ liệu unsigned char, một byte mã hóa một số
không dấu 8 bit từ 0-255
byte m = 25 ;//declaration of variable with type byte and
initialize it with 25
int
int viết tắt của số nguyên là một trong những kiểu dữ liệu được
sử dụng phổ biến nhất trong Arduino. Chúng là kiểu dữ liệu chính của bạn để lưu
trữ số.
Lưu ý rằng kích thước int thay đổi tùy theo bảng. Ví dụ: trong các
bo mạch Arduino dựa trên ATmega như Uno, Mega và Nano, int sử dụng 2 byte bộ nhớ
và có phạm vi từ -32.768 đến +32.767.
int countUp = 0;
word
Kiểu dữ liệu word rất giống với kiểu dữ liệu unsigned int trước
đó. Trên bo mạch Arduino dựa trên ATmega, một từ lưu trữ số không dấu 16 bit
với giá trị 2 byte và phạm vi từ 0 đến +65535. Đối với các bảng dựa trên Due và
SAMD, nó lưu trữ số không dấu 32 bit với giá trị 4 byte.
word w = 10000;
long
Biến long là biến kích thước mở rộng để lưu trữ số. Các biến long
sử dụng 4 byte từ bộ nhớ (32 bit) với phạm vi từ -2,147,483,648 đến
+2,147,483,647.
long speedOfLight = 186000L; //declaration of variable with type
Long and initialize it with 186000
unsigned long
Tương tự như kiểu dữ liệu long, unsigned long là biến
kích thước mở rộng để lưu trữ số và sử dụng 4 byte từ bộ nhớ (32 bit). Tuy
nhiên, không giống như long tiêu chuẩn, unsigned long không lưu trữ số âm.
Chúng có phạm vi từ 0 đến +4.294.967.295.
unsigned long time;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Time:
");
time = millis();
//prints time since
program started
Serial.println(time);
// wait a second so as
not to send massive amounts of data
delay(1000);
}
short
Kiểu dữ liệu short lưu trữ giá trị 16 bit và sử dụng 2
byte từ bộ nhớ trên TẤT CẢ Arduinos. Chúng có phạm vi từ -32.768 đến +32.767.
short ledPin = 13
float
float là một trong những kiểu dữ liệu Arduino quan trọng nhất vì
nó có thể lưu trữ số thập phân. Kiểu dữ liệu này dành cho số dấu phẩy động là
số có dấu thập phân.
Số dấu phẩy động thường được sử dụng để tính gần đúng các giá
trị tương tự và liên tục vì chúng có độ phân giải lớn hơn số nguyên.
Kiểu dữ liệu này có bộ nhớ 32 bit/ 4 byte và có phạm vi từ
-3,4028235E+38 đến +3,4028235E+38.
loat myfloat;
float sensorCalbrate = 1.117;
int x;
int y;
float z;
x = 1;
y = x / 2; // y
now contains 0, ints can't hold fractions
z = (float)x / 2.0; // z now contains .5 (you have to use 2.0,
not 2)
double
Kiểu dữ liệu này là số dấu phẩy động có độ chính xác kép. Trên
các bo mạch Arduino dựa trên ATmega như Uno, Mega và Nano, số dấu phẩy động có
độ chính xác gấp đôi chiếm 4 byte (32 bit). Nghĩa là, việc triển khai kép hoàn
toàn giống như float, không đạt được độ chính xác.
Trong khi đối với các bo mạch dựa trên Due và SAMD (ví dụ:
MKR1000, Zero), double có độ chính xác 8 byte (64-bit).
double num = 45.352 ;// declaration of variable with type double
and initialize it with 45.352