Thông báo

Collapse
No announcement yet.

cho em hỏi led 7 đoạn arduino

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

  • cho em hỏi led 7 đoạn arduino

    Hiện tại có 1 máy hiện 3 con số bằng 3 led 7 đoạn, các chân a,b,c... của 3 led được nối với nhau.
    Em muốn đọc tín hiệu của các chân đó để lấy 3 số đó ra hiển thị LCD, em dùng arduino , nhưng em chỉ lấy được số của led cuối cùng. còn 2 led trước không được mặc dù đã tắt hay mở các chân cấp nguồn cho từng led.
    Các bác chỉ giáo giúp em, máy đó em không can thiệp vào lập trình được .

  • #2
    Có gì đâu. Anh dùng 7 chân vdk đọc giá trị của 7 chân xuất giá trị cho led. Gán giá trị 7 bit này cho biến X chẳng hạn. Dùng 3 chân vdk đọc giá trị 3 chân điều khiển cấp nguồn của 3 led rùi gán cho 3 biến x1. X2. X3 chẳng hạn. Tiếp theo lập hàm if nếu x1=1 (tùy loại led mà có thể nó là 1 hay 0) thì led1=x nếu x2=1 thì led2=X...

    Comment


    • #3
      Chủ thớt cho mình hỏi ké tý nha , mèo giỏi ghê cái gì cũng biết vậy cho mình hỏi cái trạm cắm dây ngay cạnh vdk nó dùng chương trình gì để liên lạc với máy tính vậy .

      Comment


      • #4
        Để mấy a chê cười rồi ạ. Cái môn này e cũng lơ mơ lắm. Mấy a admin diễn đàn này rất giỏi về vdk ấy ạ. Mấy cái chân cắm a nói đến chắc là dùng để nạp chương trình (cập nhật) cho vdk. Nó cắm vào mạch nạp và mạch nạp nối với máy tính qua cổng usb chẳng hạn. Máy tính chạy phần mềm của mạch nạp để điều khiển mạch nạp file hex đã viết vào vdk...

        Comment


        • #5
          Mình cũng làm như bạn mèo.nhưng đó là mình xuất ra led, giờ mình mún đọc từng con led và không chỉnh sửa được chương trình của họ.vd led hiển thị 3số 123.mình chỉ lấy được số 3.vì nó là tín hiệu cuối cùng.dù mình đã tắt led cuối đi.thì 7 giá trị cũng hiện là số 3.hjxxx.bạn mèo có thể nói rỏ hơn được không.

          Comment


          • #6
            - dạ để dễ hiểu thì anh làm thế này ạ:
            1. cho 3 chân đọc giá trị của 3 chân điều khiển nguồn cho 3 led 7 đoạn. giả sử nó là khiển bằng mức 1. và gán lần lượt vào 3 biến led1, led2, led3
            2. cho 7 chân mcu đọc giá trị của 7 chân xuất tín hiệu cho led, gán vào biến sohienthiLED
            2. lập hàm điều kiện (if...)
            nếu led1 ==1 thì gán giá trị biến sohienthiLED1=sohienthiLED
            nếu led2 ==1 thì gán giá trị biến sohienthiLED2=sohienthiLED
            nếu led3 ==1 thì gán giá trị biến sohienthiLED3=sohienthiLED
            3. bây giờ thì CHẮC CHẮN là anh đã có số hiển thị của 3 con led rồi ạ ,ấy là các biến sohienthiLED1, sohienthiLED2, sohienthiLED3 (ko bao giờ có chuyện 3 biến này giống nhau trong khi 3 số trên led khác nhau)
            4. anh viết tiếp phần hiển thị ra lcd từ các con số vừa nhận được ạ. vấn đề là anh ko nên dùng hàm delay nào quá lâu (vài chục mi li giây chẳng hạn, mà tốt nhất là vứt cái hàm delay đi) vì như vậy trong lúc mcu của anh chạy dòng lệnh vô nghĩa để câu thời gian thì đã quá 1 chu kỳ quét của 1 con led nào đó làm có thể nó đã nhảy sang số khác rùi ạ
            5. cho vào vòng lặp vô hạn...

            Comment


            • #7
              Hi. phoxom113 Vậy bạn xem lại cách làm mạch có vấn đề gì k đã ha.
              Ở #5 bạn có nói là chỉ lấy được số 3 trong 3 số 123 ở máy mẫu. Mà số 3 là giá trị cuối cùng, vậy có nghĩa bạn đang không dùng hàm delay đúng không, vậy tại sao lại có trường hợp trái ngược như vậy, phải chăng do đấu nối chưa đúng hay bị nhầm gì đó?
              Bác mèomướp cho em hỏi ở #6 bác có nói phần đọc và gán giá trị cho các led số, vậy nếu ở máy mẫu của bạn phoxom113 chân nguồn chung của 3 led là chung A thì 7 bit đọc được sẽ là mức 0 khi led đó được hiển thị, nhưng giả sử ở máy mẫu 3 led kia đều là A chung nhưng không được kéo lên Vcc mà lại được 1 con ic nào đó quét riêng thì 7 bit đọc được khi này có chính xác k ạ?
              Với cả nếu là A chung thì bit cần đọc là những bit 0, vậy nếu chưa xác lập mức cao thấp trước thì mcu có nhầm lẫn không ạ? (Vì thường thì quét led có nhiều kiểu khiển dòng áp khác nhau, dĩ nhiên mức cao thấp của các kiểu thiết kế cũng khác nhau, kéo theo là ngưỡng áp cao và thấp của những kiểu đó cũng khác nhau và chưa biết rõ máy mẫu của bạn phoxom113 thiết kế kireut gì, trong khi ngưỡng mức cao và thấp của mcu là khá nhỏ)

              ​​​​ Đấy là giả sử khiển A chung còn nếu khiển K chung thì còn khác nữa...

              Hi. Arduino em không rành lắm nhưng mà em thấy mấy chỗ hơi lạ thôi.
              ​​​​​​​Hi có gì sai các bác bỏ qua cho em nhé!

              Comment


              • #8
                Nguyên văn bởi phoxom113 Xem bài viết
                Mình cũng làm như bạn mèo.nhưng đó là mình xuất ra led, giờ mình mún đọc từng con led và không chỉnh sửa được chương trình của họ.vd led hiển thị 3số 123.mình chỉ lấy được số 3.vì nó là tín hiệu cuối cùng.dù mình đã tắt led cuối đi.thì 7 giá trị cũng hiện là số 3.hjxxx.bạn mèo có thể nói rỏ hơn được không.
                Còn chỗ này bạn nói bạn làm như bác meomuop nói mà cái chỗ chân chung của 3 led kia là A hay K?
                M nghĩ là b phải dùng led để xuất ra giống led trong máy mẫu chứ hả vì khi xuất ra led thì bạn xuất là giá trị của biến gán rồi, (nghĩa là giá trị xuất bằng với giá trị mẫu của 7 bit (xét về mức thấp và cao thôi)).
                Còn nếu b dùng led ngược cực chung với led mẫu thì rất có thể số kia là do nhiễu hay sai sót mà ra thôi.
                Với lại có thể b nên kiểm tra rõ tính chất led mẫu cũng như cách máy mẫu quét cho nó cho chắc đã.

                Cái này m góp ý thôi nhé, sai sót mọi người lượng thứ cho với ạ!

                Comment


                • #9
                  Và bác meomuop cho em hỏi xíu, ở #6 bác có nói ý 1,2 thì là cách đọc giá trị của máy mẫu nhưng với y3 cho em hỏi liệu khi đọc giá trị từ máy mẫu thì có cần phải treo áp cho 7 chân đọc giá trị này không. Vì thực tế các ic quét thì mức cao và thấp luôn không bằng Vdd và Vss được, có cái lệch ít và có cái lệch nhiều, vậy liệu mcu đọc nó cocó tự "hiểu" là cái nó đọc là cao hay thấp không khi không có cái mốc so sánh ạ?
                  Và còn cái này nữa, vẫn theo giả sử của bác, máy mẫu thù chân khiển chung là mức 1 tức là A chung và bit cần đọc sẽ là 0 khi led được hiển thị. Nhưng giả sử tại thời điểm led thứ 1 (theo 3 số là 123 chẳng hạn) hiển thị thì bản thân các chân abc... Tạo thành 1 con số nào đó thì có nghĩa các chân không tham gia tạo số sẽ lên mức cao (hoặc để trống, nhưng để trống sẽ không thể vì dễ bị nhiễu), vậy khi đó led 2 và led 3 chưa hiển thị vì chân A của 2 led này không có mức cao => 7 bit đọc được khi naynày sẽ như thế nào ạ?
                  Hi có thể em hiểu sai vấn đề nên mới hỏi như vậy.
                  Hi cũng như bao lần, có gì sai mong các bác chỉ giáo và lượng thứ cho em!

                  Comment


                  • #10
                    - anh @thang..., khi vi điều khiển đã xuất ra led 7 đoạn thì chân của nó phải là tín hiệu rõ ràng bắt buộc phải là mức 1 hoặc 0 có vậy thì led mới sáng hay tắt được, về khoản gai nhiễu nếu có thì nó sẽ phóng qua led về nguồn ( GND hay VCC tùy vào loại led ạ).
                    - "...................7 bit đọc được khi naynày sẽ như thế nào ạ?"
                    khi chưa đọc được giá trị mới thì các giá trị của các biến led1,2,3 sẽ là giá trị trước đó ạ
                    - vấn đề chủ thớt có lẽ là nằm ở chu kỳ quét đọc giá trị các chân khiển led bị chậm so với chu kỳ của led lên gây ra lỗi. rất có thể do thớt lập hàm delay để hiển thị led 7 đoạn lên...

                    Comment


                    • #11
                      Nguyên văn bởi mèomướp Xem bài viết
                      Để mấy a chê cười rồi ạ. Cái môn này e cũng lơ mơ lắm. Mấy a admin diễn đàn này rất giỏi về vdk ấy ạ. Mấy cái chân cắm a nói đến chắc là dùng để nạp chương trình (cập nhật) cho vdk. Nó cắm vào mạch nạp và mạch nạp nối với máy tính qua cổng usb chẳng hạn. Máy tính chạy phần mềm của mạch nạp để điều khiển mạch nạp file hex đã viết vào vdk...
                      Trước mình có vào blog của anh việt kiều nào có phần mềm để giao tiếp với máy tính qua cổng usb không qua mạch nạp chưa tải được đã quên mất địa chỉ , vậy theo còm của mèo thì giờ mình câu dây từ trạm đó vào mạch nạp xong dùng phần mềm mạch nạp để xem tình trạng của vdk đúng không .

                      Comment


                      • #12
                        - 2 vấn đề khác nhau anh ơi. giao tiếp nạp chương trình thì chỉ để nạp code cho con vdk thôi ạ, ko có cái code này thì vdk chỉ là 1 cục bán dẫn vô dụng ạ
                        - giao tiếp usb hay qua mạng, cổng nối tiếp hay song song hay gì gì đó là để truyền dữ liệu qua lại giữa vdk và các thiết bị khác ko riêng gì máy tính (dữ liệu này có thể là vdk nhận từ máy tính, cũng có thể máy tính nhận từ vdk ví như bàn phím hay chuột chẳng hạn), và thường thì cũng ko phải để xem tình trạng vdk đâu ạ. để vdk có cái giao tiếp này cũng phải viết code cho nó rùi nạp qua mạch nạp ấy...
                        - về ......TÌNH TRẠNG VDK.... thì hông rõ ý của a lắm nhưng đoán mò rằng a muốn nói đến cái code lập trình mình đã nạp cho con vdk chạy. cái này thì hông thể xem hay sao chép được đâu ạ, nó là vấn đề bảo mật và là sự sống còn của nhà sản xuất bởi chẳng ai dám dùng con vdk dễ dàng bị người khác sao chép code đánh cắp bản quyền trí tuệ...

                        Comment


                        • #13
                          bạn mèo cho minh hỏi. lập trình C viết code cho arduino. sẽ thực thi từ trên xuống dưới đúng không? vd mình có .
                          void demso();
                          void layso();
                          void loop() {
                          demso(123);
                          delay(1000);
                          layso();
                          }
                          thì khi này cái demso(123) nó sẽ chạy hết cả 3 số 123 xong rồi nó mới thực thi chương trình layso().nếu như vậy thì mình sẽ không lấy tín hiệu được của 3 số đúng không bạn.

                          Comment


                          • #14
                            - dạ đúng rồi ạ, nó chạy từ trên xuống, lấy được cả 3 số chứ. anh cứ cho nó quét nhận giá trị nạp cho 3 biến đại diện cho 3led rùi sau đó bỏ vào hàm hiển thị ra lcd ạ. vấn đề nghiêm trọng nhất là anh phải bỏ ngay cái hàm delay đi ạ, vì delay nhiều hơn thời gian quét nhận tín hiệu thì bỏ mất phần lớn chu kỳ hiển thị của led đầu ra thì sẽ bị sai kết quả ạ...

                            Comment


                            • #15
                              Nguyên văn bởi mèomướp Xem bài viết
                              - 2 vấn đề khác nhau anh ơi. giao tiếp nạp chương trình thì chỉ để nạp code cho con vdk thôi ạ, ko có cái code này thì vdk chỉ là 1 cục bán dẫn vô dụng ạ
                              - giao tiếp usb hay qua mạng, cổng nối tiếp hay song song hay gì gì đó là để truyền dữ liệu qua lại giữa vdk và các thiết bị khác ko riêng gì máy tính (dữ liệu này có thể là vdk nhận từ máy tính, cũng có thể máy tính nhận từ vdk ví như bàn phím hay chuột chẳng hạn), và thường thì cũng ko phải để xem tình trạng vdk đâu ạ. để vdk có cái giao tiếp này cũng phải viết code cho nó rùi nạp qua mạch nạp ấy...
                              - về ......TÌNH TRẠNG VDK.... thì hông rõ ý của a lắm nhưng đoán mò rằng a muốn nói đến cái code lập trình mình đã nạp cho con vdk chạy. cái này thì hông thể xem hay sao chép được đâu ạ, nó là vấn đề bảo mật và là sự sống còn của nhà sản xuất bởi chẳng ai dám dùng con vdk dễ dàng bị người khác sao chép code đánh cắp bản quyền trí tuệ...
                              Đoán đúng có một nữa thôi , cái này thì mình có code gốc chỉ cái phần mềm giao tiếp là không vì hư ổ cứng không phục hồi được trước thì tháo vdk ra cho vào mạch nạp mở phần mềm ra rồi thì ghi , đọc gì thì làm nay mình muốn giao tiếp không tháo vdk không dùng mạch nạp chỉ dùng dây nối từ laptop tới trạm cắm trên bo cho gọn .

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X