1. Chú ý: Các bạn nên tham khảo Nội quy trước khi viết bài (click vào liên kết bên dưới).
    * Nội quy và Thông báo diễn đàn CNCProVN.com
    * Nếu bạn thấy hứng thú với bài viết. Hãy dùng chức năng Share to facebook để chia sẻ bài viết lên facebook.

          
Kết quả 1 đến 20 của 29

Chủ đề: Arduino - Quadrature Encoder reader

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #4
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,678
    Cám ơn
    1,737
    Được cám ơn 5,330 lần
           ở 2,595 bài viết

    Cool

    Ngoài làm cái mạch thì phải chuẩn bị phần code cho Arduino nữa..
    Phần code thực thi vài nhiệm vụ như sau.
    - Khai báo các pinout, các thư viện có sử dụng.
    - Phần xuất tín hiệu, điều khiển LCD.
    - Phần nhận tín hiệu encoder & đếm.

    1. Khai báo sử dụng thư viện.
    Mã:
     /*
     Use a 16x2 LCD display.  The LiquidCrystal library works with all LCD displays that are compatible with the 
     Hitachi HD44780 driver. There are many of them out there, and you  can usually tell them by the 16-pin interface.
     The circuit:
     * LCD RS pin to digital pin 8
     * LCD En pin to digital pin 9
     * LCD D4 pin to digital pin 4
     * LCD D5 pin to digital pin 5
     * LCD D6 pin to digital pin 6
     * LCD D7 pin to digital pin 7
     * LCD R/W pin to ground
     * 10K resistor:
     * ends to +5V and ground
     * wiper to LCD VO pin (pin 3)
     */
    #include <LiquidCrystal.h>
    // initialize the library with the numbers of the interface pins
    //                RS  EN  D4  D5 D6 D7
    LiquidCrystal lcd( 8,  9,  4,  5, 6, 7);
    Sử dụng thư viện LCD của Arduino. Khai báo
    #include <LiquidCrystal.h>
    Khởi tạo biến cho LCD, sử dụng các pinout tương RS EN D4 D5 D6 D7 ứng với các pin 9 8 4 5 6 7.
    LiquidCrystal lcd( 8, 9, 4, 5, 6, 7);

    2. Khai báo pinout
    Mã:
    void setup()
    {
      // setup the LCD's number of columns and rows: 
      lcd.begin(16, 2);  
      // startup LOGO  
      lcd.setCursor(4,0);
      lcd.print("CNCProVN");
      lcd.setCursor(2,1);
      lcd.print("Pham Duy Anh");
      delay(1000);
      lcd.clear();
      // setup pin in/out
      pinMode(encoderPinA, INPUT);
      pinMode(encoderPinB, INPUT);
      
      attachInterrupt(1, doEncoder, RISING);   //trigger when the pin goes from low hight
    }
    Khởi tạo lcd 16x2 (16 ký tự, 2 dòng)
    lcd.begin(16, 2);
    Khai báo pinout.
    pinMode(pin, mode)
    Với pin là số pin trên Arduino, mode là chế độ làm việc: INPUT, OUTPUT hoặc INPUT_PULLUP.
    * INPUT là chế độ làm việc nhận tín hiệu.
    * INPUT_PULLUP là chế độ làm việc nhận tín hiệu có điện trở kéo lên.
    * OUTPUT là chế độ làm việc xuất tín hiệu
    Khai báo sử dụng ngắt ngoài.
    attachInterrupt(interrupt, function, mode)
    Với interrupt là số ngắt (với arduino UNO thì có ngắt 0 & 1), function là chương trình con được gọi khi có ngắt, mode là chế độ hoạt động: LOW, CHANGE, RISING, FALLING
    * LOW ngắt sẽ thực thi khi tín hiệu ở mức Low.
    * CHANGE ngắt sẽ thực thi khi tín hiệu thay đổi trạng thái từ low->high hoặc hight->low
    * RISING ngắt sẽ thực thi khi tín hiệu thay đổi trạng thái từ low->high
    * FALLING ngắt sẽ thực thi khi tín hiệu thay đổi trạng thái từ hight->low

    Xem thêm Arduino - Mỗi ngày một ví dụ, từ dễ tới khó - VD001 - LED Blink
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

  2. Có 2 thành viên đã cám ơn CKD cho bài viết hữu ích này:


Các Chủ đề tương tự

  1. Encoder.. là gì?
    Bởi CKD trong diễn đàn Điện - Điện tử - Tự động hóa
    Trả lời: 20
    Bài viết cuối: 18-05-2018, 09:53:42 PM
  2. Trả lời: 54
    Bài viết cuối: 29-07-2016, 05:24:25 PM
  3. Stepperature: Open Source Quadrature Hand Wheel
    Bởi anhxco trong diễn đàn Break Out Board, Controller
    Trả lời: 18
    Bài viết cuối: 04-02-2015, 11:29:47 AM
  4. Trả lời: 5
    Bài viết cuối: 06-01-2015, 01:27:36 PM
  5. cần mua encoder 250 và 400 xung
    Bởi ghoang trong diễn đàn Cần mua
    Trả lời: 3
    Bài viết cuối: 26-12-2013, 02:28:12 PM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •