Cube LED 8x8x8 Arduino Promini - Phần 1

I. Giới thiệu

Chào các bạn, hôm này mình xin phép được chia sẽ những gì mình đã học được khi làm Cube LED 8x8x8. Mình cũng tìm hiểu nhiều tài liệu, đọc đi đọc lại và có rất nhiều điểm chưa hiểu. Lý do mình viết bài này là để chia sẽ kiến thức, với hy vọng là mình sẽ tìm được những câu trả lời cho những điểm mình chưa hiểu từ chính bạn đọc. Mong các bạn có thể cùng mình viết lên các hiệu ứng cho nó đẹp hơn. Do quá trình làm Cube LED có khá nhiều công việc nên mình phải chia nhỏ bài viết thành nhiều phần. Với phần đầu tiên, mình xin chia sẽ về ý tưởng thiết kế và phần cứng. Còn phần hai, mình sẽ đăng về cách lập trình các hiệu ứng ngay trong thời gian sớm nhất có thể. Nếu như sau này khi nhận được những đóng góp ý kiến từ các bạn để cải tiến lên thì mình sẽ update tiếp nhé!

Tài liệu mà mình cho là OK nhất là đây nhé: http://www.instructables.com/id/Led-Cube-8x8x8/

II. Ý tưởng

Về bộ vi điều khiển thì mình sử dụng là Arduino Promini 16Mhz. Với Pro mini thì các bạn phải tìm hiểu thêm các bài viết về cách nạp phần mềm cho Promini. Mình chọn Promini vì mình muốn sau khi làm xong có thể để promini trên cube LED luôn. Trong lập trình Cube LED mình đã gặp vấn đề với bộ nhớ của vi điều khiển. Với Promini ta có bộ nhớ flash là 32Kb cái này không dùng hết nổi đâu. Nhưng Sram chỉ có 2Kb thôi, cái này nếu lập trình không khéo thì sẽ không đủ nè. Còn EEPROM là 1Kb, mình không muốn dùng cái EEPROM này vì khá tốn thời gian khi đọc dữ liệu từ nó.

Với khối Cube 8x8x8 chúng ta có tổng cộng là 512 LED. Vậy làm sao có thể điều khiển hết từng đèn? Mình sẽ dùng coi mỗi đèn LED là một điểm trong không gian Oxyz. Để gọi một điểm ra chúng ta cần 3 tham số x, y, z thể hiện toạ độ của một điểm. Với x, y, z chạy từ 0 đến 7.

Mình sẽ không hướng dẫn các hàn khối cube nữa. Vì mỗi người sẽ có một cách khác nhau.

Nhưng, để có thể đồng bộ với Code thì mình lưu ý là ở bài viết này, các tầng z là chân âm của LED, còn các cột là chân dương nhé! Như vậy mình sẽ có 8 tầng là 8 chân nối với cực âm của LED. là 64 chân nối với cực dương của LED. Mình đã dùng 9 dây bus 8 để nối các chân này với mạch điều khiển. Dây bus đầu tiên mình hàn cho 8 tầng của cube. 8 dây còn lại mỗi dây mình hàn cho 1 hàng x. Bus 8 có 8 dây nhỏ xếp thành hàng ngang, mỗi dây nhỏ tương ứng với 1 cột y. Với bus thứ 1 có x=0, y chạy từ 0 đến 7; bus thứ 2 có x=1. Y chạy từ 0 đến 7; …… Và mình có cái trình tự quét mảng này luôn (nó rất là quan trọng và sẽ được lặp lại rất nhiều lần trong code)

for (byte zo=0; zo<8; zo++) {

      for (byte xo=0; xo<8; xo++) {  

          for (byte yo=0; yo<8; yo++) {  

             mangba[xo][yo][zo]=0;  

         }

     }

}

Vậy chúng ta đã đơn giản 512 LED thành 8 tầng và 64 cột rồi. Nhưng như thế vẫn còn quá nhiều chân điều khiển so với Arduino Promini. Mình đã sử dụng 74hc595 để mở rộng chân điều khiển. Lại tiếp tục chiêu cũ, các bạn tự xem cách dùng của 74hc595 nhé! Ở đây mình dùng 8 con 74hc595 nối tiếp nhau, mỗi con điều khiển được 8 cột, 8 con là 64 cột rồi. Còn 8 tầng z mình sẽ dùng luôn 8 chân trên arduino điều khiển 8 con TIP41.

Lúc đầu mình có đề cập đến sram của arduino là 2Kb, khá nhỏ, nên mình có vẽ thêm chỗ cho một module đọc thẻ nhớ SD nữa. Nhưng hiện tại chưa biết dùng làm gì!

III. Phần cứng

Ở đây mình sẽ làm mạch in cho mạch điều khiển cả cube.

  • 1 Arduino Promini (tự trang bị mạch nạp nhé phù hợp nhé)
  • 8 con 74hc595
  • 8 con TIP41
  • Điện trở 100 Ohm
  • Mấy cây rào để kết nối với dây bus nữa.
  • Dây nối.

Sơ đồ nguyên lý thì chỉ là nối tiếp các 74hc595 lại với nhau. Và 8 con TIP41 để nối 8 tầng LED với GND thôi. Khi mở TIP41 thì Chân âm của LED sẽ nối với GND, nếu chân dương ở mức cao thì LED sẽ sáng. Mình sẽ nói rõ hơn ở bài sau! Đại loại là thế này!

Promini nó sẽ nằm ngược chiều với 74hc595 nhé. Thể nhớ SD mình đã vẽ theo đúng thứ tự kết nối, mình sẽ có ghi chú cách nối dây trong phần code luôn. Còn nguồn cung cấp mình dùng nguồn 5v. Các bạn có thể mua cái adapter 5v-2A cho chắc nhé! Cái mạch nó thế này nè!

Hình 3D

File mạch in nè

https://drive.google.com/file/d/0B-njEb8gey6cM2czamZWcVFyMDg/view?usp=sharing (mirror)

lên
23 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Cube LED 8x8x8 Arduino Promini - Phần 2

Tiếp nối với bài viết Cube LED 8x8x8 Arduino Promini, hôm nay mình xin chia sẽ tiếp phần code lập trình cho khối Cube. Thật sự thì mình vẫn chưa viết được một vài hiệu ứng, nhưng mình mong rằng bài viết này sẽ giúp ích cho mọi người trong việc thao tác với mảng 3 chiều. Trong bài viết này mình sẽ chia sẽ từ thuật toán tới code để mọi người có thể hình dung các tạo một hiệu ứng cho Cube LED, và mình rất mong sẽ nhận được thêm các hiệu ứng mới, hiệu ứng đẹp từ các bạn. Trong quá trình viết bài viết này, mình đã có những sự rút gọn để thuật toán nhanh hơn trước.

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