Bài viết này nhắm tới những người “đang dự định” và “mới bắt đầu”, muốn tìm hiểu và tự học lập trình Arduino.
Các bạn có thể là học sinh, sinh viên trẻ tuổi muốn học hỏi cái mới hay những người không chuyên về điện tử đang muốn tìm hiểu thêm về lĩnh vực này.
>> Xem thêm: [PDF] Lập trình Arduino là gì? Tài liệu học Arduino miễn phí 2021
Mục lục
Ứng dụng của Arduino
Khi mới tìm hiều về một cái gì đó, nhiều người thường không biết nên bắt đầu từ đâu. Và đối với tự học lập trình Arduino cũng vậy.
Sau một thời gian tự học lập trình Arduino đủ dài, mình quyết định viết bài này để chia sẻ với bạn những gì mình đã trải qua.
Khởi đầu của mình chỉ là một người bắt đầu với con số 0: 0 kiến thức, 0 kinh nghiệm, 0 dụng cụ, 0 người hướng dẫn. Mình chỉ có một chút tò mò và tinh thần ham học hỏi. Và mình lúc đó cũng như bạn bây giờ thôi.
Tuy nhiên, ít nhất thì bạn cũng đã có người hướng dẫn, đó là OhStem. Hãy thực hành ngay với bộ Kit học Arduino để thử thách khả năng sáng tạo của mình.
Sẽ rất khó để bạn tiến lên từ điểm xuất phát không biết bất cứ điều gì lên tới mức hiểu rõ được nó..
Vạn sự khởi đầu nan…
Tuy nhiên, sẽ đơn giản hơn cho bạn nếu bước tiếp từ đây. Nói đơn giản hơn, khoảng cách từ mức “0” lên mức “1” luôn luôn lớn hơn khoảng cách từ mức “1” lên mức “2” rất nhiều.
Lúc trước, mình đa số là học và nghiên cứu về phần mềm, bởi nó rất dễ làm lại có kết quả nhanh chóng.
Tuy nhiên, mình có cảm giác như phần mềm là một thứ gì đó quá trừu tượng. Con người không thể chạm vào nó, dẫn đến khó có thể hiểu được mức độ quan trọng của nó.
Trái lại, từ lúc tiếp xúc và tự học lập trình Arduino, mình nhận thấy rằng mình có thể sáng tạo ra nhiều ứng dụng có ý nghĩa và hay ho hơn những chương trình phần mềm mình đã làm trước kia.
Hãy cùng xem chiếc xe mà mình thiết kế và lập trình dưới đây xem:
Mình có thể điều khiển nó bất cứ lúc nào mình muốn, mình có thể biểu diễn nó với mọi người, mình có thể cho người khác mượn, trình bày, hướng dẫn về nguyên lý hoạt động của nó như mình đang làm.
Những người xung quanh mình rất thích nó, họ luôn giành nhau cái điều khiển. Họ thán phục mình, không phải vì sự ngưỡng mộ mà là vì họ thích những ứng dụng mà mô hình này có được. Cái xe thậm chí còn thu hút sự quan tâm nhiều hơn cả người thiết kế ra nó.
… Và đấy chính là lập trình bằng mạch arduino. Mình học và mình thực hành, mình sáng tạo. Điều đó tạo nên sự đam mê rất đặc biệt mà những thứ khác khó có thể mang lại được.
Những thứ cần thiết để tự học lập trình Arduino
Ở đây bạn cần 2 thứ đó là tư duy lập trình khoa học và kiến thức về chip điều khiển trên Arduino.
Khi trong đầu bạn có 2 kiến thức này để áp dụng vào lập trình, sử dụng hết sức mạnh của nó thì bạn mới xem như là thành công.
Trên thực tế, ta cần kiến thức lập trình nhiều hơn. Nhưng nó cũng không quá khó là bao so với mấy cái bài tập tin học lúc mình học lớp 11 trong chương trình phổ thông đâu.
Điều đầu tiên, bạn cần:
- Nền tảng Arduino Driver để thiết bị của bạn giao tiếp được với mạch lập trình Arduino.
- Chương trình Arduino IDE để thiết lập và tải chương trình lên Arduino.
Bạn có thể tự học lập trình Arduino bằng desktop hoặc là laptop.
Ngoài ra, điện thoại thông minh hoặc smartphone có hỗ trợ OTG cũng có thể được sử dụng để lập trình cho Arduino. Nhưng, bạn sẽ cần một phần mềm ứng dụng IDE đặc biệt để làm điều này.
Cơ bản về IDE và chương trình trên Arduino
Trước tiên, về giao diện thì bạn sẽ thấy thanh công cụ gồm 5 bộ phận chính không thể đơn giản hơn. Các chức năng lần lượt của nó là:
– Thông dịch chương trình
– Nạp chương trình vào mạch Arduino: Wow đây chính là thứ mà bạn đang cần đúng không. Các bạn chú ý một phần mềm ứng dụng sau khi đã nạp vào Arduino thì nó sẽ nằm ở đó mãi mãi cho tới khi bạn nạp vào một chương trình mới.
– Tạo một chương trình mới, ở đây gọi là sketch
– Mở sketch
– Lưu Sketch
Để tìm hiểu kỹ hơn về phần mềm và giao diện của Arduino IDE, bạn có thể tham khảo bài viết sau: Giới thiệu phần mềm lập trình Arduino IDE, download free
Tiếp theo chúng ta sẽ cài đặt thêm một vài thứ để khẳng định rằng mọi thứ đã sẵn sàng để bạn tự học lập trình Arduino. Bạn có thể bắt đầu viết những dòng mã lập trình đầu tiên và nạp nó vào board mạch Arduino của bạn.
Để xem xét lại liệu rằng bạn đã cài Driver arduino thành công chưa, bạn hãy vào menu: Tools -> Port: … Sau đó, chọn lập trình bằng mạch arduino Uno.
Trên máy của mình thì nó đang ở tại cổng COM4, thiết bị của bạn có thể không giống của mình. Tuy nhiên, bạn phải đảm bảo rằng có Arduino Uno ở đó.
Vì IDE này hỗ trợ nhiều nhiều dòng mạch khác nhau của arduino nên khi nào bạn nạp code cho những mạch đó thì hãy chọn nó nhé.
Còn bây giờ, chúng ta đang làm việc và lập trình bằng Uno.
Và cuối cùng, chúng ta không thể bỏ qua đó là vào Tools -> Programmer -> chọn AVR ISP.
Vậy là hoàn tất. Sau đây mình sẽ giới thiệu về những yếu tố bắt buộc phải có.
Các bạn phải nhìn thấy ở code mẫu khi mới khởi động Bo mạch Arduino lên.
Nếu như ở một chương trình C++, mọi thứ đều bắt đầu từ hàm main() thì đối với chương trình trên nền tảng Arduino, chúng ta sẽ có 2 hàm đó là setup() và loop().
- setup() là hàm sẽ chỉ chạy một lần khi bạn bật Aduino lên.
- loop() là hàm sẽ chạy vô tận cho đến khi nào mạch arduino của bạn hết pin hoặc bị hỏng thì thôi. Đây chính là khu vực chúng ta sẽ viết những dòng lệnh xử lý, điều khiển công cụ.
Cấu trúc chương trình nền tảng Arduino
Cấu trúc ban đầu của chương trình trong lập trình Arduino IDE khá đơn giản, chỉ bao gồm hai hàm là setup() và loop().
Khi chương trình của chúng ta bắt đầu chạy, những lệnh trong setup() sẽ được chạy trước tiên. Do đó, ta thường dùng hàm này để khởi tạo trạng thái và giá trị của các biến. Mọi người cũng hay dùng hàm này để khởi tạo các thông số trong phần mềm ứng dụng.
Sau khi setup() xong, các lệnh trong loop() sẽ được chạy. Đây là một vòng lặp vô tận, do đó các dòng code trong hàm này sẽ được lặp lại mãi cho đến khi nào bạn ngắt nguồn của board Arduino mới thôi. Hoặc bạn có thể tắt nó bằng nút Reset trên bảng mạch. Lúc này, chương trình của bạn sẽ trở về lại trạng thái như khi mới bật, tức là bắt đầu chạy lại từ hàm setup().
Bạn có thể xem quá trình này bằng hình dưới:
Cấu trúc của một chương trình trong Arduino IDE
Trong phần này, mình sẽ đưa ra cấu trúc của một chương trình hoàn chỉnh trong IDE cho các bạn thấy. Đồng thời mình sẽ giải thích về một số lệnh chuyên dụng để thuận tiện cho các bạn sử dụng. Mình xét 1 minh chứng đơn giản là làm cho đèn led nhấp nháy:
<!-- wp:paragraph -->
<p>#define led = 13 // khai báo chân led là chân 13</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>void setup()</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>pinMode(led, OUTPUT); //Thiết lập chân led (chân 13) là chân ra (OUTPUT)</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>void loop()</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>digitalWrite(led, HIGH); // Ra lệnh mở led</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>delay(1000); // Mở trong 1s (1000ms), có thể Thay đổi giá trị này</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>digitalWrite(led, LOW); // ra lệnh tắt led</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>delay(1000); // Tắt trong 1s (1000ms), có thể Chỉnh sửa giá trị này</p>
<!-- /wp:paragraph -->
Sau đây chúng ta sẽ cùng đi sâu vào tìm hiểu cấu trúc của một chương trình lập trình Arduino qua minh chứng này.
Tài liệu bên dưới sẽ hỗ trợ bạn tự học lập trình Arduino tốt hơn.
Phần 1: Khai báo biến
Đây là phần khai báo các yếu tố như: kiểu biến, tên biến, định nghĩa các chân cắm trên board. Một số kiểu khai báo biến thông dụng hay dùng:
* #define
Define được dịch là định nghĩa. Hàm này có tác dụng định nghĩa, hay còn được hiểu là là gán: gán một chân cắm, một ngõ ra nào đó với 1 cái tên mình thích.
Ví dụ cụ thể: #define led 13
Lưu ý: sau #define thì không có dấu “,” (dấy phẩy)
*Bạn có thể khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…
Các bạn có thể tìm hiểu thêm các kiểu biến khác cũng như công dụng của chúng tại trang web Arduino.cc
Phần 2: Thiết kế
Phần này dùng để xây dựng cho chương trình. Bạn cần nhớ rõ cấu trúc của nó là “void setup()”
Cấu trúc của nó sẽ có dấu ngoặc ở đầu và ở cuối. Nếu bị thiếu phần này khi chạy chương trình thì chương trình sẽ báo lỗi.
Phần này dùng để quản lý các tốc độ truyền dữ liệu, kiểu chân ra hay chân vào. Trong đó:
- Serial.begin(9600); Dùng để truyền dữ liệu từ board Arduino lên laptop.
- pinMode(biến, kiểu vào hoặc ra); Ví dụ: pinMode(ChanDO, INPUT); được dùng để xác định kiểu chân cắm là vào hay ra
Vòng lặp
Dùng để viết các lệnh trong chương trình để board Arduino thực hiện các tính năng mà chúng ta mong muốn. Vòng lặp thường được bắt đầu bằng đoạn mã:
void loop()
……………….
Một số câu lệnh, cấu trúc thường gặp, nếu bạn muốn tự học lập trình Arduino thì không nên bỏ qua:
// | Dấu // dùng để chỉ ra, khi nội dung hướng dẫn nằm trên 1 dòng, khi kiểm tra phần mềm ứng dụng thì phần check sẽ bỏ qua phần này, không kiểm tra. |
*/ | Ký hiệu này cũng dùng để hướng dẫn, Nhưng giải thích dành cho 1 đoạn, tức là có thể xuống dòng được |
#define biến chân | Define nghĩa là định nghĩa, xác định. Câu lệnh này nhằm gán tên 1 biến vào 1 chân nào đó. ví dụ như: #define led 13 |
digitalWrite(chân, trạng thái); | Dùng để tắt, mở 1 chân ra. Cú pháp của nó là digitalWrite(chân,trạng thái chân);. Ở đây trạng thái chân có thể là HIGH hoặc LOW. Ví dụ: digital(led,HIGH); , hoặc digital(led,LOW); . Chú ý dấu chấm phẩy đằng sau câu lệnh. |
analogWrite(chân, giá trị); | cụ thể dùng để băm xung (PWM), thường dùng để điều khiển tốc độ động cơ, độ sáng led,.. |
digitalRead(chân); | Read nghĩa là đọc, lệnh này dùng để đọc giá trị digital tại chân muốn đọc |
analogRead(chân); | Read nghĩa là đọc, lệnh này dùng để đọc giá trị analog tại chân muốn đọc |
delay(thời gian); | Delay nghĩa là chờ, trì hoãn, duy trì. Lệnh này dùng để giữ nguyên trạng thái đang thực hiện một thời gian. Thời gian ở đây được tính bằng mili giây, 1 giây sẽ bằng 1 ngàn mili giây. |
if() | Các câu lệnh if nghĩa là nếu, sau if là dấu (), bên trong dấu ngoặc tròn này sẽ là một biểu thức so sánh. Một ví dụ trong bài về cảm biến độ ẩm đất cho bạn dễ hình dung: if (giatriAnalog>500) // Nếu giá trị đọc được của biến giatriAnalog lớn hơn 500 |
digitalWrite(Led,HIGH); | //Ra lệnh cho led sáng |
delay(1000); | chờ 1s |
else () | else nghĩa là Trái lại/ Nếu không |
Serial.print() | In và hiển thị ra màn hình máy tính. Tuy nhiên, lệnh này sẽ in liên tiếp mà không xuống dòng |
Serial.println() | In và hiển thị ra màn hình máy tính. Nhưng câu lệnh này sẽ thực hiện in và xuống dòng, giá trị tiếp theo sẽ được in ở dòng kế tiếp |
Lời kết
Trên đây là những thông tin cơ bản nhất giúp bạn có thể tự học lập trình Arduino tại nhà. Chúng tôi hy vọng bài viết này hữu ích đối với bạn.
Ngoài ra, OhStem đã sưu tầm 1 file ebook hướng dẫn tự học lập trình Arduino bằng tiếng việt cho người mới bắt đầu. Nếu bạn có nhu cầu thì hãy để lại email bên dưới, OhStem sẽ gửi cho các bạn nhé!
Fanpage: https://www.facebook.com/ohstem.aitt
Hotline: 08.6666.8168
Youtube: https://www.youtube.com/c/ohstem
8 Bình luận. Leave new
Tôi cần 1 hoặc 2 bạn tham gia vào project adurino ở HN. Có budget và salary thoả thuận. Ưu tiên sinh viên. Liên hệ. Mail Datthanh3588@gmail.
Mình xin file tự học lập trình.Cảm ơn bạn nhiều !
Chào bạn, bạn có thể xem Ebook do OhStem sưu tầm tại đây ạ: https://ohstem.vn/lap-trinh-arduino-tai-lieu-hoc-arduino/
xin tài liệu ạ
Chào bạn, bạn có thể xem Ebook do OhStem sưu tầm tại đây ạ: https://ohstem.vn/lap-trinh-arduino-tai-lieu-hoc-arduino/
Chào bạn, bạn có thể xem Ebook do OhStem sưu tầm tại đây ạ: https://ohstem.vn/lap-trinh-arduino-tai-lieu-hoc-arduino/
xin 1 file ebook lập trình ạ
Chào bạn, bạn có thể xem Ebook do OhStem sưu tầm tại đây ạ: https://ohstem.vn/lap-trinh-arduino-tai-lieu-hoc-arduino/