Mục lục:

Công tắc vỗ tay: 7 bước (có hình ảnh)
Công tắc vỗ tay: 7 bước (có hình ảnh)

Video: Công tắc vỗ tay: 7 bước (có hình ảnh)

Video: Công tắc vỗ tay: 7 bước (có hình ảnh)
Video: Chuyện Lạ Đời - Vỗ Tay Mà Chữa Được Bách Bệnh | 10 Động Tác Vỗ Tay Giúp Cả Đời Không Bệnh 2024, Tháng mười một
Anonim
Image
Image

Một người thân đã hỏi tôi một lần rằng liệu tôi có thể tạo ra một công tắc phản ứng với việc bạn vỗ tay hay không. Vì vậy, tôi đã đặt hàng một số thứ để tạo một dự án và quyết định tạo một hướng dẫn để mọi người có thể có một công tắc tuyệt vời như vậy.

Bộ vi điều khiển là bộ não của dự án này. Một bộ cảm biến âm thanh được kết nối với bộ vi điều khiển, bộ cảm biến này sẽ gửi dữ liệu tương tự khi âm thanh được phát hiện. Bộ vi điều khiển được lập trình để phát hiện sự khác biệt lớn về âm thanh. Khi phát hiện thấy sự chênh lệch đủ cao, nghĩa là có tiếng vỗ tay, bộ vi điều khiển sẽ gửi tín hiệu đến rơ le. Công tắc rơ le và đèn bật sáng. Khi vỗ tay lần thứ hai, đèn sẽ tắt trở lại.

Quân nhu

Công cụ vật lý:

  • 1x ATmega328P Xplained Mini với cáp để lập trình
  • Mô-đun chuyển tiếp 1x 5v 1 kênh (KY-019 hoặc tương tự)
  • 1x Mô-đun cảm biến âm thanh (KY-038 hoặc tương tự)
  • 1x Breadboard
  • 6x dây nhảy nam-nam
  • 1x ổ cắm đèn có dây (hoặc bất kỳ thiết bị nào khác mà bạn muốn bật)
  • 1x bóng đèn
  • 1x điện trở * (tôi sử dụng 220 Ohm)
  • 1x LED *

Tải phần mềm):

  • AtmelStudio 7.0 (https://www.microchip.com/mplab/avr-support/atmel-studio-7)
  • Putty (www.putty.org) *

* Đối với mục đích thử nghiệm

Bước 1: Kết nối

Tạo chương trình
Tạo chương trình

Kết nối tất cả các dây như trong hình ảnh.

Bước 2: Tạo chương trình

Tạo chương trình
Tạo chương trình
Tạo chương trình
Tạo chương trình

Tôi thích viết mã bằng C nên dự án này được viết bằng C.

Nếu bạn chưa tải xuống và cài đặt phần mềm cần thiết, hãy tải xuống và cài đặt nó ngay bây giờ.

Bây giờ hãy làm theo các bước tiếp theo sau:

  1. Mở AtmelStudio.
  2. Nhấp vào "Tệp" -> "Mới" -> "Dự án".
  3. Nhấp vào "GCC C Executable Project". Đặt cho dự án của bạn một cái tên và vị trí để lưu trữ. Nhấp vào "Ok".
  4. Tìm kiếm ATmega328P. Nhấp vào "ATmega328P" -> "Ok".
  5. Nhấp vào Trình khám phá giải pháp trên "main.c" để mở chương trình chính.

Bước 3: Thêm mã

Xóa mã đã có trong main.c

Sao chép và dán đoạn mã sau vào main.c

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); val1 kép, val2; int main (void) {// Khởi tạo USART USART_init (9600); USART_putstr ("# USART init / n"); // Khởi tạo ADC InitADC (); USART_putstr ("# ADC init / n"); // Chân PC1 của đầu ra PORTC, đầu vào còn lại. DDRC = 0b00000010; // đặt giá trị ban đầu thành PORTC thấp. PORTC = 0b00000000; while (1) {// đọc giá trị chiết áp // đọc giá trị và lưu vào val1 val1 = ReadADC (0); _delay_ms (1); // đọc giá trị tiếp theo en lưu trữ trong val2 val2 = ReadADC (0); char str [10]; // ReadADC () trả lại giá trị bằng số nguyên. Nếu chúng ta muốn gỡ lỗi hoặc xem giá trị trên putty, // giá trị cần được chuyển đổi thành các ký tự để USART có thể in nó. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // nếu 2 giá trị có sự khác biệt nhất định. Một âm thanh được phát hiện và chuyển một cổng. // MINIMALVALUE có thể được thay đổi, việc tăng sẽ làm cho nó ít nhạy hơn. Giảm sẽ làm cho nó nhạy cảm hơn nếu (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^ = 0b00000010; // ÁNH SÁNG TRÊN UC _delay_ms (200); }}} void InitADC () {// Chọn Vref = AVcc ADMUX | = (1 << REFS0); // thiết lập trình gọi trước thành 128 và kích hoạt ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// chọn kênh ADC với mặt nạ an toàn ADMUX = (ADMUX & 0xF0) | (Kênh AD & 0x0F); // chế độ chuyển đổi đơn ADCSRA | = (1 << ADSC); // đợi cho đến khi chuyển đổi ADC hoàn tất while (ADCSRA & (1 << ADSC)); trả về ADC; }

Bước 4: Thêm USART

Thêm USART
Thêm USART

USART là một giao thức truyền thông nối tiếp có thể được sử dụng trên vi điều khiển. Tôi sử dụng nó trên vi điều khiển để xem dữ liệu tương tự từ cảm biến.

USART đã được lập trình chính xác, chứa tệp tiêu đề (.h) và nguồn (.c). Tải xuống 2 tệp và thêm chúng vào chương trình của bạn trong AtmelStudio.

Nhấp chuột phải vào tên dự án trong Trình khám phá giải pháp. Nhấp vào "Thêm" -> "Mục hiện có…" và chọn 2 tệp đã tải xuống.

Bước 5: Chạy mã

Chạy mã
Chạy mã
Chạy mã
Chạy mã

Kết nối bộ vi điều khiển với máy tính. Tìm kiếm "trình quản lý thiết bị" trên máy tính của bạn và mở nó. Tìm "Cổng (COM & LPT)" và nhớ cổng COM mà bộ vi điều khiển đang bật.

Mở PuTTY và nhấp vào "Nối tiếp", nhập cổng COM bạn đã tìm thấy của vi điều khiển và nhấp vào "Mở". Một thiết bị đầu cuối bật lên, hãy để nó ngay bây giờ.

Quay lại AtmelStudio để chọn công cụ phù hợp để lập trình vi điều khiển.

  1. Bấm vào công cụ búa.
  2. Chọn trình gỡ lỗi / lập trình "mEDBG * ATML".
  3. Chọn giao diện "debugWIRE".
  4. Nhấp vào "bắt đầu mà không cần gỡ lỗi".

Chương trình sẽ xây dựng và viết.

Khi chương trình chạy chính xác, bạn sẽ thấy các giá trị số nguyên trong puTTY. Sử dụng tuốc nơ vít, tôi có thể thay đổi giá trị được thấy trong puTTY bằng cách vặn vít trên cảm biến. Cảm biến của tôi cho các giá trị từ 0 đến 1000 khi vặn hết trục vít. Tôi đang vặn vít đến 100 (10%) tổng giá trị. Tôi đã phát hiện ra rằng điều này làm việc cho tôi.

Bước 6: Thay đổi độ nhạy

Để điều chỉnh độ nhạy khi đèn bật, bạn có thể sử dụng 2 tùy chọn, nhưng không chọn cả hai:

  1. Thay đổi vít cảm biến;
  2. Thay đổi giá trị mã.

Tôi sử dụng tùy chọn 2. Tăng MINIMALVALUE wil làm cho nó ít nhạy hơn, giảm làm cho nó nhạy hơn.

#define MINIMALVALUE 5

Bước 7: Chuyển đổi bất cứ thứ gì bạn thích

Chuyển đổi bất cứ điều gì bạn thích!
Chuyển đổi bất cứ điều gì bạn thích!
Chuyển đổi bất cứ điều gì bạn thích!
Chuyển đổi bất cứ điều gì bạn thích!

CẢNH BÁO: Cẩn thận khi chuyển đổi điện áp cao hơn

Khi bạn hài lòng với độ nhạy của cảm biến, bạn có thể thay đổi mạch. Thay đổi mạch như hình trên. Bây giờ bạn có thể chuyển đổi bất cứ điều gì bạn thích!

Đề xuất: