Vòng lặp for() rất hiệu quả khi cần thực hiện một loạt hoạt động kế tiếp nhau. Ví dụ bật tắt một chuỗi LED theo thứ tự từ chân 2 đến chân 7.
B12 – Làm mượt giá trị (smoothing)
Trong ví dụ này, ta sẽ đọc liên tiếp các giá trị từ cảm biến rồi lấy trung bình. Điều này giúp giá trị đọc được có độ ổn định và chính xác hơn. Ngoài ra, ta sẽ học cách sử dụng mảng array để lưu biến dữ liệu.
B11 – Điều khiển đèn LED (Fading – For loop)
Sử dụng phương thức điều chỉnh độ rộng xung PWM. Tuy nhiên, chương trình sẽ áp dụng vòng lặp for ( ). Không giống hàm điều kiện if .. else, khi điều kiện đúng thì các hành động trong vòng lặp for ( ) sẽ được thực hiện hết trước khi thoát ra ngoài.
Continue reading “B11 – Điều khiển đèn LED (Fading – For loop)”
B10 – Đọc và chuyển đổi giá trị từ cảm biến (Map function)
Đọc giá trị từ cảm biến, chuyển đổi sang vùng giá trị từ 0 đến 255 để phù hợp với bộ chỉnh độ rộng xung (PWM). Sau đó tăng giảm độ sáng tối của đèn LED bằng giá trị vừa nhận, đồng thời gửi giá trị về máy tính để hiển thị thông qua Arduino IDE.
Continue reading “B10 – Đọc và chuyển đổi giá trị từ cảm biến (Map function)”
B9 – Dùng điện trở nội (Pull up resistor)
Trong một số trường hợp, ta không cần gắn trở ngoài để treo trạng thái của một chân nào đó lên cao hoặc xuống thấp (như bài nút nhấn trước). Một số IC có sẵn điện trở nội (bên trong) cho phép ta sử dụng để treo trạng thái một chân nào đó.
Continue reading “B9 – Dùng điện trở nội (Pull up resistor)”
B8 – Chương trình phát nhạc (Tone Melody)
Một chương trình giúp tạo ra các đoạn nhạc nhờ vào đoạn hàm có sẵn. Ngoài việc sử dụng hàm tạo âm thanh tone( ) , ta sẽ học cách sử dụng thư viện ngoài. Đôi khi chương trình quá dài, người ta sẽ viết riêng một tập tin phụ rồi đặt ở thư viện ngoài. Khi cần sử dụng thì trong chương trình chính chỉ việc gọi tập tin đã có sẵn.
Continue reading “B8 – Chương trình phát nhạc (Tone Melody)”
B7 – Đếm trạng thái (Edge detection)
Một khi có thể xác định được trạng thái của công tác, ta có thể làm ứng dụng với công tắc. Một ví dụ là đếm số lần công tắc được nhấn để ra quyết định. Với mạch điện có gắn một công tắc và điện trở treo xuống thấp (như bài trước)
B6 – Khử nhiễu khi nhấn nút (Debounce)
Trong quá trình làm việc với nút nhấn, trạng thái đọc được nhiều lúc bị lặp lại do tính chất cơ khí của nút nhấn. Vì trạng thái không dứt khoát dẫn đến chương trình có khả năng xử lý sai.
Để loại bỏ việc đọc sai trạng thái và loại nhiễu khi nhấn công tắc, ta có thể dùng hàm đếm thời gian để xử lý.
B5 – Bật tắt đèn LED bằng công tắc (LED Button – If Else)
Dựa trên mạch của bài B1 có sẵn, và đèn LED của bo tại chân 13. Dựa vào trạng thái của công tắc để điều khiển bật tắt đèn LED.
Continue reading “B5 – Bật tắt đèn LED bằng công tắc (LED Button – If Else)”
B4 – Nháy đèn không dùng hàm tạo trễ (Blink Without Delay)
Đôi khi ta cần chương trình chạy nhiều hoạt động cùng lúc, nếu dùng hàm delay( ) sẽ khiến chương trình bị ngắt trong giai đoạn hàm delay( ) hoạt động.
Do vậy ta cần một hàm đếm thời gian mà không sử dụng delay( ). Như vậy ta có thể chạy nhiều hoạt động đồng thời.
Trong bài này, ta dùng một hàm đếm thời gian đơn giản.
Continue reading “B4 – Nháy đèn không dùng hàm tạo trễ (Blink Without Delay)”