Mục lục:
- Quân nhu
- Bước 1: Xác định cách thức hoạt động: Đèn giao thông cho người đi bộ
- Bước 2: Xây dựng mạch
- Bước 3: Tạo Máy trạng thái
- Bước 4: Chạy ví dụ
- Bước 5: Tạo mã C ++
- Bước 6: Lấy ví dụ
Video: State Machine trên Arduino - Đèn giao thông cho người đi bộ: 6 bước (có Hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Xin chào! Tôi sẽ chỉ cho bạn cách lập trình đèn giao thông dành cho người đi bộ cho Arduino trong C ++ với một máy trạng thái hữu hạn bằng cách sử dụng Công cụ Statechart YAKINDU. Điều này sẽ chứng minh sức mạnh của máy trạng thái và có thể được sử dụng làm bản thiết kế cho các dự án tiếp theo.
Quân nhu
Bạn chỉ cần một Arduino, một số nút bấm, đèn LED, Jumper và điện trở.
Phần cứng
- 2x nút bấm
- 2x Đèn giao thông hoặc bạn có thể sử dụng đèn LED với điện trở 220 Ohm
- 2x điện trở 10k Ohm
- Breadboard
- Jumper
- Arduino Uno / Mega (hoặc bất kỳ loại nào khác, có ít nhất 8 GPIO)
Phần mềm
- Công cụ Statechart YAKINDU
- Eclipse C ++ IDE dành cho Arduino
Bước 1: Xác định cách thức hoạt động: Đèn giao thông cho người đi bộ
Đầu tiên, chúng ta cần xác định rõ đèn giao thông dành cho người đi bộ phải hoạt động như thế nào. Tôi đã cố gắng tóm tắt các điểm gạch đầu dòng:
- Hai đèn giao thông được sử dụng - một đèn dành cho ô tô, đèn còn lại dành cho người đi bộ
- Có thể bật đèn giao thông bằng cách sử dụng một nút
- Người đi bộ có thể yêu cầu băng qua đường bằng cách nhấn nút
- Đèn giao thông đã tắt được biểu thị bằng cách nhấp nháy cả hai đèn LED màu vàng
- Sau khi bật, đèn giao thông chờ 10 giây ở chế độ an toàn
- Sau chế độ an toàn, ô tô luôn có đèn xanh cho đến khi người đi bộ bắt đầu yêu cầu
- Yêu cầu người đi bộ sang đường được biểu thị bằng đèn LED màu vàng bật tắt
Ngoài ra, có một số sự kiện thời gian tùy thuộc vào cách hoạt động của đèn giao thông.
Bước 2: Xây dựng mạch
Hãy bắt đầu thiết lập mạch. Trong ví dụ của tôi, như bạn có thể thấy trên hình ảnh xem trước, tôi đã sử dụng Arduino Mega 2560, nhưng mọi Arduino khác có ít nhất tám GPIO sẽ ổn. Ngoài ra, tôi đã mua một số đèn giao thông 5V tại Amazon. Chỉ cần tìm kiếm Traffic Light Arduino. Nếu không, bạn có thể chỉ cần sử dụng sáu đèn LED khác nhau. Hơn nữa, bạn cần hai nút nhấn và hai điện trở 10k Ohm.
Ba đèn LED bên trái được sử dụng cho giao thông ô tô và ba đèn LED bên phải cho người đi bộ, trong đó đèn màu vàng có thể cho biết yêu cầu.
Bước 3: Tạo Máy trạng thái
Vì vậy, như bạn có thể thấy, có hai trạng thái chính với các thành viên tổng hợp - trạng thái bật và trạng thái tắt. Bạn có thể chuyển đổi giữa cả hai trạng thái bằng cách sử dụng sự kiện Bật tắt, được kết nối với nút BẬT / TẮT. Ở trạng thái ban đầu, trạng thái tắt, cả hai đèn LED màu vàng bắt đầu nhấp nháy mỗi giây. Khi đèn giao thông đã được bật, nó sẽ bắt đầu ở vị trí An toàn nhất. Sau 10 giây, hành vi thông thường của đèn giao thông sẽ được xử lý. Đèn LED màu đỏ và vàng sẽ được bật ở trạng thái StreetPrepare và đèn giao thông chuyển sang màu xanh lục sau 2 giây nữa. Từ bây giờ, máy trạng thái đang chờ sự kiện walkRequest, được kết nối với nút thứ hai. Sau khi gửi sự kiện, yêu cầu sẽ được biểu thị bằng cách bật tắt đèn LED màu vàng mỗi giây ở trạng thái Đang chạy. 7 giây sau, đèn giao thông sẽ chuyển sang màu vàng trước rồi chuyển sang màu đỏ cho đến khi người đi bộ nhận được tín hiệu đi ở trạng thái dành cho Người đi bộ Xanh. Sau đó, PedestrianRed được kích hoạt và chu kỳ lặp lại. Việc này chỉ có thể bị gián đoạn bằng cách tắt đèn giao thông trở lại.
Bước 4: Chạy ví dụ
Bước 5: Tạo mã C ++
Mã C ++ được tạo là một trường hợp chuyển mạch cổ điển để xử lý logic của máy trạng thái. Đây chỉ là một đoạn mã về cách nó trông như thế nào:
void TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen (true); nghỉ; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); nghỉ; } default: ngắt; } clearInEvents (); }
Bước 6: Lấy ví dụ
Toàn bộ ví dụ đã sẵn sàng để biên dịch và chạy. Nó đi kèm với Công cụ Statechart YAKINDU, miễn phí cho mục đích sử dụng phi thương mại. Sau khi tải xuống, bạn có thể nhập trực tiếp ví dụ vào công cụ:
Tệp -> Mới -> Ví dụ -> YAKINDU Statechart Examples -> Next -> Traffic Light (C ++) cho Arduino
> TẠI ĐÂY bạn có thể tải xuống YAKINDU Statechart Tools <<
Bạn có thể bắt đầu với bản dùng thử 30 ngày. Sau đó, bạn phải nhận được giấy phép, miễn phí cho mục đích sử dụng phi thương mại!
Đề xuất:
Giao diện người dùng tương tự cho Oscilloscope: 6 bước (có hình ảnh)
Analog Front End cho Oscilloscope: Ở nhà tôi có một số card âm thanh USB giá rẻ, có thể mua được ở Banggood, Aliexpress, Ebay hoặc các cửa hàng trực tuyến toàn cầu khác với giá vài đô la. Tôi đã tự hỏi liệu tôi có thể sử dụng chúng để làm gì thú vị và quyết định thử tạo phạm vi PC tần số thấp với
Trình đọc / ghi và ghi âm thanh ScanUp NFC cho người mù, người khiếm thị và mọi người khác: 4 bước (có hình ảnh)
Máy đọc / ghi âm thanh ScanUp NFC và Máy ghi âm cho Người mù, Khiếm thị và Mọi người Khác: Tôi học thiết kế công nghiệp và dự án là công việc trong học kỳ của tôi. Mục đích là để hỗ trợ người khiếm thị và người mù bằng một thiết bị cho phép ghi lại âm thanh ở định dạng WAV trên thẻ SD và gọi thông tin đó bằng thẻ NFC. Vì vậy, trong
Diều hâu: Robot điều khiển bằng cử chỉ bằng tay sử dụng giao diện dựa trên xử lý hình ảnh: 13 bước (có hình ảnh)
Gesture Hawk: Robot điều khiển bằng cử chỉ bằng tay sử dụng giao diện dựa trên xử lý hình ảnh: Gesture Hawk đã được giới thiệu trong TechEvince 4.0 như một giao diện người-máy xử lý hình ảnh đơn giản. Tiện ích của nó nằm ở chỗ không cần thiết bị cảm biến hoặc thiết bị đeo bổ sung nào ngoại trừ một chiếc găng tay để điều khiển chiếc xe robot chạy trên
Tình yêu dành cho người chơi game, Dự án Arduino dành cho người độc thân: 5 bước
Tình yêu dành cho người chơi game, Dự án Arduino dành cho người độc thân: Có thể hướng dẫn này nói về dự án Arduino của tôi có tên " Tình yêu dành cho người chơi game " vốn bắt đầu như một công cụ để cười khúc khích và vui vẻ. Nó không hoàn hảo hay bất cứ thứ gì, nhưng nó hoạt động
Bộ điều khiển kỹ thuật số cho hệ thống treo khí bằng Arduino và Điều khiển từ xa trên điện thoại thông minh: 7 bước (có hình ảnh)
Bộ điều khiển kỹ thuật số cho hệ thống treo khí bằng Arduino và Điều khiển từ xa trên điện thoại thông minh: Xin chào tất cả mọi người. đây cũng là lần hướng dẫn đầu tiên của tôi nên gấu w