Trong bài viết này chúng ta cùng tìm hiểu cách đọc giá trị của biến trở (loại biến trở xoay) theo analog của Arduino. Chúng ta sẽ nối một mạch đơn giản, sử dụng breadboard và code Arduino để điều khiển một đèn LED.
Trong bài hướng dẫn này, chúng ta sẽ thấy được tín hiệu đèn thay đổi dần khi xoay biến trở với các đầu vào analog của Arduino (nằm ở hai phía đối diện của board từ các chân i/o digital – đầu vào/đầu ra). Các chân analog đặc biệt này được kết nối với Bộ chuyển đổi analog sang digital (hay còn gọi là ADC -Analog Digital Converter) của Arduino. ADC sẽ chuyển đổi tín hiệu analog đến (giữa 0V và 5V) thành một dải số từ 0-1023 (số 0 vẫn được tính là một giá trị nhé).
Hãy xem Mạch mẫu chiết áp với Arduino bằng cách nhấp vào “Start Simulation” và dùng chuột xoay chiết áp.
Để thực hành dựng mạch này, bạn cần có 1 board Arduino Uno, 1 cáp USB, 1 breadboard, 1 đèn LED, 1 điện trở (bất kỳ từ 100-1K Ohm), 1 biến trở và dây nối mạch.
Tham khảo thêm: Sản phẩm Biến trở RM065 – 0.5K
Bước 1: Xây dựng mạch
Hãy nhìn vào mạch breadboard trong hình trên. Lưu ý rằng các hàng của breadboard đều được kết nối ở bên trong, do đó bạn có thể cắm các linh kiện và dây để tạo ra kết nối nhanh chóng. Nếu muốn thực hành ảo, bạn có thể mở một cửa sổ Tinkercad Circuits mới và xây dựng bản mạch của mình theo như mạch mẫu.
Đầu tiên hãy xác định các linh kiện: biến trở, đèn LED, điện trở và dây nối với Arduino.
Kéo Arduino Uno và breadboard từ bảng components vào bảng làm việc.
Kết nối đường dây nguồn (+) và đường dây nối đất (-) của bảng mạch chính với Arduino 5V và chân đất (GND), bằng cách nhấp chuột để tạo dây.
Mở rộng đường ray nguồn và đường ray nối đất tương ứng (ở mép đối diện của bảng mạch), bằng cách tạo một dây màu đỏ giữa hai thanh nguồn và một dây màu đen giữa hai thanh đất.
Cắm đèn LED vào hai hàng breadboard khác nhau để cực âm (chân ngắn hơn) kết nối với một chân của điện trở (giá trị bất kỳ từ 100-1K Ohm). Điện trở có thể lắp theo một trong hai hướng vì nó không phân cực (khác với LED, phải được kết nối theo một chiều nhất định).
Nối chân còn lại của điện trở với đất.
Nối dây cực dương của LED (chân dài hơn) vào chân 13 của Arduino.
Kéo một biến trở từ bảng components vào bảng mạch và để các chân của nó cắm vào ba hàng khác nhau.
Nhấp chuột để tạo một dây, nối một chân biến trở bên ngoài với nguồn điện.
Kết nối chân trung tâm với chân analog A0 của Arduino.
Tạo một dây nối chân bên ngoài còn lại với đất.
Bước 2: Code với khối
Hãy sử dụng trình chỉnh sửa code để xem trạng thái của biến trở, sau thay đổi biến trở thì LED sẽ nhấp nhấp theo tốc độ khác nhau.
Nhấp vào nút “Code” để mở trình chỉnh sửa code. Các khối ký hiệu màu xám là các chú thích để ghi lại ghi chú.
Nhấp vào danh mục “variables” trong trình chỉnh sửa code.
Để lưu trữ giá trị điện trở của biến trở, hãy tạo một biến có tên sensorValue.
Kéo ra một khối “set“. Ở đầu chương trình, đặt biến sensorValue thành “read analog pin” A0.
Nhấp vào danh mục Output và kéo khối đầu tiên ra để đặt đèn LED thành HIGH.
Nhấp vào danh mục Control và kéo khối Wait, sau đó quay trở lại Variables và kéo sensorValue vào khối chờ, đồng thời điều chỉnh từ menu thành mili giây.
Bước 3: Giải thích code biến trở Arduino
Khi trình chỉnh sửa code mở, bạn có thể nhấp vào menu bên trái và chọn “Block + Text” để hiển thị code Arduino được tạo bởi các khối code này.
int sensorValue = 0;
Trước setup(), chúng ta tạo một biến để lưu trữ giá trị hiện tại được đọc từ biến trở. Nó được khai báo dạng int vì là một số nguyên.
void setup()
{
pinMode(A0, INPUT);
pinMode(13, OUTPUT);
}
Bên trong setup(), các chân được cấu hình bằng pinMode(). Chân A0 được cấu hình như một đầu vào, để chúng ta có thể xem trạng thái của biến trở. Chân 13 được cấu hình làm đầu ra để điều khiển đèn LED.
void loop()
{
// read the value from the sensor
sensorValue = analogRead(A0);
Mọi thứ ghi sau hai dấu gạch chéo // đều là phần nhận xét (dùng để ghi chú giúp chúng ta hiểu code hơn). Trong vòng lặp chính, hàm analogRead() giúp kiểm tra trạng thái của chân A0 (là một số nguyên từ 0-1023) và lưu trữ giá trị đó trong biến sensorValue.
// turn the LED on
digitalWrite(13, HIGH);
// pause the program for <sensorValue> millseconds
delay(sensorValue); // Wait for sensorValue millisecond(s)
// turn the LED off
digitalWrite(13, LOW);
// pause the program for <sensorValue> millseconds
delay(sensorValue); // Wait for sensorValue millisecond(s)
}
Hàm digitalWrite(); sẽ đặt đèn LED ở trạng thái bật (HIGH) và tắt (LOW). Hai trạng thái này được tách biệt bằng các khoảng thời gian tạm dừng, với hàm delay();. Thời gian chờ này không cố định, mà sẽ được đặt theo giá trị của sensorValue ở cùng thời điểm đó. Vì vậy, nếu sensorValue là 1023, chương trình sẽ tạm dừng trong 1023 mili giây khi delay(sensorValue);được thực thi. Khi ta xoay biến trở và giá trị thay đổi, thời gian của mỗi lần nhấp nháy của đèn LED do đó cũng sẽ thay đổi.
Bước 4: Khởi động mạch Analog input
Mạch này cũng có sẵn trong mục Starter của Tinkercad Circuits. Bạn có thể sử dụng nó để đọc biến trở hoặc bất kỳ loại biến trở/ đầu vào analog nào khác.
Ta có thể lấy mạch Starter này từ trong bảng components (menu -> Starters -> Arduino). Mạch này có cùng code với mạch mẫu bên trên, tuy nhiên sẽ thiếu breadboard và sử dụng đèn LED tích hợp của Uno (có dây nối vào chân 13).
Bước 5: Xây dựng mạch với board Arduino
Để thực hành thực tế, bạn sẽ cần cài đặt phần mềm Arduino và mở nó lên.
Nối dây mạch Arduino Uno bằng cách cắm các linh kiện và dây để khớp với các kết nối được hiển thị ở mạch mẫu trên Tinkercad Circuits.
Sao chép code từ cửa sổ mã và dán nó vào một bản thảo trống trong phần mềm Arduino (hoặc tải xuống và mở file bằng phần mềm). Bạn cũng có thể tìm thấy ví dụ này trong phần Tệp -> Ví dụ -> 03.Analog -> AnalogInput.
Cắm cáp USB, chọn bo mạch và cổng trong menu Tools.
Tải code lên và xoay núm biến trở để điều chỉnh tốc độ nhấp nháy của đèn LED nhé.
Nguồn: instructables.com
Lượt dịch: Fuvitech.vn