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

  • #46
    Nguyên văn bởi sieunhan14 Xem bài viết
    Bạn có thể đưa cho mình tham khảo đoạn code get_time() của bạn được không?
    Một thắc mắc nữa là hàm add(x,y,z) của bạn sẽ đưa giá trị các biến x, y, z đi đâu? Mình vẫn không hiểu lắm chỗ đó. mong bạn giúp! Nếu được thì mong bạn post đoạn code này lên giúp mình nhé.
    Hàm get_time() bạn có thể dùng timer sau đó tăng biến đếm theo thời gian. Hàm add(x, y, z) sẽ bật điểm sáng đó và nhét nó vào bộ đệm hiển thị, và cứ sau một khoảng thời gian thì xuất cái bộ đệm đó ra màn hình và clear bộ đệm đó.
    Một hàm get_time() thì quá đơn giản, mình nghĩ bạn cần suy nghĩ thêm để tự đưa ra code. Còn hàm add(x, y, z) có thể được viết như sau (viết theo ngôn ngữ C chung chung, không cụ thể MCU nào):
    Code:
    char buffer[64]; // Một bộ đệm gồm 64 byte * 8 bit / byte = 512 bit tương ứng 512 điểm sáng
    
    // Hàm thêm điểm sáng
    void add(char x, char y, char z) {
    buffer[z*8 + y] |= (1 << x); // Set vị trí bit x của byte thứ y + z*8 return;
    } // Hàm xóa bộ đệm, hàm này được gọi bởi ngắt timer cuối mỗi khung hình, timer set khoảng 40ms để hiển thị đc 25 khung hình/giây void newframe() {
    int i; for (i = 0; i < 64; i++) buffer[i] = 0; // Xóa bộ đệm // Có thể nhét bộ tăng biến thời gian ở đây để phục vụ cho hàm get time effect(); // Gọi hiệu ứng được chọn để tạo ra bộ đệm mới, chính là các hiệu ứng được trình bày ở trên, mỗi khung hình kêu một hiệu ứng thoy return;
    }
    Computer Science major - Vietnamese-German University
    Sponsored by

    Comment


    • #47
      Mình cảm ơn bạn nhiều !
      Bạn cho mình hỏi thêm ở chỗ Audio Spectrum, hàm if (t_show > 1.0 / f_show) có tác dụng gì? Và biểu thức thay vào F(fft_total[i]) sẽ tính toán thế nào? bạn có thể cho ví dụ hoặc phép toán được không?

      Comment


      • #48
        Nguyên văn bởi sieunhan14 Xem bài viết
        Mình cảm ơn bạn nhiều !
        Bạn cho mình hỏi thêm ở chỗ Audio Spectrum, hàm if (t_show > 1.0 / f_show) có tác dụng gì? Và biểu thức thay vào F(fft_total[i]) sẽ tính toán thế nào? bạn có thể cho ví dụ hoặc phép toán được không?
        Cụ thể là bây giờ đọc lại cũng không hiểu, về vụ FFT sẽ post sau...
        Computer Science major - Vietnamese-German University
        Sponsored by

        Comment


        • #49
          bai hay co anh nao biet them ve ma tran led ko

          Comment


          • #50
            ko co bacnao lam ve ma tran led 16x32a

            Comment


            • #51
              minh dang lam led 8x32 giao tiep voiban phim may tinh ai biet thi chi giup minh nhe gmai; cuongdtcn@gmail.com

              Comment


              • #52
                banco hieu ve led cu be8x8x8 ko vayma keu de

                Comment


                • #53
                  Nguyên văn bởi hienmen Xem bài viết
                  bai hay co anh nao biet them ve ma tran led ko
                  Nguyên văn bởi hienmen Xem bài viết
                  ko co bacnao lam ve ma tran led 16x32a
                  Nguyên văn bởi hienmen Xem bài viết
                  minh dang lam led 8x32 giao tiep voiban phim may tinh ai biet thi chi giup minh nhe gmai; cuongdtcn@gmail.com
                  Nguyên văn bởi hienmen Xem bài viết
                  banco hieu ve led cu be8x8x8 ko vayma keu de
                  1. Đề nghị ko spam như thế này (30 phút tới 4 post)
                  2. Ở ngoài tiêu đề ghi là LED Cube 8x8x8 rõ ràng, nếu ko đúng chủ đề của bạn thì đừng có bình luận
                  3. Trên đây là diễn đàn, ko có chuyện gửi tận nơi
                  4. Đương nhiên là tôi hiểu, ko thôi sao tôi viết đc cái bài này vs cái video kia
                  Computer Science major - Vietnamese-German University
                  Sponsored by

                  Comment


                  • #54
                    bạn minh_cly ơi, bạn có thể giúp mình code phần spectrum analyzer không ?

                    Comment


                    • #55
                      Mới lục lại ra được cái code FFT viết bằng C#:
                      Code:
                          public class FFT
                          {
                              public static Complex[] FFT_new(Complex[] incom)
                              {
                                  int N = incom.Length;
                                  Complex[] outcom = new Complex[N];
                                  int L = maxL(N);
                                  int M = N / L;
                                  Complex[] F = new Complex[N];
                                  for (int l = 0; l < L; l++)
                                  {
                                      Complex[] com1 = new Complex[M];
                                      for (int m = 0; m < M; m++) com1[m] = incom[l + m * L];
                                      if (maxL(M) == 1) com1 = DFT(com1);
                                      else com1 = FFT_new(com1);
                                      for (int q = 0; q < M; q++) F[l + q * L] = comp_mul(com1[q], exp_comp(-2 * Math.PI * l * q / N));
                                  }
                                  for (int q = 0; q < M; q++)
                                  {
                                      Complex[] com1 = new Complex[L];
                                      for (int l = 0; l < L; l++) com1[l] = F[l + q * L];
                                      if (maxL(L) == 1) com1 = DFT(com1);
                                      else com1 = FFT_new(com1);
                                      for (int p = 0; p < L; p++) F[p + q * L] = com1[p];
                                  }
                                  for (int p = 0; p < L; p++)
                                      for (int q = 0; q < M; q++)
                                          outcom[M * p + q] = F[p + q * L];
                                  return outcom;
                              }
                              public static Complex[] DFT(Complex[] incom)
                              {
                                  int N = incom.Length;
                                  Complex[] outcom = new Complex[N];
                                  for (int k = 0; k < N; k++)
                                  {
                                      Complex[] arrcomp = new Complex[N];
                                      for (int n = 0; n < N; n++)
                                      {
                                          arrcomp[n] = comp_mul(incom[n], exp_comp(-2 * Math.PI * k * n / N));
                                      }
                                      outcom[k] = comp_add(arrcomp);
                                  }
                                  return outcom;
                              }
                              public static Complex comp_add(Complex[] incom)
                              {
                                  Complex sum; sum.r = 0; sum.i = 0;
                                  for (int i = 0; i < incom.Length; i++)
                                  {
                                      sum.r += incom[i].r;
                                      sum.i += incom[i].i;
                                  }
                                  return sum;
                              }
                              public static Complex comp_mul(Complex incom1, Complex incom2)
                              {
                                  Complex pro;
                                  pro.r = incom1.r * incom2.r - incom1.i * incom2.i;
                                  pro.i = incom1.r * incom2.i + incom1.i * incom2.r;
                                  return pro;
                              }
                              public static Complex exp_comp(double ang)
                              {
                                  Complex com;
                                  com.r = Math.Cos(ang);
                                  com.i = Math.Sin(ang);
                                  return com;
                              }
                              public static int maxL(int number)
                              {
                                  int max = 1;
                                  for (int i = 2; (i * i) <= number; i++)
                                  {
                                      if ((number % i) == 0) max = i;
                                  }
                                  return max;
                              }
                          }
                          public struct Complex
                          {
                              public double r;
                              public double i;
                          }
                      Còn từ FFT sang spectrum analyzer thì có trình bày ở trên òy đó.
                      Computer Science major - Vietnamese-German University
                      Sponsored by

                      Comment


                      • #56
                        Mình không hiểu ở chỗ hàm F(fft_total[i]) này sẽ tính toán thế nào ? bạn có thể hướng dẫn được không ? thanks bạn !

                        Comment


                        • #57
                          Nguyên văn bởi sieunhan14 Xem bài viết
                          Mình không hiểu ở chỗ hàm F(fft_total[i]) này sẽ tính toán thế nào ? bạn có thể hướng dẫn được không ? thanks bạn !
                          Sau khi bạn tính fft để ra được 8 dải tần số và lưu vào mảng fft_total. Thì bạn sẽ dùng hàm F để biến đổi kết quả đó theo ý mình mong muốn. Ví dụ bạn muốn xuất dữ liệu theo dạng tuyến tính thì bạn có F(fft_total[i]) là a*fft_total[i] + b với a, b là hằng số nào đó. Còn nếu bạn muốn hiển thị kết quả theo hàm log thì bạn thay F(fft_total[i]) thành a*log(fft_total[i]) + b.
                          Computer Science major - Vietnamese-German University
                          Sponsored by

                          Comment


                          • #58
                            Nguyên văn bởi minh_cly Xem bài viết
                            Sau khi bạn tính fft để ra được 8 dải tần số và lưu vào mảng fft_total. Thì bạn sẽ dùng hàm F để biến đổi kết quả đó theo ý mình mong muốn. Ví dụ bạn muốn xuất dữ liệu theo dạng tuyến tính thì bạn có F(fft_total[i]) là a*fft_total[i] + b với a, b là hằng số nào đó. Còn nếu bạn muốn hiển thị kết quả theo hàm log thì bạn thay F(fft_total[i]) thành a*log(fft_total[i]) + b.
                            Cảm ơn bạn nhiều nhé !

                            Comment


                            • #59
                              Bài viết của minh_cly rất hay ! Mình cũng đag làm 1 cube 4x4x4 : 4 layers with 16leds common anode /1layer and 16 collums with 4leds common cathode/ 1collum, 4 layer mình điều khiển bơi 4 pin của uln2803 qua port c, 16 collums thì nối với port b, d. Vs phần cứng như vậy, bạn có thể vd cho mình hiệu ứng đầu tiên trong tutorial với ngôn ngữ c được k !!
                              Thật sự là mình không hình dung được code để áp dụng các hiệu ứng của bạn ! Mong nhận được sự hỗ trợ
                              Thân.

                              Comment


                              • #60
                                rat hay!cam on anh minh cly nhieu nhieu!

                                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

                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                                  Hôm qua, 13:11
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                                  Hôm qua, 09:25
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                                  Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                                  Hôm qua, 09:10
                                • Ng.Phuong.5
                                  Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                                  bởi Ng.Phuong.5
                                  Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                                  Mấy con...
                                  09-01-2025, 19:44
                                • viettinh
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi viettinh
                                  Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                                  Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                                  09-01-2025, 18:12
                                • nguyendinhvan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi nguyendinhvan
                                  Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                                  Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                                  Cách đơn giản...
                                  09-01-2025, 00:04
                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                                  08-01-2025, 19:02
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                                  08-01-2025, 15:43
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                                  08-01-2025, 15:28
                                • mèomướp
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi mèomướp
                                  Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                                  08-01-2025, 11:44
                                Đang tải...
                                X