Loading...
Vietnam Geography App
Loading...
Vietnam Geography App
Học cách Arduino đo lường các giá trị liên tục từ thế giới thực, sử dụng biến trở để điều khiển độ sáng LED một cách linh hoạt.
Arduino Uno sử dụng một bộ chuyển đổi Analog-to-Digital (ADC) 10-bit. Điều này có nghĩa là nó có thể biểu diễn một điện áp analog (từ 0V đến 5V) thành 2^10 = 1024 mức kỹ thuật số khác nhau, được đánh số từ 0 (tương ứng 0V) đến 1023 (tương ứng 5V).
Không. Bạn chỉ có thể sử dụng hàm `analogRead()` trên các chân được đánh dấu là "Analog In" (A0, A1, A2, v.v.). Các chân này được kết nối đặc biệt với bộ ADC của vi điều khiển.
Tín hiệu analog là một tín hiệu liên tục có thể nhận bất kỳ giá trị nào trong một phạm vi nhất định. Ví dụ, nhiệt độ, độ sáng, hoặc âm thanh là các tín hiệu analog. Nó khác với tín hiệu digital chỉ có hai trạng thái HIGH và LOW.
Biến trở là một loại điện trở có thể thay đổi giá trị. Nó thường có 3 chân và một núm xoay hoặc thanh trượt. Bằng cách thay đổi vị trí của núm xoay, bạn thay đổi điện trở và do đó thay đổi điện áp ở chân giữa, tạo ra một tín hiệu analog.
Hai chân bên ngoài của biến trở được nối với 5V và GND, tạo thành một bộ chia điện áp. Chân giữa hoạt động như một "cần gạt" di chuyển giữa 0V và 5V. Vị trí của cần gạt này quyết định điện áp đầu ra, và đó chính là tín hiệu analog mà chúng ta muốn đo.
Không trực tiếp. Các chân analog của Arduino Uno chỉ có thể đo điện áp từ 0-5V. Việc đưa vào một điện áp cao hơn có thể làm hỏng bo mạch. Để đo điện áp cao hơn, bạn cần sử dụng một mạch chia điện áp bên ngoài để giảm điện áp xuống phạm vi an toàn.
Rất nhiều! Ví dụ: quang trở (LDR) để đo cường độ ánh sáng, cảm biến nhiệt độ (TMP36), cảm biến độ ẩm đất, cảm biến uốn (flex sensor), và micro để đo cường độ âm thanh.
Độ phân giải là sự thay đổi nhỏ nhất mà cảm biến có thể phát hiện. Đối với Arduino, độ phân giải của bộ ADC là 5V / 1024 ≈ 4.9mV. Điều này có nghĩa là nó chỉ có thể phát hiện những thay đổi điện áp lớn hơn 4.9mV.
Giá trị đọc từ cảm biến analog có thể bị nhiễu. Một kỹ thuật đơn giản để làm mịn dữ liệu là lấy trung bình của nhiều lần đọc liên tiếp. Ví dụ, đọc giá trị 10 lần, cộng chúng lại rồi chia cho 10 để có được một giá trị ổn định hơn.
`digitalRead()` chỉ đọc các giá trị HIGH hoặc LOW trên các chân digital. `analogRead()` đọc một dải giá trị điện áp (từ 0V đến 5V) trên các chân analog và trả về một số nguyên từ 0 đến 1023.
Bộ chuyển đổi ADC 10-bit của Arduino Uno có thể biểu diễn bao nhiêu giá trị khác nhau?
Hàm `map(value, fromLow, fromHigh, toLow, toHigh)` dùng để làm gì?
Xây dựng một mạch nơi độ sáng của đèn LED được điều khiển trực tiếp bằng cách xoay núm vặn của biến trở.
Xoay núm vặn của biến trở làm thay đổi độ sáng của đèn LED một cách tương ứng và mượt mà.
Giáo viên Vật lý và STEM tại Trường THPT Chuyên Khoa học Tự nhiên
“Việc dạy học sinh cách đọc tín hiệu analog bằng Arduino giúp các em hình dung được cách khoa học máy tính và vật lý kết hợp với nhau. Các em không chỉ học công thức, mà còn thấy được dữ liệu từ thế giới thực được số hóa và xử lý như thế nào.”