Arduino - Đồ thị thanh LED
Ví dụ này cho bạn thấy cách đọc đầu vào tương tự tại chân 0 tương tự, chuyển đổi các giá trị từ analogRead () thành điện áp và in nó ra màn hình nối tiếp của Phần mềm Arduino (IDE).
Thành phần bắt buộc
Bạn sẽ cần các thành phần sau:
- 1 × Breadboard
- 1 × Arduino Uno R3
- Biến trở 1 × 5k ohm (chiết áp)
- 2 × Jumper
- 8 × LED hoặc bạn có thể sử dụng (hiển thị biểu đồ thanh LED như trong hình ảnh bên dưới)
Thủ tục
Làm theo sơ đồ mạch và nối các thành phần trên breadboard như trong hình bên dưới.
Phác thảo
Mở phần mềm Arduino IDE trên máy tính của bạn. Mã hóa bằng ngôn ngữ Arduino sẽ điều khiển mạch của bạn. Mở một tệp phác thảo mới bằng cách nhấp vào Mới.
Đồ thị thanh LED 10 đoạn
Đèn LED biểu đồ thanh 10 đoạn này có rất nhiều công dụng. Với kích thước nhỏ gọn, móc treo đơn giản, chúng dễ dàng cho các sản phẩm nguyên mẫu hoặc thành phẩm. Về cơ bản, chúng là 10 đèn LED xanh lam riêng lẻ được đặt cùng nhau, mỗi đèn có kết nối cực dương và cực âm riêng.
Chúng cũng có các màu vàng, đỏ và xanh lục.
Note- Giá trị ghim trên các biểu đồ thanh này có thể khác với những gì được liệt kê trên biểu dữ liệu. Xoay thiết bị 180 độ sẽ sửa thay đổi, làm cho chân 11 trở thành chân đầu tiên thẳng hàng.
Mã Arduino
/*
LED bar graph
Turns on a series of LEDs based on the value of an analog sensor.
This is a simple way to make a bar graph display.
Though this graph uses 8LEDs, you can use any number by
changing the LED count and the pins in the array.
This method can be used to control any series of digital
outputs that depends on an analog input.
*/
// these constants won't change:
const int analogPin = A0; // the pin that the potentiometer is attached to
const int ledCount = 8; // the number of LEDs in the bar graph
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // an array of pin numbers to which LEDs are attached
void setup() {
// loop over the pin array and set them all to output:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
// read the potentiometer:
int sensorReading = analogRead(analogPin);
// map the result to a range from 0 to the number of LEDs:
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
// loop over the LED array:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// if the array element's index is less than ledLevel,
// turn the pin for this element on:
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}else { // turn off all pins higher than the ledLevel:
digitalWrite(ledPins[thisLed], LOW);
}
}
}
Mã cần lưu ý
Bản phác thảo hoạt động như thế này: đầu tiên, bạn đọc đầu vào. Bạn ánh xạ giá trị đầu vào cho phạm vi đầu ra, trong trường hợp này là mười đèn LED. Sau đó, bạn thiết lập mộtfor-loopđể lặp lại các kết quả đầu ra. Nếu số của đầu ra trong chuỗi thấp hơn phạm vi đầu vào được ánh xạ, bạn bật nó lên. Nếu không, bạn tắt nó đi.
Kết quả
Bạn sẽ thấy đèn LED BẬT từng cái một khi giá trị của số đọc tương tự tăng lên và TẮT từng cái một trong khi số đọc đang giảm.