TỰ HỌC ARDUINO

Tự học arduino trong 15 ngày – NGÀY 6. BÀI 8: Analog Input

TỰ HỌC ARDUINO TRONG 15 NGÀY

NGÀY 6. BÀI 8: Analog Input

Bạn có thể tự học Arduino trong 15 ngày? Chỉ có tại abcArduino.

Chuỗi bài tự học Arduino bao gồm 17 bài khác nhau mà bạn có thể hoàn thành chỉ trong 15 ngày. Các bài học này bao gồm:

  1. Blink LED
  2. LED, điện trở & Digital Output
  3. RGB LED
  4. IC dịch bit và dịch LED
  5. Serial Monitor
  6. Digital Input
  7. LED RGB Nâng cao
  8. Analog Input
  9. Cảm biến ánh sáng
  10. Buzzer
  11. Hiển thị LCD
  12. Hiển thị LCD phần 2
  13. Điều khiển động cơ DC
  14. Điều khiển động cơ Servo
  15. Điều khiển động cơ DC nâng cao
  16. Điều khiển động cơ bước
  17. Cảm biến chuyển động

Bây giờ hãy đến với phần tự học Arduino bài 7. Analog Input

1. Nội dung

Trong phần này, bạn được học cách hiển thị giá trị analog trên bảng Serial Monitor và sử dụng dãy 8 LED (đã học từ bài 4), bạn có thể kiểm soát được số LED sáng đèn khi vặn núm điện trở.

2. Linh kiện cần dùng

Bạn cần thực hiện các bước sau để hoàn thiện dự án này.

08 Đèn LED đỏ

08 điện trở 270 Ω (Đỏ, tím, nâu)

01 IC ghi dịch 8 bit (74HC595)

01 Biến trở 10K

01 bread-board

01 Arduino Uno R3

Dây bus

3. Tiến hành

Trước khi thực hiện, các bạn sẽ thực hiện một bài tập nhỏ để hiểu chi tiết về cách sử dụng biến trở cũng như vận hành Serial Monitor.

Các bạn tiến hành nối biến trở vào breadboard như hình dưới:

Nạp đoạn code bên dưới vào Arduino

/*
Adafruit Arduino - Lesson 8. Analog Inputs
*/

int potPin = 0;

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  int reading  = analogRead(potPin);
  Serial.println(reading);
  delay(500);
}

Nhấn tổ hợp phím Ctrl + Shift+ M để mở Serial Monitor, bạn sẽ thấy một dãy số có thể thay đổi từ 0 đến 1023 xuất hiện trên bảng này khi vặn núm biến trở.

Bảng Serial Monitor này thể hiện các giá trị analog từ chân A0 theo lệnh bên dưới:

int reading = analogRead(potPin);

Trong bài tập này, biến trở có thể điều chỉnh giá trị voltage đi vào chân A0 và các dòng code trên có nhiệm vụ chuyển đổi tín hiệu điện thành tín hiệu số.

Biến trở hay còn gọi là ‘pot’ (potentiometer) hoạt động như một điện trở thông thường và trong trường hợp này, ta có giá trị của biến trở là 10kΩ. Tuy nhiên, sự khác nhau giữa biến trở và điện trở là biến trở có một thanh trượt, khi văn núm trên đầu biến trở, thanh trượt sẽ thay đổi giá trị cản trở dòng điện, giá trị này được thể hiện qua chân giữa của ‘pot’.


Vì vậy, ngoài chân kết nối với Analog pin, một chân của biến trở sẽ nối lên 5V, chân còn lại sẽ nối xuống GND và giá trị voltage sẽ được điều chỉnh từ 0 cho đến 5V.

4. Breadboard layout

Hãy làm điều gì đó thú vị hơn với biến trở của bạn chẳng hạn như kiểm soát số lượng đèn sáng.

Chúng ta sẽ dựa vào layout ở bài 4.

Arduino Code:

/*
Adafruit Arduino - Lesson 8. Analog Inputs - LEDs
*/

int potPin = 0;
int latchPin = 5;
int clockPin = 6;
int dataPin = 4;

int leds = 0;

void setup() 
{
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
}

void loop() 
{
  int reading  = analogRead(potPin);
  int numLEDSLit = reading / 114;  //1023 / 9
  leds = 0;
  for (int i = 0; i < numLEDSLit; i++)
  {
    bitSet(leds, i); 
  }
  updateShiftRegister();
}

void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

Bạn sẽ nhận ra rằng phần lớn đoạn code này xuất phát từ bài 4, bạn nên xem lại bài giảng cũ để hiểu rõ hơn về cách vận hành LED.

Trong bài này, bạn cần chú ý đến cách khai báo giá trị analog khi chúng ta kết nối vào thanh trượt của biến trở,

Int potPin = 0;

Lưu ý: Bạn không cần khai báo thêm gì tại dòng lệnh setup cho chân analog này.

Tại vòng lặp main, để đọc giá trị analog, chúng ta sẽ dùng lệnh:

Int reading = analogRead(pinPot);

Ta thấy, biến “reading” trong Arduino ( từ 0- 1023) và số lượng đèn LED thực tế (0 – 8 đèn). Trong khoảng từ 0 đến 8, có tổng cộng 9 giá trị, vì vậy, chúng ta cần điều chỉnh tỉ lệ của biến reading và số lượng thực tế bằng cách lấy 1023 chia 9 hoặc 114.

Int numLEDSLit = reading/114;

Để bật đúng số lượng đèn LED, chúng ta cần sử dụng vòng lặp ‘for’ để đếm từ 0 cho đến số lượng đèn LED cần sáng ‘numLEDSLit

  leds = 0;
  for (int i = 0; i < numLEDSLit; i++)
  {
    bitSet(leds, i); 
  }

Cuối cùng, chúng ta sẽ cập nhật giá trị của thanh ghi dịch bit với cú pháp:

updateShiftRegister();

5. Mở rộng

Thật đơn giản để bật sáng một đèn LED bằng cách điều chỉnh vị trí của núm vặn biến trở. Bạn hãy thử thay đổi đoạn code trên nhé.

Hãy để lại comment của bạn tại: https://www.facebook.com/abcArduino/

Xem thêm các bài tự học Arduino khác tại: https://www.abcarduino.com/category/tu-hoc-arduino/

Nguồn: Simon Monk