Arduino là một nền tảng mã nguồn mở dành cho việc xây dựng các dự án điện tử. Đối với người mới bắt đầu, việc hiểu và sử dụng các hàm cơ bản trong lập trình Arduino là vô cùng quan trọng. Bài viết này sẽ giúp bạn làm quen với các hàm cơ bản trong Arduino, từ đó tạo nền tảng vững chắc cho việc phát triển các dự án phức tạp hơn.
1. Tổng quan về Arduino
Arduino được biết đến như một công cụ mạnh mẽ dành cho những người yêu thích công nghệ và điện tử. Với khả năng lập trình đơn giản, linh hoạt và một cộng đồng rộng lớn, Arduino đã trở thành lựa chọn hàng đầu cho việc thử nghiệm các dự án từ đơn giản đến phức tạp.
Arduino hoạt động dựa trên một vi điều khiển (thường là ATmega328P đối với Arduino Uno) và có thể được lập trình bằng ngôn ngữ lập trình Arduino (một dạng đơn giản hóa của C/C++). Khi lập trình Arduino, bạn sẽ phải làm quen với môi trường phát triển tích hợp (IDE) và một số hàm cơ bản mà mọi chương trình Arduino đều phải sử dụng.
2. Hàm setup()
và loop()
Trong mọi chương trình Arduino, có hai hàm cơ bản mà bạn luôn phải sử dụng: setup()
và loop()
.
- Hàm
setup()
: Hàm này chỉ được chạy một lần khi chương trình bắt đầu. Bạn sử dụng hàm này để thiết lập các cài đặt ban đầu, chẳng hạn như thiết lập chế độ cho các chân đầu vào/đầu ra (input/output), khởi tạo giao tiếp serial, hoặc các thiết lập ban đầu khác mà chương trình của bạn yêu cầu.
void setup() {
pinMode(13, OUTPUT); // Thiết lập chân 13 là đầu ra
}
- Hàm
loop()
: Sau khi hàmsetup()
hoàn thành, hàmloop()
sẽ chạy liên tục cho đến khi Arduino bị tắt hoặc reset. Đây là nơi bạn sẽ viết mã để điều khiển các thiết bị, đọc dữ liệu từ cảm biến, hoặc thực hiện các tác vụ liên tục.
void loop() {
digitalWrite(13, HIGH); // Bật đèn LED
delay(1000); // Đợi 1 giây
digitalWrite(13, LOW); // Tắt đèn LED
delay(1000); // Đợi 1 giây
}
3. Hàm điều khiển đầu vào và đầu ra
Một trong những khía cạnh quan trọng của lập trình Arduino là khả năng điều khiển đầu vào và đầu ra. Các hàm dưới đây là các công cụ cơ bản để giao tiếp với phần cứng bên ngoài.
pinMode(pin, mode)
: Hàm này được sử dụng để thiết lập một chân cụ thể trên Arduino là đầu vào (INPUT
) hoặc đầu ra (OUTPUT
). Ví dụ, để thiết lập chân 7 là đầu vào:
pinMode(7, INPUT);
digitalWrite(pin, value)
: Hàm này được sử dụng để gửi tín hiệu điện áp cao (HIGH
) hoặc thấp (LOW
) đến một chân đã được thiết lập là đầu ra. Ví dụ, để bật đèn LED kết nối với chân 7:
digitalWrite(7, HIGH);
digitalRead(pin)
: Hàm này được sử dụng để đọc giá trị từ một chân đầu vào (có thể làHIGH
hoặcLOW
). Ví dụ, để đọc giá trị từ một nút nhấn kết nối với chân 7:
int buttonState = digitalRead(7);
analogRead(pin)
: Arduino cũng có các chân đầu vào analog cho phép bạn đọc các tín hiệu tương tự. Hàm này trả về giá trị từ 0 đến 1023, tương ứng với tín hiệu đầu vào từ 0V đến 5V.
int sensorValue = analogRead(A0);
analogWrite(pin, value)
: Đây là hàm để tạo ra tín hiệu PWM (Pulse Width Modulation) trên một số chân cụ thể của Arduino. Bạn có thể điều chỉnh độ sáng của đèn LED, tốc độ của động cơ, hoặc các thiết bị tương tự bằng cách sử dụng hàm này. Giá trị củavalue
có thể từ 0 (0% duty cycle) đến 255 (100% duty cycle).
analogWrite(9, 128); // Đặt tín hiệu PWM tại chân 9 với giá trị trung bình
4. Các hàm xử lý thời gian
Arduino cung cấp một số hàm xử lý thời gian cơ bản để bạn có thể tạo ra các khoảng thời gian chờ, đếm thời gian, hoặc thực hiện các tác vụ theo chu kỳ.
delay(ms)
: Hàm này sẽ dừng chương trình trong một khoảng thời gian nhất định (tính bằng mili giây). Ví dụ, để dừng chương trình trong 1 giây:
delay(1000);
millis()
: Hàm này trả về số mili giây kể từ khi Arduino bắt đầu chạy chương trình. Hàm này rất hữu ích khi bạn cần thực hiện một hành động sau một khoảng thời gian nhất định mà không làm dừng chương trình.
unsigned long currentTime = millis();
5. Hàm Serial
Giao tiếp serial là một phần quan trọng của nhiều dự án Arduino, cho phép Arduino gửi và nhận dữ liệu từ máy tính hoặc các thiết bị khác.
Serial.begin(baudrate)
: Khởi tạo giao tiếp serial với tốc độ baudrate (tốc độ truyền dữ liệu). Giá trị phổ biến là 9600 baud.
Serial.begin(9600);
Serial.print(data)
vàSerial.println(data)
: Gửi dữ liệu qua giao tiếp serial.Serial.print()
sẽ giữ con trỏ trên cùng một dòng, trong khiSerial.println()
sẽ xuống dòng sau khi in dữ liệu.
Serial.print("Temperature: ");
Serial.println(temperatureValue);
Serial.read()
: Đọc dữ liệu nhận được từ giao tiếp serial.
if (Serial.available() > 0) {
char receivedChar = Serial.read();
}
6. Ví dụ thực hành
Bây giờ, chúng ta sẽ thực hành với một ví dụ đơn giản để kết hợp các hàm cơ bản đã học. Ví dụ này sẽ làm cho đèn LED nhấp nháy và hiển thị thông báo qua Serial mỗi khi trạng thái của đèn LED thay đổi.
void setup() {
pinMode(13, OUTPUT); // Thiết lập chân 13 là đầu ra
Serial.begin(9600); // Khởi tạo giao tiếp serial
}
void loop() {
digitalWrite(13, HIGH); // Bật đèn LED
Serial.println("LED is ON");
delay(1000); // Đợi 1 giây
digitalWrite(13, LOW); // Tắt đèn LED
Serial.println("LED is OFF");
delay(1000); // Đợi 1 giây
}
Trong ví dụ này, đèn LED được bật và tắt luân phiên với khoảng thời gian 1 giây, và mỗi lần thay đổi trạng thái, một thông điệp sẽ được gửi qua Serial để hiển thị trên màn hình máy tính.
Kết luận: Nắm vững các hàm cơ bản trong lập trình Arduino là bước đầu tiên để tiến xa hơn trong việc phát triển các dự án điện tử. Từ các thao tác đơn giản như điều khiển đèn LED đến các ứng dụng phức tạp hơn như giao tiếp với các cảm biến và thiết bị ngoại vi, việc hiểu rõ cách sử dụng các hàm này sẽ giúp bạn tự tin hơn trong việc xây dựng các dự án Arduino của mình.
Nếu bạn có bất kỳ câu hỏi hoặc thắc mắc nào về bài viết này, hãy để lại bình luận hoặc liên hệ qua blog để được hỗ trợ thêm.
Tham khảo: https://www.arduino.cc/reference/en/