Thông báo

Collapse
No announcement yet.

Hiệu ứng LED Cube 8x8x8 (LED 3D)

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #61
    A "minh _cly" ơi... em thấy bài viết của a rất hay..em không phải là dân điện tử nhưng e rất thích led cube 8x8x8 ...về phần cứng thì e tìm hiểu và có thể làm dk rồi nhưng em không biết lập trình ...a có thể gửi cho em bản code đầy đủ của mạch cube 8x8x8 như trong video của a vào gmail cho em dk không. nếu dk thì em cám ơn a nhiều lắm.
    Gmail của em là: bienhoaivan@gmail.com
    ak a ơi cho em hỏi thêm nếu e dùng con AT89C52 để điều khiển thì có dk không hay phải dùng loại khác? Thanks anh.

    Comment


    • #62
      anh minh cly cho em hỏi anh sử dung hàm Add như thế nào vậy ạ( ví dụ Add(x,y,z) cho toạ độ hiển thị led)?
      em mới vào nghề nên có hỏi những câu quá đơn giản thì mong anh đừng trách!!e cam on

      Comment


      • #63
        Anh minh_cly ơi cho em hỏi về hàm get_time cái, anh có thể cho em tham khảo code được không, em thử làm mãi cái hàm này mà toàn lỗi thôi

        Comment


        • #64
          Nguyên văn bởi bienhoaivan Xem bài viết
          A "minh _cly" ơi... em thấy bài viết của a rất hay..em không phải là dân điện tử nhưng e rất thích led cube 8x8x8 ...về phần cứng thì e tìm hiểu và có thể làm dk rồi nhưng em không biết lập trình ...a có thể gửi cho em bản code đầy đủ của mạch cube 8x8x8 như trong video của a vào gmail cho em dk không. nếu dk thì em cám ơn a nhiều lắm.
          Gmail của em là: bienhoaivan@gmail.com
          ak a ơi cho em hỏi thêm nếu e dùng con AT89C52 để điều khiển thì có dk không hay phải dùng loại khác? Thanks anh.
          Sorry, ko thể bạn àh, code của mình viết bằng C# và ko chạy trên MCU.

          Nguyên văn bởi nhson113 Xem bài viết
          anh minh cly cho em hỏi anh sử dung hàm Add như thế nào vậy ạ( ví dụ Add(x,y,z) cho toạ độ hiển thị led)?
          em mới vào nghề nên có hỏi những câu quá đơn giản thì mong anh đừng trách!!e cam on
          Hàm Add là hàm bật sáng điểm ảnh đó. Đơn giản có thể làm như thế này:
          Code:
          byte buffer[64];
          void Clear() {
          for (int i = 0; i < 64; i++)
          buffer[i] = 0; // Tắt tất cả LED để tạo frame mới
          } void Add(int x, int y, int z) {
          buffer[z*8 + y] |= (1 << x); /* Giải thích một chút // Mảng buffer là bộ đệm lưu giữ trạng thái các điểm ảnh, nói nôm na là bộ đệm màn hình // Các dữ liệu được sắp xếp thế này: // Các điểm có x giống như được lưu chung 1 byte // Các byte có chung 1 y sẽ được sắp xếp thành từng cụm 8 byte // Tất cả sẽ tổng hợp lại thành buffer. // Ai thông minh thì sẽ hiểu code thế nào ngay, ai ko thì cứ ngồi ngẫm nghĩ. Đừng hỏi về vụ này nữa. */
          } void Update() {
          // Hàm đưa bộ đệm buffer ra các LED
          } void Main() {
          while (true) {
          Update();
          Clear(); //Tính toán hiệu ứng, có hàm Add trong phần này //Tính toán thời gian đã sử dụng để tính toán, trừ đi lấy số delay cần thiết Delay(...);
          }
          }

          Nguyên văn bởi trongchi Xem bài viết
          Anh minh_cly ơi cho em hỏi về hàm get_time cái, anh có thể cho em tham khảo code được không, em thử làm mãi cái hàm này mà toàn lỗi thôi
          Có nhiều cách, người học điện tử cũng phải học lập trình cho tốt. Lấy giấy nháp ra và phác thử sơ đồ chứ ko phải cứ cắm đầu cắm cổ vào làm việc với cái máy vi tính mà ko có gì trong não.
          Computer Science major - Vietnamese-German University
          Sponsored by

          Comment


          • #65
            //Có nhiều cách, người học điện tử cũng phải học lập trình cho tốt. Lấy giấy nháp ra và phác thử sơ đồ chứ ko phải cứ cắm đầu cắm cổ vào làm việc với cái máy vi tính mà ko có gì trong não.[/QUOTE]

            Mình thay mặt các bạn trong topic này chân thành cảm ơn bạn minh cly rất nhiều!nhưng mình xin góp ý bạn một tí!đây là diễn đàn!mọi người cùng chia sẻ kiến thức cho nhau!có gì sai hoặc không vui thì mong bạn góp ý nhẹ nhàng một tí! ko nên nói như vậy gây phản cảm cho nhau! mình nói vậy thôi!có gì ko phải mong bạn bỏ qua!rất mong bạn sẽ đóng góp nhiều topic hơn nữa để xây dụng diễn đàn! cảm ơn bạn nhiếu

            Comment


            • #66
              cái này dùng pic16f877a được ko vậy ?

              Comment


              • #67
                Nguyên văn bởi k2d_nh0k Xem bài viết
                cái này dùng pic16f877a được ko vậy ?
                là mcu thì dc hết!mcu nào cũng dựa trên 1 nguyên tắc hoạt động thôi,quan trọng là tùy theo mỗi mcu mà ứng biến

                Comment


                • #68
                  cho mình xin code được không ? nhutv92@gmail.com

                  Comment


                  • #69
                    Nguyên văn bởi minh_cly Xem bài viết
                    Hiện nay, e thấy LED Cube khá là hot, và hầu hết các bạn đều pí ở một chỗ là hiệu ứng, nên e mở 2pic này nhằm giúp một số bạn biết một số hiệu ứng cơ bản cho LED Cube 8x8x8 (có thể mở rộng nếu bạn thông minh hơn một chút). Video LED Cube của mình và các hiệu ứng:

                    Có nhiều project sử dụng nhiều loại MCU khác nhau: 89xx, ATMEL, PIC, hay thậm chí là kết nối PC giống e, vì vậy, e sẽ mô tả thuật toán cơ bản trước, và sau đó là code bằng C (bạn nào xài ASM thì đổi sớm đi nhá).
                    Kết quả xuất ra của mình sẽ là một mảng chứa các điểm LED sáng, và mỗi phần tử sẽ có 3 số là x, y, z tương ứng tọa độ của LED sáng đó. Mã thêm LED sáng sẽ là Add(x, y, z). [Hy vọng các bạn hỉu đc phần này]
                    Ngoài ra mình còn sử dụng lệnh Get_time() để lấy thời gian, tùy vào compiler của bạn mà thay đổi.

                    Hiệu ứng sóng:

                    Hiệu ứng này mô tả một điểm dao động theo hàm sin làm mặt phẳng xung quanh dao động theo gây nên cảm giác sóng. Hiệu ứng này e góp nhặt trên trang instructable và đc nhiều ng xài vì tính đơn giản nhưng đẹp của nó.

                    Cơ bản về thuật toán:
                    Gọi chu kỳ sóng là T, bước sóng L, biên độ A.
                    • Chọn một điểm trong mặt phẳng xy làm gốc, đặt tên là O
                    • Quét tất cả mọi điểm trong mặt phẳng xy, gọi từng điểm là A
                    • Tính khoảng cách AO theo định lý Pytago, gọi là R
                    • Dùng công thức sóng u = A*Cos (2*PI*t/T - 2*PI*R/L)
                    • Add từng điểm vào mảng sáng

                    Vs 8x8x8, L là 7, A là 3.5, tọa độ O là (3.5, 3.5), còn T là 1s. Việc lấy t tùy vào cách các bạn lấy, có thể dùng timer, có thể đếm frame.

                    Code C:
                    Code:
                    float L = 7; // Bước sóng
                    float T = 1; // Chu kỳ
                    float A = 3.5; // Biên độ
                    float xo = 3.5; // Tọa độ điểm gốc O
                    float yo = 3.5;
                    
                    for (byte y = 0; y < 8; y++) // Quét Y
                    {
                        for (byte x = 0; x < 8; x++) // Quét X
                        {
                            float r = Sqrt(Pow(x - xo, 2) + Pow(y - yo, 2)); // Lấy bán kính, Sqrt là căn bậc 2, Pow(x, y) là x mũ y
                            float t = get_time(); // Lấy thời gian
                            byte z = (byte)(A * Cos(2*PI*t/T - 2*PI*r/L) + 3.5); // Lấy cao độ z, 3.5 là vị trí cân bằng
                            Add(x, y, z); // Lưu vị trí LED sáng
                        }
                    }
                    Ngoài ra, bạn có thể tạo ra 1 hiệu ứng sóng khác bằng một thay đổi nho nhỏ. Bằng việc di chuyển điểm O ra rất xa (cỡ 5000), chúng ta có sóng song song (điểm phát sóng rất xa), và nếu quay điểm O quay một điểm nào đó, chúng ta có hiệu ứng thú vị như sau. (Trong video là hiệu ứng số 2)

                    Code:
                    float L = 7; // Bước sóng
                    float T = 1; // Chu kỳ
                    float A = 3.5; // Biên độ
                    float ro = 5000; // Điểm O rất xa LED Cube
                    float To = 8; // Chu kỳ quay của O quanh trục
                    float xo, yo;
                    
                    float t = get_time(); //Lấy thời gian
                    xo = ro*Cos(2*PI*t/To) + 3.5; // Cho điểm O quay
                    yo = ro*Sin(2*PI*t/To) + 3.5;
                    for (byte y = 0; y < 8; y++) // Quét Y
                    {
                        for (byte x = 0; x < 8; x++) // Quét X
                        {
                            float r = Sqrt(Pow(x - xo, 2) + Pow(y - yo, 2)); // Lấy bán kính, Sqrt là căn bậc 2, Pow(x, y) là x mũ y
                            byte z = (byte)(A * Cos(2*PI*t/T - 2*PI*r/L) + 3.5); // Lấy cao độ z, 3.5 là vị trí cân bằng
                            Add(x, y, z); // Lưu vị trí LED sáng
                        }
                    }
                    Hum nay mệt quá, mai viết típ nha mọi người.

                    Bạn minh_cly ơi ! bạn có thể cho mình hỏi về hàm add(x,y,z) cụ thể là ntn không. led mình làm dùng 595 xuất ra 64 cột. 595 được điều khiển bởi 3 chân của porte. còn portC mình dùng quét 8 lớp kích bằng trans pnp, mình thử tạo 1 chương trình con để tạo điểm sáng như hàm add(x,y,z) với thời gian delay 200us nhưng vẫn không được, quét rất chậm. bạn có thể cho mình ý kiến được không . cám ơn nhiều lắm. mail mình là vanthuong129@gmail.com

                    Comment


                    • #70
                      sao hok có ai quan tâm topic này nữa vậy trời. hichic

                      Comment


                      • #71
                        sorry nhé! up cái cho mọi người thấy để giúp mình với

                        Comment


                        • #72
                          Bạn minh_cly ơi ! bạn có thể cho mình hỏi về hàm add(x,y,z) cụ thể là ntn không. led mình làm dùng 595 xuất ra 64 cột. 595 được điều khiển bởi 3 chân của porte. còn portC mình dùng quét 8 lớp kích bằng trans pnp, mình thử tạo 1 chương trình con để tạo điểm sáng như hàm add(x,y,z) với thời gian delay 200us nhưng vẫn không được, quét rất chậm. bạn có thể cho mình ý kiến được không . cám ơn nhiều lắm. mail mình là vanthuong129@gmail.com

                          Comment


                          • #73
                            b co so do nguyen ly ve mach led cu be 8x8x8 k cho m xin .gui giup qua mail m tungkdt2011.2013@gmail.com nhe .thank b

                            Comment


                            • #74
                              Bạn minh_cly ơi ! bạn có thể cho mình hỏi về hàm add(x,y,z) cụ thể là ntn không. led mình làm dùng 595 xuất ra 64 cột. 595 được điều khiển bằng giao thức SPI. còn portD mình dùng quét 8 lớp kích bằng trans pnp, bạn có thể chỉ mình hàm Add(x,y,z) được không? mình chưa hiểu lắm. cám ơn bạn nhiều nha !.mail mình là vanthuong129@gmail.com

                              Comment


                              • #75
                                Bạn minh_cly ơi ! bạn có thể cho mình hỏi về hàm add(x,y,z) cụ thể là ntn không. led mình làm dùng 595 xuất ra 64 cột. 595 được điều khiển bằng giao thức SPI. còn portD mình dùng quét 8 lớp kích bằng trans pnp, bạn có thể chỉ mình hàm Add(x,y,z) được không? mình chưa hiểu lắm. cám ơn bạn nhiều nha !.mail mình là vanthuong129@gmail.com

                                Comment

                                Về tác giả

                                Collapse

                                minh_cly Tìm hiểu thêm về minh_cly

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X