Code Arduino C++ điều khiển các thiết bị thông qua Adafrruid Board Control

Để điều khiển các thiết bị thông qua Adafruit Board Control bằng mã Arduino C++, trước hết bạn cần phải có một board Adafruit và các thiết bị bạn muốn điều khiển (ví dụ: đèn LED, servo, cảm biến, …). Sau đó, bạn cần cài đặt thư viện Adafruit trên Arduino IDE để có thể sử dụng các chức năng của board.

Điều khiển đèn LED bằng Arduino C++

Dưới đây là một số ví dụ điều khiển các thiết bị bằng Adafruit Board Control bằng mã Arduino C++:

1. Điều khiển một đèn LED

#include <Adafruit_Seesaw.h>

// Khai báo các biến
Adafruit_Seesaw ss;

void setup() {

// Khởi tạo kết nối với board Adafruit
ss.begin();

// Thiết lập chế độ OUTPUT cho chân điều khiển đèn LED
ss.pinMode(13, OUTPUT);
}

void loop() {

// Bật đèn LED
ss.digitalWrite(13, HIGH);

// Chờ 1 giây
delay(1000);

// Tắt đèn LED
ss.digitalWrite(13, LOW);

// Chờ 1 giây
delay(1000);
}

Trong ví dụ này, chúng ta sử dụng thư viện Adafruit Seesaw để điều khiển đèn LED thông qua chân 13 của board. Hàm setup() được sử dụng để khởi tạo kết nối với board và thiết lập chế độ OUTPUT cho chân điều khiển đèn LED. Hàm loop() được sử dụng để lặp lại quá trình bật/tắt đèn LED theo một chu kỳ 1 giây.

Với ví dụ trên, bạn có thể thay đổi giá trị chân điều khiển hoặc thời gian chờ tùy theo yêu cầu của mình. Ngoài ra, bạn cũng có thể thêm các chức năng khác để điều khiển các thiết bị khác như servo, cảm biến, … tương tự như ví dụ trên.

2. Điều khiển servo motor:

#include <Adafruit_Seesaw.h>
#include <Servo.h>

// Khai báo các biến
Adafruit_Seesaw ss;
Servo myservo;

void setup() {

// Khởi tạo kết nối với board Adafruit
ss.begin();

// Thiết lập chế độ OUTPUT cho chân điều khiển servo motor
ss.pinMode(13, OUTPUT);

// Khởi tạo kết nối với servo motor
myservo.attach(13);
}

void loop() {

// Di chuyển servo motor về góc 0 độ
myservo.write(0);

// Chờ 1 giây
delay(1000);

// Di chuyển servo motor về góc 90 độ
myservo.write(90);

// Chờ 1 giây
delay(1000);

// Di chuyển servo motor về góc 180 độ
myservo.write(180);

// Chờ 1 giây
delay(1000);
}

Trong ví dụ này, chúng ta sử dụng thư viện Servo để điều khiển servo motor thông qua chân 13 của board. Hàm setup() được sử dụng để khởi tạo kết nối với board, thiết lập chế độ OUTPUT cho chân điều khiển servo motor và khởi tạo kết nối với servo motor. Hàm loop() được sử dụng để lặp lại quá trình di chuyển servo motor qua các góc khác nhau.

3. Đọc dữ liệu từ cảm biến

#include <Adafruit_Seesaw.h>

// Khai báo các biến
Adafruit_Seesaw ss;
int sensorPin = 2;
int sensorValue = 0;

void setup() {

// Khởi tạo kết nối với board Adafruit
ss.begin();

// Thiết lập chế độ INPUT cho chân đọc dữ liệu từ cảm biến
ss.pinMode(sensorPin, INPUT);

// Kết nối với Serial Monitor để hiển thị giá trị đọc được từ cảm biến
Serial.begin(9600);
}

void loop() {

// Đọc giá trị từ cảm biến
sensorValue = ss.analogRead(sensorPin);

// Hiển thị giá trị đọc được từ cảm biến trên Serial Monitor
Serial.println(sensorValue);

// Chờ 1 giây
delay(1000);
}

Trong ví dụ này, chúng ta sử dụng hàm analogRead() để đọc giá trị từ cảm biến thông qua chân 2 của board. Hàm setup() được sử dụng để khởi tạo kết nối với board, thiết lập chế độ INPUT cho chân đọc dữ liệu từ cảm biến và kết nối với Serial Monitor để hiển thị giá trị đọc được. Hàm loop() được sử dụng để lặp lại quá trình đọc giá trị từ cảm biến và hiển thị lên Serial Monitor sau đó chờ 1 giây trước khi lặp lại.

4. Điều khiển đèn LED RGB

#include <Adafruit_Seesaw.h>
#include <Adafruit_NeoPixel.h>

// Khai báo các biến
Adafruit_Seesaw ss;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, 14, NEO_GRB + NEO_KHZ800);
int redValue = 255;
int greenValue = 0;
int blueValue = 0;

void setup() {

// Khởi tạo kết nối với board Adafruit
ss.begin();

// Thiết lập chế độ OUTPUT cho các chân điều khiển đèn LED RGB
ss.pinMode(16, OUTPUT);
ss.pinMode(17, OUTPUT);
ss.pinMode(18, OUTPUT);

// Thiết lập số lượng LED trong dải đèn LED RGB
strip.begin();

// Khởi tạo giá trị ban đầu cho đèn LED RGB
strip.setPixelColor(0, redValue, greenValue, blueValue);
strip.show();
}

void loop() {

// Tăng giá trị màu đỏ, giảm giá trị màu xanh
redValue--;
blueValue++;

// Cập nhật giá trị đèn LED RGB
strip.setPixelColor(0, redValue, greenValue, blueValue);
strip.show();

// Chờ 50ms
delay(50);

Trong ví dụ này, chúng ta sử dụng thư viện Adafruit_NeoPixel để điều khiển dải đèn LED RGB qua các chân 16, 17 và 18 của board. Hàm setup() được sử dụng để khởi tạo kết nối với board, thiết lập chế độ OUTPUT cho các chân điều khiển đèn LED RGB, thiết lập số lượng LED trong dải đèn LED RGB và khởi tạo giá trị ban đầu cho đèn LED RGB. Hàm loop() được sử dụng để lặp lại quá trình tăng giá trị màu đỏ và giảm giá trị màu xanh của đèn LED RGB, cập nhật giá trị đèn LED RGB và chờ 50ms trước khi lặp lại.

5. Điều khiển servo motor

#include <Adafruit_Seesaw.h>
#include <Servo.h>

// Khai báo các biến
Adafruit_Seesaw ss;
Servo myservo;
int pos = 0;

void setup() {

// Khởi tạo kết nối với board Adafruit
ss.begin();

// Thiết lập chế độ OUTPUT cho chân điều khiển servo motor
ss.pinMode(16, OUTPUT);

// Khởi tạo kết nối với servo motor
myservo.attach(16);
}

void loop() {

// Điều khiển servo motor xoay đến góc pos
myservo.write(pos);

// Tăng giá trị góc pos lên 1 độ
pos++;

// Nếu góc pos vượt quá giới hạn 180 độ thì đặt lại về 0 độ
if (pos > 180) {
pos = 0;
}

// Chờ 15ms trước khi lặp lại
delay(15);
}

Trong ví dụ này, chúng ta sử dụng thư viện Servo để điều khiển servo motor qua chân 16 của board. Hàm setup() được sử dụng để khởi tạo kết nối với board, thiết lập chế độ OUTPUT cho chân điều khiển servo motor và khởi tạo kết nối với servo motor. Hàm loop() được sử dụng để lặp lại quá trình điều khiển servo motor xoay đến góc pos, tăng giá trị góc pos lên 1 độ, đặt lại góc pos về 0 nếu vượt quá giới hạn 180 độ và chờ 15ms trước khi lặp lại.

6. Điều khiển buzzer

#include <Adafruit_Seesaw.h>
#include <Tone.h>

// Khai báo các biến
Adafruit_Seesaw ss;
Tone buzzer;

void setup() {

// Khởi tạo kết nối với board Adafruit
ss.begin();

// Thiết lập chế độ OUTPUT cho chân điều khiển buzzer
ss.pinMode(16, OUTPUT);

// Khởi tạo kết nối với buzzer
buzzer.begin(16);
}

void loop() {

// Phát ra tín hiệu âm thanh với tần số 1000Hz trong 100ms
buzzer.play(1000, 100);

// Chờ 500ms trước khi lặp lại
delay(500);
}

Trong ví dụ này, chúng ta sử dụng thư viện Tone để điều khiển buzzer qua chân 16 của board. Hàm setup() được sử dụng để khởi tạo kết nối với board, thiết lập chế độ OUTPUT cho chân điều khiển buzzer và khởi tạo kết nối với buzzer. Hàm loop() được sử dụng để lặp lại quá trình phát ra tín hiệu âm thanh với tần số 1000Hz trong 100ms và chờ 500ms trước khi lặp lại.

7. Đọc giá trị từ cảm biến nhiệt độ và độ ẩm

#include <Adafruit_Seesaw.h>
#include <Adafruit_SHT31.h>

// Khai báo các biến
Adafruit_Seesaw ss;
Adafruit_SHT31 sht31 = Adafruit_SHT31();

void setup() {

// Khởi tạo kết nối với board Adafruit
ss.begin();

// Khởi tạo kết nối với cảm biến SHT31
sht31.begin(0x44);
}

void loop() {

// Đọc giá trị nhiệt độ và độ ẩm từ cảm biến
float temp = sht31.readTemperature();
float hum = sht31.readHumidity();

// In ra giá trị đọc được từ cảm biến
Serial.print("Temperature: ");
Serial.print(temp);
Serial.print(" *C\tHumidity: ");
Serial.print(hum);
Serial.println(" %");

// Chờ 2s trước khi lặp lại
delay(2000);
}

Trong ví dụ này, chúng ta sử dụng thư viện Adafruit_SHT31 để đọc giá trị từ cảm biến nhiệt độ và độ ẩm qua địa chỉ 0x44. Hàm setup() được sử dụng để khởi tạo kết nối với board và khởi tạo kết nối với cảm biến SHT31. Hàm loop() được sử dụng để đọc giá trị nhiệt độ và độ ẩm từ cảm biến, in ra giá trị đọc được từ cảm biến và chờ 2s trước khi lặp lại.

Lưu ý: Để sử dụng các ví dụ trên, bạn cần cài đặt các thư viện tương ứng trước đó. Bạn có thể tìm và tải các thư viện này trên trang chủ của Arduino IDE hoặc sử dụng tính năng quản lý thư viện trong Arduino IDE để tìm và cài đặt các thư viện này.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *