1 Giới Thiệu Mạch đếm sản phẩm dùng cảm biến hồng ngoại2 Mạch đếm sản phẩm dùng cảm biến hồng ngoại hai chiều3 Giải thích về Demo Bộ đếm hai chiều3.2 Các chức năng được giải thích3.3 Code chính

Giới Thiệu Mạch đếm sản phẩm dùng cảm biến hồng ngoại

*
*
*
*
*
Sơ đồ được sử dụng trong bản trình diễn bộ đếm đối tượng

Để điều khiển LED 7 đoạn, chúng ta cần có 7 PIN đầu ra kỹ thuật số như trong Hình 4. Ta cũng cần đọc thông tin từ hai cảm biến IR . Điều này yêu cầu sử dụng 9 chân kỹ thuật số.

Bạn đang xem: Mạch đếm sản phẩm dùng led hồng ngoại

Trong trường hợp, ta đã sử dụng chân từ D2 đến D10 của Arduino. Để làm rõ ràng hơn, chúng tôi đã xác định số PIN để gán tên riêng cho chúng. Lưu ý rằng, các tham số không đổi tại thời gian chạy và do đó, được xác định tại thời điểm biên dịch, chúng tôi đang sử dụng các chỉ thị tiền xử lý.

Sử dụng lệnh “define”, chúng ta không chỉ giảm chiếm dụng bộ nhớ mà còn tối ưu hóa việc thực thi chương trình.

Chúng ta được xác định các chân kỹ thuật số (từ D2 đến D8) mà sẽ sử dụng để điều khiển led là DISP_PIN_x (x từ 0 đến 6). Hai chân đầu ra của cảm biến IR (D9 và D10) đã được xác định là IR1 và IR2.

Xem thêm: Giải Bài Tập Vật Lý 9 Bài 48 Mắt, Giải Bài Tập Vật Lý 9 Bài 48: Mắt


/*===========================================================================*//* PIN-map. *//*===========================================================================*/#define DISP_PIN_0 2 /* digital pin input for segment A */#define DISP_PIN_1 3 /* digital pin input for segment B */#define DISP_PIN_2 4 /* digital pin input for segment C */#define DISP_PIN_3 5 /* digital pin input for segment D */#define DISP_PIN_4 6 /* digital pin input for segment E */#define DISP_PIN_5 7 /* digital pin input for segment F */#define DISP_PIN_6 8 /* digital pin input for segment G */#define IR1 9 /* digital pin input for ir sensor */#define IR2 10 /* digital pin input for ir sensor */
Có một số giá trị không đổi khác được khai báo trong code của chúng tôi, dù sao để dễ sử dụng, chúng tôi ưu tiên lưu trữ chúng vào một mảng bidimensional được gọi là displaySEG là một Lookup table: nói cách khác, nó là một tập hợp các mã PIN đặt trước cần thiết để hiển thị một chữ số nhất định trên màn hình hiển thị.

Trong khi các hàng biểu thị chữ số, các cột biểu thị từng đoạn (LED) của màn hình. Ví dụ, để hiển thị số 0, tất cả các đoạn ngoại trừ G phải được đặt là CAO (xem Hình 2). Phần tử đầu tiên của mảng lưu trữ cấu hình theo yêu cầu của mỗi DISP_PIN để hiển thị 0. Vì vậy, chúng ta có thể sử dụng mảng displaySEG <0> trong một vòng lặp để đặt từng DISP_PIN theo giá trị đặt trước của chúng ta và lấy số 0 của chúng ta.

/*===========================================================================*//* Lookup table. *//*===========================================================================*/const byte displaySEG = {/* A B C D E F G */{ HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW }, /* 0 */{ LOW, HIGH, HIGH, LOW, LOW, LOW, LOW }, /* 1 */{ HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH }, /* 2 */{ HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH }, /* 3 */{ LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH }, /* 4 */{ HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH }, /* 5 */{ HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH }, /* 6 */{ HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW }, /* 7 */{ HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH }, /* 8 */{ HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH }, /* 9 */}; Chúng ta cần các biến bổ sung là trạng thái của cảm biến IR được đặt tên là IRx_out (với x 1 hoặc 2), một biến để lưu trữ giá trị đếm và một biến chung được sử dụng trong các vòng lặp.