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.

Mẫu banner quảng cáoMẫu banner quảng cáoMẫu banner quảng cáoMẫu banner quảng cáo
          
Kết quả 1 đến 3 của 3

Chủ đề: Arduino - Mỗi ngày một ví dụ, từ dễ tới khó - VD001 - LED Blink

  1. #1
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,663
    Cám ơn
    1,722
    Được cám ơn 5,293 lần
           ở 2,592 bài viết

    Cool Arduino - Mỗi ngày một ví dụ, từ dễ tới khó - VD001 - LED Blink

    Arduino - Mỗi ngày một ví dụ, từ dễ tới khó - VD001 - LED Blink

    Để bắt đầu làm quen với Arduino chúng ta sẽ đi từ những ví dụ dễ rồi khó dần. Thông quá đó chúng ta sẽ nắm được các cú pháp, các hàm..
    Việc lập trình trên Arduino khá đơn giản, chỉ là việc kết nối các hàm lại với nhau. Người sử dụng không cần quan tâm nhiều đến các phần cứng như vi xử lý (VXL), cấu trúc VXL, tốc độ dao động, các cổng kết nối (PORT), RAM, ROM, EPROM v.v... Điều đó đẫn đến việc tiếp cận & xử dụng một cách dễ dàng.. dù trước đó người dùng không biết gì về điện thì theo các hướng dẫn sẽ dần có thể thực hiện được một cách nhanh chóng.

    Đương nhiên.. việc xây dựng nhiều hàm & thư viện tương thích với rất nhiều VXL có nền tảng khác nhau.. nên Arduino có nhiều ưu điểm, song song đó cũng có nhiều nhược điểm. CKD tạm kết thế này:
    Ưu
    - Cái đáng nói nhất là đơn giản hóa quá trình xử dụng cũng như lập trình. Cắm là chạy
    - Cộng đồng dùng arduino rất đông, có rất nhiều ví dụ được chia sẽ trên internet, phần lớn đều có dưới dạng mã nguồn mở.
    - Thư viện ứng dụng cũng rất nhiều.. có thể ứng dụng được trong hầu hết các yêu cầu dân dụng trong cuộc sông, cũng như các vấn đề điều khiển tự động trong các máy đơn giản. Có thể điều khiển robot, cnc, smart home v.v...

    Nhược
    - Cái nhược duy nhất theo CKD đánh giá là từ việc tương thích rất mạnh trên phần cứng dẫn đến tốc độ làm việc chậm. Việc này có thể khắc phục được nếu người dùng hiểu rỏ về C/C+/C# v.v... cũng như am hiểu về cấu trúc VXL.


    Để bắt đầu làm quen chúng ta sẽ xem qua Ví dụ chớp LED (LED Blink) có sẵn trong trình IDE Arduino.
    Nhiệm vụ:
    Viết một đoạn Code trong Arduino để thực hiện việc tắt/ mở đèn LED (Light Emitting Diode) một cách có chu kỳ (chớp)

    Đấu nối




    Mã (code/source) chương trình
    Mã:
    // cac xac lap cho chuong trinh
    void setup()
    {
      // Chon chan 13 làm Output.
      pinMode(13, OUTPUT);
    }
    
    // chuong trinh chinh thuc hien viec chop LED
    void loop()
    {
      // mo LED, chan 13 se co muc cao (HIGHT)
      digitalWrite(13, HIGH);
      // cho 1000ms ~ 1s
      delay(1000);
      // tat LED, chan 13 se co muc thap (LOW)
      digitalWrite(13, LOW);
      // cho 1000ms ~ 1s
      delay(1000);
    }
    Trong phần này chúng ta sẽ phần tích dần cấu trúc chương trình.
    Phần thân chương trình được chia làm 02 phần
    Phần 01, khởi động chương trình
    void setup()
    {

    [nội dung]
    }

    Trong phần này, chúng ta có thể khai báo các chân làm nhiệm vụ nhận hoặc phát tín hiệu (input/output), hoặc các chức năng đọc tín hiệu tương tự (analog - ADC), tính năng PWM v.v....
    Trong phần này cũng có thể khai báo các biến để lưu dữ liệu trong quá trình chương trình làm việc.

    Phần 02, thân chương trình
    void loop()
    {

    [nội dung]
    }

    Phần này sẽ mô tả cũng như cách thức mà chương trình làm việc. Nó sẽ thực hiện tuần tự các dòng lệnh [nội dung] xong sẽ tự động chạy lại các dòng lệnh [nội dung] mỗi khi kết thức.

    Ghi chú:
    - Phần tô đậm, màu đỏ là bắt buộc.
    - Phần trong ngoặt vuông [..] là tùy chọn, có hoặc không cũng được tùy theo mục đích xử dụng.
    - Ngoài ra trong ví dụ này chúng ta không cần đấu nối thêm LED & điện trở từ bên ngoài vẫn có thể thấy được mạch hoạt động thế nào. Trên board đã có sẵn LED ký hiệu là L, đã được kết nối vào chân 13 rồi.

    Xem thêm: http://arduino.cc/en/tutorial/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ó 3 thành viên đã cám ơn CKD cho bài viết hữu ích này:


  3. #2
    Thợ bậc 6 CKD's Avatar
    Ngày tham gia
    Nov 2013
    Bài viết
    6,663
    Cám ơn
    1,722
    Được cám ơn 5,293 lần
           ở 2,592 bài viết
    Trở lại với phần code/source chương trình
    Mã:
    // cac xac lap cho chuong trinh
    void setup()
    {
      // Chon chan 13 làm Output.
      pinMode(13, OUTPUT);
    }
    
    // chuong trinh chinh thuc hien viec chop LED
    void loop()
    {
      // mo LED, chan 13 se co muc cao (HIGHT)
      digitalWrite(13, HIGH);
      // cho 1000ms ~ 1s
      delay(1000);
      // tat LED, chan 13 se co muc thap (LOW)
      digitalWrite(13, LOW);
      // cho 1000ms ~ 1s
      delay(1000);
    }
    Ngoài phần thân chương trình void setupvoid loop như đã nói.. ta thấy thêm phần nội dung có dùng các lệnh:

    ta thấy lệnh pinMod(13, OUTPUT) là lệnh cho Arduino biết dùng chân nào làm chức năng vào/ra (input/output) dữ liệu.
    có cú pháp tổng quát

    pinMode(pin, mode)
    Trong đó:
    - pin là số thứ tự chân cần dùng, với Arduino UNO thì x từ 0..13, A0..A5
    - mode là chế độ hoạt động vào là INPUT hoặc ra là OUTPUT

    ta thấy lệnh digitalWrite(13, HIGHT) là lệnh cho Arduino biết xuất 1 tín hiệu mức cao hoặc thấp (ON/OFF) ra một chân nào đó.
    có cú pháp tổng quát
    digitalWrite(pin, value)
    Trong đó:
    - pin là số thứ tự chân cần dùng, với Arduino UNO thì x từ 0..13, A0..A5
    - value là trạng thái mong muốn cao hoặc thấp (ON/OFF), tương ứng mức thấp là LOW, mức cao là HIGHT

    ta thấy lệnh delay(value) là lệnh cho Arduino biết xuất cần phải dừng lại chờ một khoảng thời gian rồi mới làm việc tiếp.
    có cú pháp tổng quát
    delay(value)
    Trong đó:
    - value là giá trị thời gian phải chờ dưới dạng số nguyên. Đơn vị được tính là mili giây (ms). Khi thực hiện VD các bạn có thể thay đổi giá trị này & xem hiệu ứng chớp LED để hiểu thêm.

    ta thấy các ghi chú được thể hiện trong phần nội dung. Khởi đầu các ghi chú là dấu //
    DT: O7837277II - CKD's Youtube Channel - Facebook - Tổng hợp chủ đề
    17 ds 3, Thạnh Mỹ Lợi, Q2, tp.HCM

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


  5. #3
    Thợ cả
    Ngày tham gia
    Nov 2013
    Bài viết
    5,907
    Cám ơn
    2,193
    Được cám ơn 3,260 lần
           ở 2,036 bài viết
    lan gthang gập cái này, ko biết post đâu, cụ ckd cho em ké nhé





    source code
    https://github.com/neuroprod/ClosedLoopDriver
    Lần sửa cuối bởi nhatson, ngày 13-03-2015 lúc 09:09:10 PM.

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


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

  1. Mỗi tuần một clip hay về máy móc
    Bởi anhcos trong diễn đàn Video clip hay
    Trả lời: 852
    Bài viết cuối: 09-12-2019, 05:15:05 PM
  2. Trả lời: 54
    Bài viết cuối: 29-07-2016, 05:24:25 PM
  3. CKD - Fun - Hãy thư giản sau mỗi ngày làm việc.
    Bởi CKD trong diễn đàn Góc nhiếp ảnh
    Trả lời: 137
    Bài viết cuối: 16-06-2016, 02:30:16 PM
  4. Trả lời: 5
    Bài viết cuối: 06-01-2015, 01:27:36 PM
  5. Đủ loại anpha, 2 pha , 5 pha, từ nhỏ tới lớn
    Bởi quangnguyen89ck trong diễn đàn Gian hàng hết hiệu lực
    Trả lời: 0
    Bài viết cuối: 02-04-2014, 11:37:30 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
  •