Học Arduino Bài 2 : Những điều cơ bản về Arduino

Ở bài đầu tiên, chúng ta đã được giới thiệu tổng quan về Arduino : Arduino Board và các dòng Arduino thông dụng, shield và module hỗ trợ; hướng dẫn cài đặt và sử dụng phần mềm Arduino IDE. Tiếp theo, list bài về Arduino, chúng ta sẽ đi tìm hiểu về :

♦ Dòng Arduino phổ biến ở Việt Nam: Arduino Uno.

♦ Cấu trúc một chương trình cho Arduino trên IDE, các nhóm lệnh  và phép toán cơ bản.

·       ⇒ Qua list bài này, chúng ta sẽ đạt được :

♦Nắm được cấu trúc của một Arduino Board cụ thể.

♦Nhận biết, cách sử dụng các chân analog, digital, Vcc, Gnd.

♦Mô tả cấu trúc một chương trình cho Arduino

♦Sử dụng, biết tra cứu các nhóm lệnh, phép toán trên trang chủ www.arduino.cc

A. Arduino Board


Có khá nhiều model Arduino Board cho chúng ta, tuy nhiên model Arduino Uno (Uno ) được khuyên dùng hơn cả. Uno là lựa chọn tốt nhất cho những ai mới bắt đầu với Arduino, cả về độ tin cậy và giá thành.

Hình ảnh Arduino Uno R3

Địa chỉ mua Board : http://mlab.vn/mach-arduino/main-board

1.Tổng quan

Arduino Uno là một bo mạch vi điều khiển dựa trên chip Atmega328P. Uno có 14 chân I/O digital ( trong đó có 6 chân xuất xung PWM), 6 chân Input analog, 1 thạch anh 16MHz, 1 cổng USB, 1 jack nguồn DC, 1 nút reset.

Uno hỗ trợ đầy đủ những thứ cần thiết để chúng ta có thể bắt đầu làm việc.

Sơ đồ chi tiết của Uno R3:

Hình 1.1 Sơ đồ cấu trúc Arduino Uno R3

Cầm board mạch trên tay, thông qua sơ đồ cấu trúc, chúng ta sẽ biết vùng cấp nguồn, các chân digital, chân analog, đèn báo hiệu, reset … trên đó. 

2.Thông số kỹ thuật – Uno R3

Vi điều khiển

Atmega328P

Điện áp hoạt động

5V

Điện áp cấp (hoạt động tốt) 

7 – 12 V

Điện áp cấp (giới hạn)

6 – 12 V

Chân I/O digital

14 ( có 6 chân xuất xung PWM)

Chân Input analog

6 (A0 – A5)

Dòng điện mỗi chân I/O

20 mA

Dòng điện chân 3.3V

50 mA

Bộ nhớ Flash

32 kB (Atmega328P) – trong đó 0.5 kB dùng cho bootloader.

SRAM

2 kB (Atmega328P)

EEPROM

1 kB (Atmega328P)

Tốc độ xung nhịp

16 MHz

Kích thước

68.6 x 53.4 mm

Trọng lượng

25 g

► Khi làm quen, tìm hiểu về một model Arduino, chúng ta cần chú ý tới thông số kỹ thuật đầu tiên. Điều này giúp chúng ta có được một thói quen tốt để làm việc. Các thông số chính như : Vi điều khiển , điện áp cấp/điện áp hoạt động, chân digital / analog, tốc độ xung nhịp, bộ nhớ , …

3.I/O Pins

Sơ đồ chân của vi điều khiển ATmega328P:

Hình 2.1 : Sơ đồ chân của Atmega328

♦ Digital: Các chân I/O digital (chân số 2 – 13 ) được sử dụng làm chân nhập, xuất tín hiệu số thông qua các hàm chính : pinMode(), digitalWrite(), digitalRead(). Điện áp hoạt động là 5V, dòng điện qua các chân này ở chế độ bình thường là 20mA, cấp dòng quá 40mA sẽ phá hỏng vi điều khiển.

♦ Analog :Uno có 6 chân Input analog (A0 – A5), độ phân giải mỗi chân là 10 bit (0 – 1023 ). Các chân này dùng để đọc tín hiệu điện áp 0 – 5V (mặc định) tương ứng với 1024 giá trị, sử dụng hàm analogRead(). 

♦ PWM : các chân được đánh số 3, 5, 6, 9, 10, 11; có chức năng cấp xung PWM (8 bit) thông qua hàm analogWrite().

♦ UART: Atmega328P cho phép truyền dữ liệu thông qua hai chân 0 (RX) và chân 1 (TX).

4.Nguồn

Có hai cách cấp nguồn chính cho bo mạch Uno: cổng USB và jack DC.

Giới hạn điện áp cấp cho Uno là 6 – 20V. Tuy nhiên, dải điện áp khuyên dùng là 7 – 12 V (tốt nhất là 9V). Lý do là nếu nguồn cấp dưới 7V thì điện áp ở ‘chân 5V’  có thể thấp hơn 5V và mạch có thể hoạt động không ổn định; nếu nguồn cấp lớn hơn 12V có thể gấy nóng bo mạch hoặc phá hỏng.

Các chân nguồn trên Uno:

-  Vin : chúng ta có thể cấp nguồn cho Uno thông qua chân này. Cách cấp nguồn này ít được sử dụng.

-  5V : Chân này có thể cho nguồn 5V từ bo mạch Uno. Việc cấp nguồn vào chân này hay chân 3.3 V đều có thể phá hỏng bo mạch.

-  3.3V : Chân này cho nguồn 3.3 V và dòng điện maximum là 50mA.

-  GND: chân đất.

B.  Arduino IDE


Đảm bảo chắc chắn là bạn đã cài đặt xong Arduino IDE ( link hướng dẫn download, cài đặt và sử dụng IDE: https://www.arduino.cc/en/Guide/Windows )

Giao diện Arduino IDE sau khi cài đặt:

 

1.Cấu trúc một chương trình trong Arduino IDE

Sau phần này chúng ta sẽ xây dựng và hiểu được các khối cơ bản của  một chương trình trong IDE.

Một chương trình hiển thị trên cửa sổ giao diện được gọi là sketch.Sketch được tạo từ hai hàm cơ bản là setup () và loop () :

-  Setup() : Hàm này được gọi khi một sketch khởi động, được sử dụng để khởi tạo biến, đặt các chế độ chân ( nhận hay xuất
 tín hiệu ), khởi động một thư viện … Hàm setup() chỉ chạy một lần, sau khi cấp nguồn hoặc reset mạch.
-  Loop(): Sau khi khởi tạo hàm setup(), hàm loop() sẽ được khởi tạo và thiết lập các giá trị ban đầu. Như tên gọi,
hàm loop tạo các vòng lặp liên tục, có cho phép sự thay đổi và đáp ứng. Chức năng tương tự như vòng lặp while() trong C, 
hàm loop() sẽ điều khiển toàn bộ mạch.

Ví dụ : Cấu trúc cơ bản một chương trình:

// Ví dụ nhấp nháy led 1s
// các hàm sử dụng : setup(); loop(); pinMode(); digitalWrite(); delay();
// hàm setup() : quy định chức năng các chân sử dụng
void setup() {
  // đặt chân số 13 là chân xuất tín hiệu.
  pinMode(13, OUTPUT);
}
// hàm loop : các câu lệnh trong hàm sẽ được chạy liên tục theo chu kỳ.
void loop() {
digitalWrite(13, HIGH);          // bật LED bằng cách đưa tín hiệu điện áp  
                                 //  chân 13 lên mức cao (HIGH)
  delay(1000);                   //  tạo trễ 1000 ms = 1s
  digitalWrite(13, LOW);         // tắt LED bằng cách đưa tín hiệu điện áp chân  
                                 // 13 xuống mức thấp (LOW).
  delay(1000);                   // trễ 1s
}
// kết thúc chương trình.

Sơ đồ mạch ví dụ 1

Một ví dụ khác :

// bật tắt led bằng nút bấm
// thêm phần khai báo biến
// gán tên cho các chân sử dụng :
const int buttonPin = 2;     // chân số 2 : buttonPin
const int ledPin =  13;      // chân số 13 : ledPin
// khai báo các biến
int buttonState = 0;         // biến đọc trạng thái của nút nhấn
void setup() {
  // khởi tạo chân ledPin là OUTPUT
  pinMode(ledPin, OUTPUT);     
  // khởi tạo chân button là INPUT
  pinMode(buttonPin, INPUT);    
}
void loop()
  // đọc trạng thái nút nhấn và gán giá trị cho biến buttonState
  buttonState = digitalRead(buttonPin);
  // dùng hàm if kiểm tra trạng thái nút nhấn
  //  nếu nhấn nút : buttonState = HIGH
  if (buttonState == HIGH) {    
    // bật LED  
    digitalWrite(ledPin, HIGH); 
  }
  else {
    // tắt LED
    digitalWrite(ledPin, LOW);
  }
}

 

Sơ đồ mạch ví dụ 2

2.Các nhóm cấu trúc lệnh cơ bản

Tham khảo các hàm dùng trong Arduino IDE trên trang chủ https://www.arduino.cc/en/Reference/HomePage

Các chương trình Arduino có thể được chia thành : nhóm cấu trúc, nhóm biến và hằng , nhóm hàm.

Trên trang Arduino.cc có đầy đủ và chi tiết các hàm, lệnh, phép toán cùng cách thức sử dụng cũng như các ví dụ đi kèm. Chúng ta sẽ tìm hiểu các hàm cơ bản trước : setup() ; loop () ; pinMode() ; digitalRead(); digitalWrite(); analogWrite() ; …

            Một vài ví dụ: 

Mỗi hàm, lệnh hay thuật ngữ trong phần này đều được giải thích rất ngắn gọn, rõ ràng, dễ dàng áp dụng.

-         Hàm pinMode(pin, mode):thiết lập một chân cụ thể là chân nhận hay xuất tín hiệu.

Trong đó: pin là chân sẽ được thiết lập; mode là một trong các chế độ INPUT. OUTPUT hoặc INPUT_PULLUP (Arduino 1.0.1)

Giá trị trả về : Không có

Ví dụ :

int ledPin = 13 ;                           // Led được nối với chân số 13
void setup () {
     pinMode ( ledPin, OUTPUT);             // thiết lập cho chân ledPin là chân
                                           //xuất tín hiệu
}
void loop () {}

-         Hàm digitalRead(pin): đọc giá trị từ một chân digital.

Trong đó: pin là chân digital mà chúng ta muốn đọc

Giá trị trả về : HIGH hoặc LOW

Ví dụ :

int ledPin = 13;                // nối Led với chân số 13
int inPin = 7;                  // nối nút nhấn với chân số 7
int val = 0;                    //  biến để ‘lưu tạm ’ giá trị đọc được
void setup(){
  pinMode(ledPin, OUTPUT);      //  thiết lập chân số 13 là chân xuất
`                               //  tín hiệu.
  pinMode(inPin, INPUT);        //  thiết lập chân số 7 là chân nhận tín     
                                // hiệu
}
void loop(){
  val = digitalRead(inPin);     //  đọc giá trị từ chân inPin và gán cho                                                         
                                // biến val
  digitalWrite(ledPin, val);    //
}

 

Học Arduino Bài 4: Nạp file hex xuống KIT Arduino (Không dùng phần mềm Arduino IDE)
 

Viết đánh giá

Họ và tên:


Đánh giá của bạn: Lưu ý: Không hỗ trợ HTML!

Bình chọn: Dở            Hay

Nhập mã bảo vệ: