Thông báo

Collapse
No announcement yet.

LED Cube 8x8x8 với PIC 18F4550 giao tiếp PC qua USB

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

  • LED Cube 8x8x8 với PIC 18F4550 giao tiếp PC qua USB

    Box này thấy vắng quá nên qua đây lập 2pic cho vui. Cái LED Cube 8x8x8 vừa mới làm xong, sử dụng PIC 18F4550 truyền trung gian giữa PC -> LED Cube. Do lập trình trên PC nên khoẻ re, nhiều hàm, ko cần quan tâm đến RAM hay flash gì của PIC hết. Sau đây là vài video:
    Toàn bộ hiệu ứng nhưng cái Audio Spectrum ko chèn đc nhạc vì đụng chạm bản quyền bản nhạc:

    Hiệu ứng âm phổ (Audio Spectrum - cái này có tiếng bài Lemon Tree):

    Mấy anh em cứ thoải mái đặt câu hỏi. Mình ko chỉ hết đâu nhưng chỉ hướng dẫn sơ bộ thoy, còn lại phải tự làm.
    Computer Science major - Vietnamese-German University
    Sponsored by

  • #2
    Mình vẫn chưa hiểu nguyên lý cho lắm, bạn có thể giải thích sơ qua được không. Mình cũng đã làm khối led 5x5x5 rồi nhưng chỉ lập trình với chip thôi. Muốn đưa phần mềm của mình sang được khối LED thì làm thế nào, mình nghĩ cái này chỉ có uư điểm là không tốn RAM thôi, nhưng đó cũng là uư điểm lớn rồi!

    Comment


    • #3
      Cái này theo ngu ý của mình thì mình cũng phải viết sẵn 1 cái firmware trên con 18F4550 chứ nhỉ ??? Đại loại là khi nhận A1 thì PIN_A1 sáng , nhận A2 thì chân PIN_A2 sáng và giá trị để thực hiền hàm delay mỗi hiệu ứng .... còn App trên máy tính thì chỉ việc ngồi tạo hiệu ứng điều khiên thôi phải hem ??? .... Có thể tương tự việc điều khiển LED qua giao tiếp USB của anh chuotdientu phải ko nhỉ ???

      Comment


      • #4
        Nguyên văn bởi KhoaiLuoc Xem bài viết
        Cái này theo ngu ý của mình thì mình cũng phải viết sẵn 1 cái firmware trên con 18F4550 chứ nhỉ ??? Đại loại là khi nhận A1 thì PIN_A1 sáng , nhận A2 thì chân PIN_A2 sáng và giá trị để thực hiền hàm delay mỗi hiệu ứng .... còn App trên máy tính thì chỉ việc ngồi tạo hiệu ứng điều khiên thôi phải hem ??? .... Có thể tương tự việc điều khiển LED qua giao tiếp USB của anh chuotdientu phải ko nhỉ ???
        Đúng rồi, PIC ko bít gì về hiệu ứng nó đang hiển thị, nó chỉ bít vị trí LED sáng và làm cho LED đó sáng thoy. Còn hiệu ứng đk = PC, xử lý trên PC, có thể tận dụng khá năng tính toán nhanh và RAM lớn để thực hiện những hiệu ứng phức tạp như những hình khối 3D.
        Computer Science major - Vietnamese-German University
        Sponsored by

        Comment


        • #5
          Nguyên văn bởi hungk41 Xem bài viết
          Mình vẫn chưa hiểu nguyên lý cho lắm, bạn có thể giải thích sơ qua được không. Mình cũng đã làm khối led 5x5x5 rồi nhưng chỉ lập trình với chip thôi. Muốn đưa phần mềm của mình sang được khối LED thì làm thế nào, mình nghĩ cái này chỉ có uư điểm là không tốn RAM thôi, nhưng đó cũng là uư điểm lớn rồi!
          Nguyên lý:
          Ban đầu ta sẽ chọn 1 hiệu ứng trên PC, PC sẽ xử lý hiệu ứng đó theo thời gian và xuất ra vị trí LED sáng truyền cho PIC. PIC nhận lấy và hiển thị.
          Việc xử lý là trên PC, PIC rất nhẹ nên ko cần xài PIC nhìu tiền đâu, 18F14K50 cũng đc rồi (tại vì có sẵn con 18F4550 nên xài lun)
          5x5x5 thì bạn nên lưu sẵn hiệu ứng trên PIC lun, ko cần PC. Lúc đó thay vì nhận tín hiệu từ PC, PIC sẽ tự mình xử lý hiệu ứng và hiển thị lun, nhưng chỉ đc hiệu ứng đơn giản thoy.
          Computer Science major - Vietnamese-German University
          Sponsored by

          Comment


          • #6
            Ban đầu ta sẽ chọn 1 hiệu ứng trên PC, PC sẽ xử lý hiệu ứng đó theo thời gian và xuất ra vị trí LED sáng truyền cho PIC. PIC nhận lấy và hiển thị.
            Bạn có thể nói rõ hơn không, PC sẽ xử lý tnào(về thời gian và truyền). Khi truyền xuống PIC thì truyền kiểu gì(Bulk, interrupt,…). Khi nhận được dữ liệu thì công việc tiếp theo của PIC là gì.
            Bởi vì khi mình làm trên PIC thì nó xử lý và quét bộ nhớ, còn đây là bộ nhớ là do PC thực hiện, như vậy mỗi lần PC truyền xuống PIC thì truyền bao nhiêu byte, những byte đó đại diện cho các hàng các cột hay là chỉ truyền lệnh thôi, còn PIC sẽ thực hiện tuỳ theo từng lệnh
            Mình gà quá vẫn chưa hiểu được!

            Comment


            • #7
              Mình hiểu thế này liệu có phải không nhé: PIC của mình vẫn có 1 mảng dữ liệu của các hàng và các cột. PIC sẽ liên tục đọc dữ liệu của các hàng và các cột xuất ra các cổng để hiển thị LED (thời gian quét có thể đặt trước hoặc thay đổi bằng phần mềm). Nhiệm vụ của PC là xủ lý dữ liệu của các hàng và cột trên máy tính(cả về dữ liệu và thời gian truyền) rồi truyền xuống PIC qua USB( thực ra có thể truyền theo kiểu gì cũng được), PIC nhận dữ liệu và lưu vào mảng nhớ trên PIC, và như thế đã thay đổi được dữ liệu trong quá trình quét. Như vậy là PIC chỉ có nhiệm vụ xuất nhập LED mà thôi!
              Có gì sai xin chỉ giáo!

              Comment


              • #8
                chuẩn rồi , pc xử lí ảnh ==> pic hiển thị thế là ok . Chỉ mổi cái tội muốn đem đi show hàng thì phải ke ke cái máy pc thì mới chạy củng thật bất tiện . Nhưng nếu là cube lớn thì với cách xử lí như trên thì muốn kiểu gì củng được kể cả RGB.

                Comment


                • #9
                  Nguyên văn bởi hungk41 Xem bài viết
                  Bạn có thể nói rõ hơn không, PC sẽ xử lý tnào(về thời gian và truyền). Khi truyền xuống PIC thì truyền kiểu gì(Bulk, interrupt,…). Khi nhận được dữ liệu thì công việc tiếp theo của PIC là gì.
                  Bởi vì khi mình làm trên PIC thì nó xử lý và quét bộ nhớ, còn đây là bộ nhớ là do PC thực hiện, như vậy mỗi lần PC truyền xuống PIC thì truyền bao nhiêu byte, những byte đó đại diện cho các hàng các cột hay là chỉ truyền lệnh thôi, còn PIC sẽ thực hiện tuỳ theo từng lệnh
                  Mình gà quá vẫn chưa hiểu được!
                  Về truyền dữ liệu, mình xài kiểu truyền Interrupt (do xài HID mà), tốc độ Full-Speed, quy ra khoảng 64 000 B/s (1 ms truyền đc 1 gói 64 byte). Thực ra, Interrupt truyền đc tới 64 byte 1 lần nhưng mất 1 byte để dùng làm report, thế nên 1 lần truyền chính xác đc có 63 byte à. 1 byte gồm 8 bit, tương ứng 8 LED, 512 LED thì mất 64 byte 1 khung. 1 giây cần 30 khung (frame per second - fps), mỗi frame mình truyền 2 lần, mỗi lần 32 byte.

                  Về chi tiết cách truyền và nhận: PIC sử dụng 2 timer cho việc này: timer 0 set là khoảng 30ms, timer 2 set khoảng 1ms.
                  Với timer 0, mỗi 30ms, nó gửi 1 tín hiệu 1 byte tới PC để yêu cầu PC gửi dữ liệu. Khi PC nhận đc gói tín hiệu, PC sẽ gửi lại 2 gói tín hiệu, mỗi gói 33 byte (1 byte thứ tự và 32 byte dữ liệu) cho PIC. PIC có 2 mảng matrix, 1 cái mới (new) và 1 cái cũ (old). Khi nhận từng gói từ PC, PIC lưu nó trong new. Khi nhận đủ 2 gói, nó chép new vào old. Old là matrix mà timer 2 sẽ sử dụng. Nói chung timer 0 dùng để truyền và nhận dữ liệu.
                  Timer 2, mỗi 1ms, nó sẽ lấy 1 phần (dữ liệu 1 lớp LED) của Old để gửi cho 74HC595, đồng thời kích hoạt lớp LED tương ứng. Nói chung timer 2 là timer dùng để quét LED.
                  Trong việc truyền nhận dữ liệu này, PIC chiếm vai trò chủ động (bà kon hay gọi là master - ông chủ), còn PC bị động (slave - nô lệ).

                  Trên PC, việc xử lý hoàn toàn độc lập với PIC. Cứ mỗi 30ms trên PC (thời gian này do PC quyết định, ko liên quan gì tới PIC hết), nó sẽ xử lý theo hiệu ứng đã chọn, và xuất ra 1 mảng gồm những LED sáng, và sau đó sẽ mã hóa thành mảng dữ liệu 64 byte để lưu vào trong 1 matrix trên PC. Khi PIC gửi yêu cầu, PC sẽ gửi thẳng cái matrix này nên ko phải chờ cho PC xử lý nữa.
                  Computer Science major - Vietnamese-German University
                  Sponsored by

                  Comment


                  • #10
                    mình chưa hiểu lắm về nguyên lý hoạt động
                    Last edited by vanquynh.cn; 06-04-2012, 09:49.

                    Comment


                    • #11
                      Nguyên văn bởi vanquynh.cn Xem bài viết
                      mình chưa hiểu lắm về nguyên lý hoạt động như thế nào cả bạn có the gửi cho minh biết sơ đồ nguyên lý được không để mình tìm hiểu . bạn gửi vào địa chi này cho minh nhé vanquynh.exe@gmail.com cám ơn bạn rất nhiều đã dành thời gian kchi giáo
                      Mình ghét nhất là những người xin sơ đồ nguyên lý nha, vi điều khiển mỗi người có 1 kiểu, thậm chí tui thay con 18F4550 thành 18F14K50 cũng đc. Làm gì phải copy y chang bản chính vậy, cái này tự suy ngẫm đi...
                      Computer Science major - Vietnamese-German University
                      Sponsored by

                      Comment


                      • #12
                        Bạn có thể cho bit bạn dùng soft gì để viết CT giao tiếp trên PC với PIC ko? Cậu có thể phổ biến HID cho anh em thưởng thức đc ko nhỉ?


                        Add: 97 Quán Nam - Lê Chân - Hải Phòng.
                        Tel: 031 518648 Phone: 0904 283 505

                        Comment


                        • #13
                          hi mình đang lập trình cho píc8f4550 bạn có tài lệu tiếng việt không ?
                          vả lại bạn có thể cho mình biết có cách nào truyền cách ly giữa máy tình với bản led cube đó không ?

                          Comment


                          • #14
                            Nguyên văn bởi imlanglavang Xem bài viết
                            hi mình đang lập trình cho píc8f4550 bạn có tài lệu tiếng việt không ?
                            vả lại bạn có thể cho mình biết có cách nào truyền cách ly giữa máy tình với bản led cube đó không ?
                            1. Tiếng Anh tệ thì làm cái gì cũng tệ, tài liệu tiếng Việt: google translate...
                            2. Thêm cái module RF transceiver thì cách li liền chứ gì... Nghe nói USB cũng có chuẩn Wireless USB nhưng ko rõ xài ra sao...
                            Computer Science major - Vietnamese-German University
                            Sponsored by

                            Comment


                            • #15
                              Nguyên văn bởi hoangdai Xem bài viết
                              Bạn có thể cho bit bạn dùng soft gì để viết CT giao tiếp trên PC với PIC ko? Cậu có thể phổ biến HID cho anh em thưởng thức đc ko nhỉ?
                              Cái này dễ lắm Đại, HID và CDC chỉ khác cái driver thôi, còn lập trình thì vài dòng là xong, PC có thể dùng VBasic hoặc C shap.
                              Nến em thích, và quan tâm thì liên hệ với anh, anh gởi cho code sample để em thí nghiệm, cái này hồi dạyowe ĐH BKhoa, anh có hướng dẫn cho nhiều sv làm rất tốt.

                              email của anh bên dưới

                              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