ARDUINO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Viết chương trình Arduino đầu tiên

Trong bài viết này mình sẽ hướng dẫn các bạn viết một chương trình đầu tiên với Arduino, qua đó sẽ giúp bạn biết được cấu trúc ứng dụng Arduino.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Đây là một bài viết rất quan trọng, bởi chỉ cần các bạn hiểu được kiến thức cơ bản thì việc giải quyết các vấn đề khó trở nên dễ dàng hơn. Cụ thể chúng ta sẽ tìm hiểu về cấu trúc của chương trình, sau đó viết một chương trình đầu tiên với Arduino.

Cấu trúc của chương trình

Một chương trình với Arduino sẽ có hai phần chính đó là Setup và Loop. Tuy nhiên mình sẽ đưa ra tất cả các phần chi tiết trong một chương trình để có bạn có thể nắm rõ.

Cụ thể sẽ có 6 phần như sau:

Bài viết này được đăng tại [free tuts .net]

  • Block comment.
  • Libraries inclusion.
  • Constant definition.
  • Global variables declaration.
  • Setup.
  • Loop.

Block comment

Thường được dùng để ghi một số thông tin về tác giả, hướng dẫn nối dây, giải thích các dòng lệnh, ... . Arduino sẽ bỏ qua phần này khi chạy chương trình, đây giống như là lời chú thích giúp chúng ta dễ hiểu hơn.

arduino 01 png

Libraries inclusion

Được sử dụng để các thư viện vào chương trình. Khi các bạn sử dụng một thiết bị nào đó có thư viện hỗ trợ, thì cần khai báo thư viện đó vào đây để sử dụng.

Ví dụ mình khai báo hai thư viện như sau.

#include <Servo.h>
#include <LiquidCrystal.h>

Constant definition

Được sử dụng để định nghĩa một hằng số, ví dụ dưới đây mình định nghĩa cho biến MAX_COUNT với giá trị là 200.

#define MAX_COUNT 200

Global variables declaration

Trong phần này sẽ khai báo các biến toàn cục, các biến này có thể được sử dụng trong toàn chương trình.

Servo servo;
LiquidCrystal lcd(3, 4, 5, 6, 7, 8);
int loop_count = 0;

Setup

Trong phần setup này, chúng ta cần khai báo các chân tín hiệu sử dụng và chức năng của nó. Trong phần này chương trình chỉ chạy một lần duy nhất.

void setup() {
  Serial.begin(9600);
  lcd.begin(16,2);
  servo.attach(9);

  serial.println("đây là phần setup");
}

Loop

Trong phần loop sẽ soạn thảo các dòng lệnh để xử lý, các dòng lệnh này được lặp đi lặp cho đến khi chương trình kết thúc.

void loop() {
  loop_count++;

  Serial.print("đây là phần loop, lần: ");
  Serial.println(loop_count);

  lcd.print("Hello !!!");
  servo.write(loop_count);

  if(loop_count >= MAX_COUNT)
    loop_count = 0;
  delay(1000);
}

Viết chương trình đầu tiên với Arduino

Dưới đây là một chương trình mình đã viết sãn trước đó, các bạn có thể xem và tham khảo nhé. Bây giờ mình sẽ giải thích từng phần và chức năng của nó trong chương trình.

//-----------Block comment--------------//
/*
  Blink
  Turns an LED on for one second, then off for one second, repeatedly.
  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
*/

//-----------Libraries inclusion--------------//
#include <Servo.h> // khái báo thư viện Servo
#include <LiquidCrystal.h> // khai báo thư viện LiquidCrystal

//-----------Constant definition--------------//
#define MAX_COUNT 200 // định nghĩa biến MAX_COUNT với giá trị 200

//-----------Global variables declaration--------------//
Servo servo; //khai báo biến servo
LiquidCrystal lcd(3, 4, 5, 6, 7, 8); //khai báo biến lcd sử dụng các chân tín hiệu 3, 4, 5, 6, 7 , 8.
int loop_count = 0;// khai báo biến loop_count = 0

//-----------Setup--------------//
void setup() {
  Serial.begin(9600); // khai báo sử dụng cổng Serial 9600
  lcd.begin(16,2); // khai báo sử dụng 16x2 ô trong màn hình
  servo.attach(9);

  serial.println("đây là phần setup");// hiển thị thông báo ra cổng serial
}

//-----------Loop--------------//
void loop() {
  loop_count++;
  //thông báo ra công serial
  Serial.print("đây là phần loop, lần: ");
  Serial.println(loop_count);
  //hiển thị dòng chữ Hello !!! ra màn hình lcd
  lcd.print("Hello !!!");
  servo.write(loop_count);

  if(loop_count >= MAX_COUNT)
    loop_count = 0;
  delay(1000); mỗi lần hiển thị được trì hoãn 1s tương đương với 1000ms
}

Như các bạn đã thấy thì chương trình trên có đầy đủ 6 phần như mình đã nói chi tiết ở phần một.

Đoạn chương trình trên xử lý cho việc hiển thị dòng chữ "Hello!!!" lên màn hình LCD 16x2. Cùng với đó là hiển thị ra cổng giao tiếp Serial với thông báo tương tứng.

Kết quả 1: Trên màn hình LCD 16x2 sẽ hiển thị dòng chữ "Hello !!!"

Kết quả 2: Trên cổng giao tiếp Serial sẽ hiển thị như sau:

đây là phần setup
đây là phần loop, lần: 1
đây là phần loop, lần: 2
đây là phần loop, lần: 3
.
.
.
đây là phần loop, lần: 200

Kết luận

Như vậy là chúng ta đã tìm hiểu xong về cấu trúc chương trình trong Arduino. Cùng với đó là thực hiện viết một chương trình đơn giản để hiển thị thông báo ra cổng giao tiếp Serial. Ở bài tiếp theo mình sẽ hướng dẫn các bạn cách sử dụng các hàm cơ bản trong Arduino.

Cùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top