Ở 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ụngvoid 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 : buttonPinconst int ledPin = 13; // chân số 13 : ledPin// khai báo các biếnint buttonState = 0; // biến đọc trạng thái của nút nhấnvoid 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ố 13void 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ố 13int inPin = 7; // nối nút nhấn với chân số 7int val = 0; // biến để ‘lưu tạm ’ giá trị đọc đượcvoid 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); //}