Lập trình C

Đây là tập hợp các bài viết về lập trình C - ngôn ngữ được sử dụng để lập trình cho Arduino, là cuốn cẩm nang cho việc tìm hướng giải quyết cho vấn đề lập trình Arduino. Nếu bạn có bất cứ thắc mắc hoặc góp ý nào, hãy mạnh dạn nói ra ở cuối các bài viết.

Vấn đề của số chấm động và số nguyên trong ngôn ngữ lập trình C++ trên board mạch Arduino

Có bao giờ bạn tự hỏi: "Dự án của mình làm tốt thế này, chạy ngon lành rành rành thế này, chắc không có bugs đâu?". Thực sự, nếu dự án của bạn không có phần xử lý số thực chấm động trong đó thì mình nghĩ phần code của bạn sẽ hoạt động ngon lành theo thời gian. Nhưng mà có số thực thì từ từ, chúng ta cần xét lại code. Trước đây, có một số bạn nhắn tin riêng hỏi mình về code với điểm chung là "code mình chạy ngon lành lúc đầu, sau đó bị lỗi, không rõ nguyên nhân". Loại trừ các phần code logic sai ra, thì hầu hết đều là do lỗi khi xử lý số chấm động mà không quan tâm đến nền tảng lập trình bên dưới! Mà cũng đúng, chúng ta rất dễ bị đánh lừa bởi chính đoạn code chúng ta viết. Vì nó có báo lỗi biên dịch đâu mà, kaka. Qua bài viết này, mình muốn phân tích và cùng các bạn rút kinh nghiệm về số chấm động float, cách hạn chế lỗi sai với số chấm động.

lên
19 thành viên đã đánh giá bài viết này hữu ích.

Hướng dẫn kiểm soát từng đèn led với IC HC595

IC HC595 điều khiển 1 lúc được 8 đèn led (nâng cao hơn là 16 đèn và nhiều hơn nữa). Có bao giờ bạn tự hỏi muốn kiểm soát từng đèn thì làm sao? Ví dụ: tui chỉ muốn đèn thứ 5 sáng/tắt thì làm sao? Tui muốn đèn thứ 2 và 7 sáng/tắt thì làm sao? ...
Bài học này sẽ hướng dẫn "làm sao".

lên
20 thành viên đã đánh giá bài viết này hữu ích.

Tự làm game Snake - Rắn ăn mồi với Arduino - Ví dụ về việc sử dụng thư viện XỬ LÝ BẤT ĐỒNG BỘ

Nếu là một người theo dõi cộng đồng Arduino Việt Nam trong thời gian dài, bạn sẽ để ý rằng, mảng Game là một mảng nhận đươc khá ít sự quan tâm vì độ khó của nó. Điển hình là chỉ có bài viết hướng dẫn làm game Flappy bird và Cá ăn mồi của bạn nguoimegame. Tuy nhiên, hôm nay, khi mình cảm thấy đã đủ lượng kiến thức và lượng thư viện nền tảng mình đã viết trước đó, mình sẽ hướng dẫn các bạn cách viết một game đơn giản với Arduino.

lên
16 thành viên đã đánh giá bài viết này hữu ích.

Tạo một quy trình công nghiệp với các bước bằng Arduino - Phần 3: Giới hạn số lần chạy và kết hợp thư viện bất đồng bộ

Ở trong loạt bài này và một bài viết khác, mình đã đề cập đến vấn đề quy trình Công nghiệp (phần 1phần 2) và vấn đề xử lý bất đồng bộ trên Arduino. Hôm nay, mình muốn phát triển loạt bài này với mục đích, bạn có thể xây dựng một máy công nghiệp với các quy trình tuần tự nhưng có thể can thiệp để dừng ngay được. Ngoài ra, mình còn cập nhập thêm khả năng quy ước trước số lượt chạy của quy trình và một số API khác giúp cho các bạn có thể kết hợp lại 2 thư viện này! Để đọc hiểu, và tiếp cận nhanh bài này, các bạn cần đọc 3 bài viết mà mình có liên kết trong đoạn giới thiệu này.

lên
8 thành viên đã đánh giá bài viết này hữu ích.

Tạo một quy trình công nghiệp với các bước bằng Arduino - Phần 2: công việc có điều kiện

Ở bài viết trước, mình đã đề cập đến vấn đề là "Làm thế nào để xây dựng một quy trình công nghiệp trên Arduino.VN". Ở bài viết đó, mình đã đề cập đến vấn đề quy trình có điều kiện, và với sự hưởng ứng từ Cộng đồng qua vấn đề làm một máy công nghiệp dùng để sản xuất sản xuất thành phẩm, mình muốn đóng góp một cái gì đó để dự án này hoàn thiện, đó cũng làm một cách để rèn luyện khả năng xử lý vấn đề thông qua mô tả mà không trực tiếp "chạy" máy devil​!

lên
7 thành viên đã đánh giá bài viết này hữu ích.

Tạo một quy trình công nghiệp với các bước bằng Arduino

Như đã nói ở vấn đề trước Xử lý nhiều tiến trình cùng một lúc trên Arduino - Có thể hay không?, chúng ta có thể xử lý nhiều tiến trình trên Arduino theo cơ chế bất đồng bộ. Tuy nhiên, một vấn đề khá hay mà từ các bình luận ở bài viết đó, mình mới ngộ ra được, đó là làm thế nào để xây dựng một quy trình công việc thực sự trên một board mạch Arduino. Thiết nghĩ, điều đó, hoàn toàn có thể thực hiện được, và xin chia sẻ với mọi người qua bài viết này nhằm giúp tất cả chúng ta có một thư viện chuẩn để làm những công việc phức tạp hơn.

lên
3 thành viên đã đánh giá bài viết này hữu ích.

Xử lý nhiều tiến trình cùng một lúc trên Arduino - Xử lý bát đồng bộ - Có thể hay không?

Một khi viết một chương trình lớn, bạn sẽ phải viết chương trình để thực hiện nhiều chức năng. Và khi viết chương trình với nhiều chức năng bạn sẽ gặp các vấn đề phức tạp như: làm thế nào để chức này hoạt động ổn định với chức năng kia, và khi thêm chức năng mới vào sản phẩm của mình nó sẽ đụng độ như thế nào với các chương trình khác? Qua bài viết này, mình muốn chia sẻ với các bạn một thư viện khá hay của anh Đại Huỳnh (trong đó mình có mod lại một tí laugh) để giải quyết các vấn đề nêu trên - xử lý nhiều tiến trình cùng một lúc trên Arduino.

lên
12 thành viên đã đánh giá bài viết này hữu ích.

In một chuỗi với nội dung được quy định sẵn trong Arduino (Formatted String)

Trong các bài trước, chúng ta đã tìm hiểu khá nhiều về chuỗi trong Arduino, nào là cách lưu chuỗi vào bộ nhớ flash, hay cách mà Arduino lưu trữ các biến. Hôm nay, chúng ta sẽ tìm hiểu thêm về cách in chuỗi theo một định dạng tự định nghĩa.

lên
1 thành viên đã công nhận bài viết này hữu ích!

Làm thế nào để một nhóm lập trình viên có thể làm việc cùng nhau hiệu quả?

Nhắc lại đến việc sáng tạo ra một sản phẩm mới, chắc hẳn bạn luôn muốn nó ra đời và có hiệu quả trong thực tiễn. Tuy nhiên, không phải sản phẩm nào mới ra đời cũng được mọi người chào đón một cách nồng nhiệt như iPhone. Gác lại đến vấn đề hiệu quả của sản phẩm, đó là chuyện khó. Trước tiên, ta phải giải quyết chuyện dễ, đó là kết hợp sức mạnh của nhiều người để tạo nên một đội ngũ mạnh mẽ trong việc lập trình. Bây giờ câu hỏi đặt ra cho bạn là? Bạn muốn trở thành một phần của một nhóm có cùng lý tưởng và tiến đến thành công, HAY tự bạn sẽ tìm đến thành công bởi một mình bạn?

lên
2 thành viên đã đánh giá bài viết này hữu ích.

Lưu các biến CHỈ ĐỌC với PROGMEM

Trong bài Tiết kiệm RAM trong Arduino?, chúng ta đã biết cách lưu chuỗi hằng vào bộ nhớ FLASH thay cho việc lưu hết bọn chúng vào RAM. Như vậy, một hằng chuỗi có thể được lưu vào bộ nhớ FLASH thay vì lưu vào RAM. Vậy, câu hỏi đặt ra là, những biến hằng khác (hằng số, hẳng mảng, hẳng số thực) có thể được lưu vào FLASH thay vì vào RAM hay không?

Trong thực tế, các biến hằng (trừ hằng chuỗi) hầu hết chỉ tốn vài chục byte để lưu trữ nên RAM, nên chúng ta cũng chưa gặp vấn đề gì trong việc lưu trữ hằng số hay hằng mảng cả. Nhưng thỉnh thoảng, có những lúc, ta phải tìm cách lưu trữ chúng ở một nơi khác, ví dụ Bài 12: Phát nhạc bằng Arduino với một cái loa hoặc buzzer.

Chần chừ gì nữa, biết muốn phám khá khả năng của Arduino - hay không?

lên
3 thành viên đã đánh giá bài viết này hữu ích.
Đăng kí nhận RSS - Lập trình C