
Hiển thị ảnh tự động từng bức một bằng Album Arduino
Album Arduino có thể hiển thị những bức ảnh kỹ thuật số một cách tuần tự, từng bức một trên màn hình màu TFT LCD.
Thông thường, chúng ta lưu giữ những bức ảnh đã chụp trong một album ảnh để xem hoặc cho bạn bè, gia đình xem sau này. Album Arduino sẽ giúp hiển thị những bức ảnh kỹ thuật số đó từng bức một, theo một cách tuần tự trên màn hình màu TFT LCD. Arduino sẽ đọc các bức ảnh kỹ thuật số từ thẻ SD và hiển thị chúng trên màn hình màu TFT LCD.
Dự án Album Arduino này khá đơn giản vì nó chủ yếu sử dụng một bo mạch Arduino Uno và một shield màn hình cảm ứng LCD của Arduino. Các bức ảnh cần hiển thị được chuyển đổi sang kích thước 240×320 pixel, với định dạng màu 24-bit dưới dạng tệp BMP (bitmap) bằng phần mềm Microsoft Paint (hoặc phần mềm tương tự) và được lưu trữ trên thẻ micro SD, loại thường dùng cho điện thoại di động.
Arduino Uno là một bo mạch vi điều khiển được sử dụng rộng rãi, dựa trên vi xử lý Atmega328P, thuộc dòng bo mạch Arduino. Nó có 14 chân đầu vào/ra kỹ thuật số, trong đó sáu chân có thể dùng làm đầu ra PWM và sáu chân làm đầu vào tương tự, cùng với một cổng USB với một thạch anh chân dán 16MHz.
Shield màn hình cảm ứng LCD của Arduino sử dụng chip ILI9341 và có sẵn khe cắm thẻ microSD. Màn hình LCD của shield có kích thước khá lớn (6 cm theo đường chéo), độ sáng cao (với bốn đèn nền LED trắng) và hiển thị màu sắc rực rỡ (18-bit với 262.144 sắc thái khác nhau). Nó có độ phân giải 240×320 pixel với khả năng điều khiển từng điểm ảnh, giao diện kỹ thuật số 8-bit, cùng bốn đường điều khiển và một chân reset. Thẻ SD có thêm bốn chân điều khiển khác.
Tất cả các kết nối chân đều tương thích trực tiếp với bo mạch Arduino Uno, giúp loại bỏ nhu cầu đi dây phức tạp hoặc tạo PCB mới. Shield này sử dụng nguồn điện 3.3V và hỗ trợ cả mức logic 3.3V và 5V.
Thiết lập ban đầu
Mở tệp ArduinoAlbum.ino trong Arduino IDE và thay đổi các giá trị định nghĩa sau theo yêu cầu của bạn:
#define MAX_FILES 20
#define DISP_DELAY 500
Ở đây, MAX_FILES là số lượng tệp tối đa được lưu trữ trên thẻ SD và hiển thị tuần tự, còn DISP_DELAY là độ trễ (hoặc khoảng thời gian) tính bằng mili giây để hiển thị mỗi bức ảnh.
#define ShowFileName 1
Nó được sử dụng để kiểm soát việc hiển thị tên tệp trước khi hiển thị tệp BMP.
- 0 để ẩn tên tệp.
- 1 để hiển thị tên tệp trước khi hiển thị hình ảnh thực tế.
Tiếp theo, biên dịch và tải mã lên bo mạch Arduino Uno, sau đó ngắt kết nối cáp USB. Sao chép các bức ảnh cần thiết (có kích thước 240×320 pixel và màu 24-bit) dưới dạng tệp .bmp vào thẻ microSD từ máy tính bằng đầu đọc thẻ SD.
Một tệp mẫu Testptn.bmp được bao gồm trong dự án này để kiểm tra tất cả các màu cơ bản trên màn hình, như minh họa trong Hình 1.

Bây giờ, hãy ngắt kết nối đầu đọc thẻ SD khỏi máy tính và lấy thẻ microSD ra. Sau đó, lắp thẻ microSD vào khe cắm thẻ trên shield màn hình LCD của Arduino, như minh họa trong Hình 2.

Định vị shield màn hình LCD Arduino đúng cách trên bo mạch Arduino Uno, đảm bảo các chân 5V, 3.3V và GND được kết nối chính xác. Kết nối nguồn điện 9V DC vào bo mạch Arduino Uno.
Màn hình sẽ hiển thị thông báo chào mừng, sau đó kiểm tra thẻ SD để hiển thị trạng thái. Khi thư mục gốc trên thẻ SD được đọc, danh sách các tệp lưu trữ trên thẻ sẽ hiển thị trên màn hình LCD. Sau đó, các bức ảnh sẽ lần lượt được hiển thị theo thứ tự.
Lưu ý: Tệp BMP gốc hỗ trợ màu lên đến 24-bit, trong khi shield màn hình LCD chỉ hỗ trợ tối đa 18-bit. Vì vậy, màu sắc hiển thị có thể có một chút khác biệt so với tệp BMP gốc.
Lắp ráp và kiểm tra
Vì tất cả các chân của shield màn hình LCD Arduino đều khớp với bo mạch Arduino Uno, nên không cần sơ đồ kết nối.
Nguyên mẫu đã được thử nghiệm thành công với thẻ microSD 8GB và nguồn điện DC 8V - 9V, được kết nối với bo mạch Arduino Uno qua jack DC.
Tải xuống mã nguồn: Nhấp vào đây.