- Vật liệu thiết yếu:
- Mô-đun Màn hình Đồ họa Nokia 5110:
- Sơ đồ mạch:
- Chương trình Arduino và hoạt động:
Bản thân cái tên mang tính biểu tượng “ Nokia 5110 ” đã tạo nên những kỷ niệm về chiếc điện thoại di động Nokia mạnh mẽ rất phổ biến trong những năm 90. Mô hình 5110 đi kèm với Màn hình đồ họa đủ để hoạt động như một màn hình hiển thị cho điện thoại di động hồi đó. Màn hình này có khả năng hiển thị mọi thứ, từ các ký tự chữ và số đến đồ họa nhỏ, mọi thứ cần thiết cho điện thoại di động. Khi trái đất quay vòng những công nghệ mới với màn hình cảm ứng sáng bóng xuất hiện và màn hình này không còn được sử dụng nữa. Nhưng hy vọng chúng có thể được sử dụng trong các ứng dụng điện tử, nơi đồ họa nhỏ phải được hiển thị và tránh chi tiền cho màn hình LCD lớn. Vì vậy, trong hướng dẫn này, chúng ta sẽ tìm hiểu cách giao diện màn hình LCD đồ họa Nokia 5110 với Arduino và làm cho nó hoạt động.
Màn hình LCD này có các pixel đen và trắng với kích thước 84 × 48. Chúng có thể trông đơn điệu nhưng vẫn có thể được sử dụng để hiển thị đồ họa tốt cho các dự án của bạn và có thể dễ dàng sử dụng với các bộ vi điều khiển như Arduino. Vậy hãy bắt đầu….!
Vật liệu thiết yếu:
- Bảng Arduino (bất kỳ phiên bản nào)
- Màn hình Nokia 5110
- Kết nối dây
Mô-đun Màn hình Đồ họa Nokia 5110:
Có hai loại LCD đồ họa này có sẵn trên thị trường. Một cái có miếng hàn ở cả trên và dưới màn hình và cái kia chỉ có miếng hàn ở dưới cùng của màn hình. Loại mà chúng tôi đang sử dụng thuộc loại 2, chỉ có các miếng đệm dưới màn hình. Cả hai mô-đun hoạt động giống nhau và do đó kết nối giống nhau cho cả hai. Vì vậy, không phân biệt mô-đun đó là gì, bạn có thể làm theo hướng dẫn.
Như đã nói trước đó Nokia 5110 Graphical LCD có 84 pixel theo chiều ngang và 48 pixel theo chiều dọc. Tổng kích thước hiển thị là 1,72 'x 1,72'. Mô-đun có 6 chân đầu vào sử dụng mà chúng ta có thể giao tiếp nó với bất kỳ bộ vi điều khiển nào thông qua giao tiếp SPI. IC giao tiếp giao tiếp giữa màn hình và Arduino là IC điều khiển màn hình Philips PCD8544 có bảng dữ liệu có thể tìm thấy tại đây. Tuy nhiên, nếu bạn đang sử dụng Arduino để giao tiếp với vi mạch này thì chúng ta không cần lo lắng về biểu dữ liệu vì có các thư viện đã sẵn sàng để tải xuống và sử dụng. Mô-đun mà chúng tôi đang sử dụng ở đây được hiển thị bên dưới.
Sơ đồ mạch:
Dưới đây là sơ đồ mạch hoàn chỉnh để kết nối Nokia5110 Graphical LCD với Arduino.
Mô-đun hiển thị có 8 chân được sử dụng để thiết lập giao tiếp SPI với Arduino. Mô-đun được cấp nguồn bằng chân 3,3V của bảng Arduino. Lưu ý rằng các mô-đun này hoạt động trên logic 3.3V và do đó không cung cấp 5V cho chân Vcc của màn hình. Tôi đã nối dây trực tiếp Pin của màn hình với Arduino, mặc dù màn hình LCD hoạt động trên logic 3.3V và Arduino trên logic 5V vì chỉ khi đó tôi mới thấy LCD hoạt động bình thường. Bạn có thể sử dụng bộ chia điện áp để chuyển đổi 5V thành 3.3V nếu cần thiết, nhưng đối với tôi nó chỉ hoạt động mà không cần chuyển đổi logic. Các kết nối khá đơn giản và dễ thực hiện. Khi bạn đã hoàn tất các kết nối, thiết lập của bạn sẽ trông giống như hình bên dưới.
Chương trình Arduino và hoạt động:
Làm theo các bước dưới đây để lập trình Arduino của bạn cho Màn hình Nokia 5110. Các bước giả định rằng bạn đã cài đặt Arduino IDE và quen với việc sử dụng nó.
Bước 1: Mở Arduino IDE trên Máy tính của bạn và chọn bảng thích hợp trong menu công cụ sau khi kết nối Arduino với máy tính của bạn.
Bước 2: Bấm vào đây để tải về thư viện Nokia 5110 Display Library by Adafruit từ kho GitHub.
Bước 3: Khi tệp Zip được tải xuống, hãy chọn Sketch -> Bao gồm Thư viện -> Thêm thư viện.ZIP và duyệt đến vị trí mà tệp ZIP đã được tải xuống.
Lưu ý: Bạn cũng sẽ phải tải xuống lõi Adafruit GFX Graphics để thực hiện tất cả các hình tròn, văn bản, hình chữ nhật, v.v. Bạn có thể tải xuống từ https://github.com/adafruit/Adafruit-GFX-Library và cài đặt nó theo cách tương tự.
Bước 4: Bây giờ mở chương trình ví dụ bằng cách chọn Tệp -> Ví dụ -> Adafruit PCD Nokia 5110 LCD Library -> pcdtest và nhấp vào nút tải lên
Bước 5: Sau khi chương trình được tải lên, hãy nhấn nút đặt lại trên Arduino và bạn sẽ thấy chương trình ví dụ hiển thị tất cả các hình ảnh động như được hiển thị trong video ở cuối hướng dẫn này.
Bạn có thể đọc qua chương trình ví dụ để hiểu các chức năng tích hợp khác nhau có thể được sử dụng để thực hiện các thiết kế đồ họa khác nhau trên màn hình LCD. Nhưng chúng ta hãy tiến thêm một bước nữa và thử hiển thị Logo CircuitDigest trên màn hình LCD.
Bây giờ mở hình ảnh cần thiết trong Paint và thay đổi kích thước hình ảnh. Kích thước hình ảnh tối đa mà chúng tôi có thể sử dụng cho màn hình của mình là 84 × 48.
Sau khi thay đổi kích thước hình ảnh, hãy lưu hình ảnh dưới dạng bitmap (đen trắng) bằng cách sử dụng tùy chọn save as trong Paint. Để hiển thị hình ảnh dưới dạng bitmap trên màn hình LCD, chúng ta sẽ cần phần mềm có thể chuyển đổi hình ảnh bitmap thành mã. Bạn có thể tải xuống phần mềm bằng cách nhấp vào đây. Sau khi tải xuống, giải nén tệp và nhấp vào “BitmapEncoder” để khởi chạy ứng dụng. Mở ảnh bitmap mà chúng ta vừa lưu bằng phần mềm này để lấy mảng giá trị được mã hóa. Bạn có thể sao chép trực tiếp các giá trị này và dán nó vào mảng Arduino của mình. Giá trị được hiển thị bằng phần mềm cho logo của chúng tôi được hiển thị bên dưới
Như bạn có thể thấy mảng bắt đầu bằng giá trị 48, 48, đây là kích thước của hình ảnh của chúng ta. Chúng ta không nên thêm điều này vào mảng của mình. Vì vậy, hãy loại bỏ hai giá trị đầu tiên và sử dụng phần còn lại làm giá trị mảng trong chương trình. Mảng sẽ giống như bên dưới. Các chương trình hoàn chỉnh được đưa ra ở cuối trang này để bạn tham khảo.
static const unsigned char PROGMEM Logo = {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001111, B11111000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001111, B11111000, B00000000, B00000000, B00000000, B0011001100, B0000110011 B11111111, B11000000, B00000000, B00000000, B00001110, B00111110, B00111111, B11110000, B00000000, B00000000, B00111110, B00111110, B10000000, B01111100, B00000000, B00000000, B01111100, B01111100, B11000000, B00111110, B00000000, B00000000, B11111100, B01111110, B00000000, B00001111, B00000000, B00000001, B11111000, B11111111, B00111111, B10000111, B10000000, B00000011, B11111000, B11111111, B11111111, B11000011, B11000000, B00111111, B10000111, B10000000, B00000011, B11111000, B11111111, B11111111, B11000011, B11000000, B00000111, B111100111111, B11111111111111, 1000 B11111111111111111111000 B11111111111111111000 B01100000, B00000000, B00000011, B11100000, B00001001, B11111100, B00000000, B00000000, B00000111,B11100000, B00011001, B11111110, B00000000, B00000000, B00000111, B11000000, B00000001, B11111111, B10000000, B00011111, B11111111, B11000111, B11100011, B11111111, B1111100011, B111111, B1111 B111111111111, B1111111111111111, B1111 B111111111111 B1111 B1111111111 B1111 B1111111111 B1111 B11111111 B111111 B1111111111 B11111111, B11111111, B11111100, B00111111, B11111111, B00011111, B11111111, B11111111, B11111100, B00111111, B11111110, B00111111, B00111111, B11111111, B11111110, B01111111, B11111110, B00111110, B00000000, B01111111, B11111100, B01111111, B11111100, B01111100, B11000000, B00000000, B00000000, B01111111, B11111100, B01111110, B10000000, B00000000, B00000000, B00000000, B00000000, B11111110, B00111111, B11111111, B11111110, B00000000, B00000001, B11111111, B11111111, B11111111, B11111110, B01111111, B11111111, B11111111, B11111111, B11111111, B11111110, B01111111, B11111111, B11111111, B11111111, B11111111, B11111110, B01111111, B11111111,B11000111, B11111111, B11111111, B11111110, B00111111, B11111111, B10000011, B11111110, B00000000, B00000000, B00111111, B11111111, B10110011, B11111000, B11111111, B10000011, B11111110, B00000000, B00000000, B00111111, B11111111, B10110011, B11111000, B0000000000, B0011111100, B00111100, B0011111100, B00111111 B10000001, B11111111, B11111100, B00000000, B00011111, B11111000, B00000111, B11111111, B11111000, B00000000, B00000111, B11111110, B00011111, B11111111, B11111000, B00000111, B11111111, B11111000, B1111001111, B1111001111, B1111001111, B111100111111, B1100111111, B1111001111 B11111111, B11110000, B00000111, B11111000, B00001111, B11111111, B11000000, B00000000, B00000011, B11111100, B00100111, B11111111, B00000000, B00000000, B11111111, B11000000, B00000000, B00000011, B11111100, B001001111, B00111111, B00111111, B0011111, B0011111, B00111111, B0011111, B0011111, B0011001111, B0011001111, B0011001111, B0011001111, B00110011 B10000000, B00000000, B11111111, B11001111, B10000000, B11111111, B00000000, B00000000, B01111111,B11111111, B10110001, B11111110, B00000000, B00000000, B00011111, B11111111, B10110111, B11111100, B00000000, B00000000, B00001111, B11111111, B10000111, B11110000, B00000000, B00000000, B00000011, B11111111, B11111111, B11000000, B00000000, B00000000, B00000000, B11111111, B11111111, B00000000, B00000000, B00000000, B00000000, B00001111, B11110000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000};
Bây giờ để hiển thị bitmap này, chúng ta phải sử dụng các dòng mã sau. Nơi dữ liệu trước đó trên màn hình bị xóa và hình ảnh bitmap mới được ghi.
display.clearDisplay (); display.drawBitmap (20, 0, Logo, 48, 48, 1); display.display ();
The line display.drawBitmap (20, 0, Logo, 48, 48, 1); hiển thị vị trí, kích thước và màu sắc của ảnh bitmap. Cú pháp có thể được đưa ra dưới dạng.
display.drawBitmap (X_Position, Y_Position, Tên mảng, độ dài của ảnh, độ rộng của ảnh);
Chiều dài và chiều rộng của hình ảnh có thể được lấy từ hai phần tử đầu tiên của mảng tương ứng như đã nói trước đó. Khi mã này được chạy, chúng tôi sẽ nhận được bitmap hiển thị trên màn hình LCD của chúng tôi như hình dưới đây.
Bạn cũng có thể hiển thị văn bản đơn giản như hình dưới đây:
Hy vọng bạn đã hiểu hướng dẫn và có được màn hình LCD Nokia 5110 của mình được giao tiếp với Arduino. Với hiển thị đồ họa này trong tay áo của bạn, bạn có thể tạo nhiều dự án yêu cầu các chi tiết đồ họa nhỏ. Hoạt động hoàn chỉnh có thể được tìm thấy trong video dưới đây. Nếu bạn gặp bất kỳ vấn đề nào trong quá trình làm việc này, bạn có thể sử dụng diễn đàn để đăng vấn đề của mình hoặc các phần bình luận bên dưới.