Chiết áp so với Bộ mã hóa quay và Cách sử dụng chúng với Arduino
Trong số các thành phần điều khiển người dùng điện tử, núm xoay nổi bật là một trong những thành phần hài lòng nhất khi sử dụng. Chúng có thể bổ sung cho màn hình cảm ứng và các thiết bị đầu vào khác, cũng như hoạt động tốt với các nút và công tắc. Nhưng làm thế nào bạn có thể thêm một núm vào các dự án Arduino DIY của riêng mình?
Bạn có hai tùy chọn chính: chiết áp hoặc bộ mã hóa vòng quay. Các thành phần này có thể trông giống nhau, nhưng phương pháp sử dụng chúng với một thiết bị như bo mạch vi điều khiển Arduino rất khác nhau. Hãy xem cách họ so sánh với nhau.
Mục Lục
Chiết áp so với Bộ mã hóa quay
Hầu hết các chiết áp và bộ mã hóa vòng quay mà những người đam mê DIY sẽ gặp đều có kiểu dáng tương tự. Chúng có đế hình khối hoặc hình trụ có gắn các chân nối và một trục tròn xoắn và có các đường cắt để đặt nắp.
Một số chiết áp trông khác, chẳng hạn như chiết áp có dạng slide dài, giống như chiết áp được tìm thấy trên sàn trộn nhạc. Tuy nhiên, khi nói đến loại quay, thoạt nhìn chúng trông gần giống với bộ mã hóa quay, vì vậy bạn có thể nghĩ rằng chúng giống nhau.
Chiết áp là gì?
Một chiết áp về bản chất là một biến trở. Khi xoay trục, điện trở bên trong chiết áp thay đổi, cho phép người dùng thay đổi các thuộc tính của mạch mà không cần phải xây dựng lại. Chiết áp có thể là cả analog và kỹ thuật số, nhưng chiết áp kỹ thuật số bắt chước các chiết áp tương tự và điều này làm cho chúng rất giống nhau khi sử dụng.
Chiết áp luôn có điểm bắt đầu và điểm kết thúc xác định mà trục không thể quay được nữa. Một số chiết áp có cảm giác gập ghềnh khi xoay, nhưng nhiều chiết áp cũng trơn tru, giống như những chiết áp được tìm thấy trên dàn âm thanh nổi cũ.
Mặc dù là tương tự, chiết áp hoạt động tốt với vi điều khiển. Bạn có thể dễ dàng thiết lập chiết áp với Raspberry Pi Pico hoặc Arduino.
Bộ mã hóa quay là gì?
Bộ mã hóa vòng quay xác định vị trí trục của chúng bằng cảm biến để cung cấp tín hiệu tương tự hoặc kỹ thuật số cho thiết bị mà chúng được kết nối. Điều này cho thiết bị biết vị trí của bộ mã hóa. Bên cạnh trục quay, bộ mã hóa quay thường cũng có một nút tích hợp được kích hoạt bằng cách đẩy trục xuống dưới.
Không giống như chiết áp, bộ mã hóa quay có thể quay mà không dừng và chúng hầu như luôn có các va chạm xúc giác cho từng vị trí của trục. Nhiều ô tô hiện đại sử dụng bộ mã hóa vòng quay để điều khiển hệ thống giải trí của chúng.
Cách sử dụng chiết áp với Arduino
Nhờ thiết kế đơn giản của chúng, việc sử dụng chiết áp với Arduino rất đơn giản. Chiết áp của bạn có ba đầu nối: nối đất, đầu ra và vref. Các chân nối đất và vref tương ứng kết nối với các đầu nối GND và 5V trên Arduino của bạn, trong khi chân đầu ra của chiết áp kết nối với một trong các đầu vào tương tự trên bo mạch của bạn.
Mã chiết áp Arduino
Mã chiết áp Arduino của bạn bắt đầu với mã cơ bản cài đặt() Và vòng() mẫu mà bạn sẽ thấy khi tạo một tệp mới trong Arduino IDE. Đầu tiên, thêm một const int biến ở đầu mã để đăng ký kết nối chân tương tự của nồi—trong trường hợp này là A0.
const int potentiometer = A0;
Sau đó, các cài đặt() chức năng rất đơn giản: bạn chỉ cần khai báo chân chiết áp của mình làm đầu vào. Bạn cũng có thể bắt đầu kết nối nối tiếp nếu muốn gửi dữ liệu đến PC để chẩn đoán.
void setup() {
pinMode(potentiometer, INPUT);
Serial.begin(9600);
}
Tiếp theo, đã đến lúc thiết lập vòng() chức năng. Bắt đầu bằng cách tạo một int biến bằng cách sử dụng analogRead() Chức năng lưu trữ vị trí chiết áp của bạn. Sau đó, bạn có thể sử dụng bản đồ() để giảm kích thước của giá trị mà bạn đang xử lý—trong ví dụ này để phù hợp với các thông số kỹ thuật của PWM, chẳng hạn như để kiểm soát độ sáng của đèn LED. Thêm một độ trễ ngắn để đảm bảo sự ổn định.
void loop() {
int potentiometerValue = analogRead(potentiometer);
map(potentiometerValue, 0, 1023, 0, 255);
Serial.println(potentiometerValue);
delay(10);
}
Bây giờ bạn đã có vị trí của chiết áp, bạn có thể sử dụng nó với các phần khác của mã. Ví dụ, một nếu như câu lệnh sẽ hoạt động tốt để kích hoạt mã khi chiết áp ở một vị trí cụ thể.
const int potentiometer = A0;void setup() {
pinMode(potentiometer, INPUT);
Serial.begin(9600);
}
void loop() {
int potentiometerValue = analogRead(potentiometer);
map(potentiometerValue, 0, 1023, 0, 255);
Serial.println(potentiometerValue);
delay(10);
}
Cách sử dụng bộ mã hóa quay với Arduino
Bộ mã hóa vòng quay yêu cầu mã phức tạp hơn chiết áp, nhưng chúng vẫn khá dễ sử dụng. Bộ mã hóa vòng quay của bạn có năm chân: nối đất, VCC, chân nút (SW), đầu ra A (CLK) và đầu ra B (DT). Các chân nối đất và VCC lần lượt kết nối với các đầu nối nối đất và 5V trên Arduino của bạn, trong khi các chân SW, CLK và BT kết nối với các đầu nối kỹ thuật số riêng lẻ trên Arduino.
Mã hóa vòng quay Arduino
Để làm cho mã của chúng tôi đơn giản và dễ làm việc hơn, chúng tôi sẽ sử dụng thư viện Arduino SimpleRotary được tạo bởi MPrograms trên GitHub. Đảm bảo rằng bạn đã cài đặt thư viện này trước khi bắt đầu làm việc với mã của mình.
Giống như mã chiết áp của bạn, bạn có thể bắt đầu tập lệnh mã hóa vòng quay của mình với Arduino cơ bản cài đặt() Và vòng() mẫu chức năng Bắt đầu bằng cách khai báo thư viện SimpleRotary và gán các chân bộ mã hóa của bạn theo thứ tự này; CLK, DT và SW.
SimpleRotary rotary(1,2,3);
Bạn không cần phải thêm bất cứ điều gì vào của bạn cài đặt() trừ khi bạn muốn sử dụng màn hình nối tiếp để chẩn đoán bộ mã hóa vòng quay của mình.
void setup() {
Serial.begin(9600);
}
Các vòng() chức năng là một câu chuyện khác nhau. Việc xác định vòng quay của trục bộ mã hóa bắt đầu bằng một quay.rotate() lời gọi hàm được gán cho một int Biến đổi. Nếu kết quả là 1, bộ mã hóa đang quay theo chiều kim đồng hồ. Nếu kết quả là 2, bộ mã hóa đang quay ngược chiều kim đồng hồ. Kết quả sẽ luôn là 0 nếu bộ mã hóa không quay kể từ lần kiểm tra cuối cùng.
Bạn có thể dùng nếu như câu lệnh để kích hoạt mã khác tùy thuộc vào hướng quay của bộ mã hóa.
void loop(){
int encoderRotation;
encoderRotation = rotary.rotate(); if (encoderRotation == 1) {
Serial.println("clockwise");
}
if (encoderRotation == 2) {
Serial.println("counter-clockwise");
}
}
Bạn cũng cần thêm một số mã cho nút của bộ mã hóa vào vòng() chức năng. Quá trình này rất giống nhau, ngoại trừ bạn sẽ sử dụng quay.push() chức năng, hơn là quay.rotate().
void loop(){
int encoderButton;
encoderButton = rotary.push(); if (encoderButton == 1) {
Serial.println("button pressed");
}
}
Kịch bản này khá đơn giản và bạn có thể làm được nhiều việc để biến nó thành của riêng mình. Bạn nên kiểm tra tài liệu dự án SimpleRotary để đảm bảo rằng bạn đang sử dụng tất cả các tính năng chính của nó. Sau khi kết hợp với nhau, mã bộ mã hóa của bạn sẽ trông như thế này.
SimpleRotary rotary(1,2,3);void setup() {
Serial.begin(9600);
}
void loop(){
int encoderRotation;
encoderRotation = rotary.rotate();
if (encoderRotation == 1) {
Serial.println("clockwise");
}
if (encoderRotation == 2) {
Serial.println("counter-clockwise");
}
int encoderButton;
encoderButton = rotary.push();
if (encoderButton == 1) {
Serial.println("button pressed");
}
}
Cách chọn giữa chiết áp và bộ mã hóa quay cho dự án
Như bạn có thể thấy, bộ mã hóa vòng quay và chiết áp hoạt động hoàn toàn khác nhau. Cả hai thành phần này cung cấp cho bạn những cách mới để kiểm soát các dự án điện tử của bạn, nhưng bạn nên chọn cái nào?
Chiết áp có giá cả phải chăng và dễ sử dụng, nhưng chỉ cho phép một phạm vi đầu vào hạn chế. Điều này làm cho chúng trở nên tuyệt vời khi bạn muốn kiểm soát độ sáng của đèn LED hoặc tăng và giảm công suất cho các thành phần cụ thể và các tác vụ tương tự khác.
Bộ mã hóa quay cung cấp nhiều phạm vi hơn chiết áp. Việc bao gồm một nút ấn có nghĩa là chúng rất phù hợp với các hệ thống điều khiển menu, như đã thấy ở nhiều ô tô hiện đại. Loại thành phần này đã trở nên rất phổ biến trong không gian chế tạo bàn phím cơ. Bạn thậm chí có thể tạo một macropad nhỏ có tích hợp bộ mã hóa.
Nhìn giống nhau, các thành phần khác nhau
Với tất cả những thông tin này, bạn nên sẵn sàng bắt đầu dự án điện tử với chiết áp hoặc bộ mã hóa vòng quay. Các thành phần này có thể cung cấp cho bạn vô số quyền kiểm soát đối với các mạch mà bạn xây dựng, nhưng bạn cần đảm bảo rằng bạn chọn đúng tùy chọn cho dự án của mình.