Hiển thị các bài đăng có nhãn Bài 1: Kiểu dữ liệu Arduino. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Bài 1: Kiểu dữ liệu Arduino. Hiển thị tất cả bài đăng

Thứ Tư, 17 tháng 4, 2024

Bài 1: Kiểu dữ liệu Arduino

 

 

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