Хлопковый переключатель: 7 шагов (с изображениями)
Хлопковый переключатель: 7 шагов (с изображениями)
Anonim
Image
Image

Однажды родственник спросил меня, могу ли я создать переключатель, который реагирует на ваши хлопки в ладоши. Итак, я заказал кое-что для создания проекта и решил сделать инструктаж, чтобы у каждого был такой потрясающий переключатель.

Микроконтроллер - это мозг этого проекта. К микроконтроллеру подключен звуковой датчик, датчик отправляет аналоговые данные при обнаружении звука. Микроконтроллер запрограммирован на обнаружение больших различий в звуке. Когда обнаруживается достаточно большая разница, то есть хлопок, микроконтроллер отправляет сигнал на реле. Реле включается, и свет включается. При повторном хлопании свет снова погаснет.

Запасы

Физические характеристики:

  • 1x ATmega328P Xplained Mini с кабелем для программирования
  • 1x 5v релейный модуль, 1 канал (KY-019 или аналогичный)
  • 1x модуль звукового датчика (KY-038 или аналогичный)
  • 1x макетная плата
  • 6x перемычка папа-папа
  • 1x световая розетка со шнуром (или любое другое устройство, которое вы хотите включить)
  • 1x лампочка
  • 1x резистор * (я использую 220 Ом)
  • 1x светодиод *

Программное обеспечение (скачать):

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

* Для тестирования

Шаг 1. Подключения

Создание программы
Создание программы

Подключите все провода, как показано на картинке.

Шаг 2: Создание программы

Создание программы
Создание программы
Создание программы
Создание программы

Мне нравится писать код на C, поэтому этот проект написан на C.

Если вы еще не скачали и не установили необходимое программное обеспечение, скачайте и установите его сейчас.

Теперь выполните следующие шаги:

  1. Откройте AtmelStudio.
  2. Щелкните «Файл» -> «Новый» -> «Проект».
  3. Щелкните «Исполняемый проект GCC C». Дайте вашему проекту имя и место для хранения. Щелкните "ОК".
  4. Найдите ATmega328P. Щелкните «ATmega328P» -> «ОК».
  5. Щелкните в обозревателе решений на «main.c», чтобы открыть основную программу.

Шаг 3: Добавление кода

Удалите код, уже присутствующий в main.c

Скопируйте и вставьте следующий код в main.c

#define F_CPU 16000000

#include #include #include #include "usart.h" #define МИНИМАЛЬНОЕ ЗНАЧЕНИЕ 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); двойной val1, val2; int main (void) {// Инициализировать USART USART_init (9600); USART_putstr ("# USART init / n"); // Инициализируем АЦП InitADC (); USART_putstr ("# инициализация ADC / n"); // Вывод PC1 выхода PORTC, остальной вход. DDRC = 0b00000010; // устанавливаем начальные значения на низкое значение PORTC. PORTC = 0b00000000; while (1) {// считываем значение потенциометра // считываем значение и сохраняем в val1 val1 = ReadADC (0); _delay_ms (1); // считываем следующее значение и сохраняем в val2 val2 = ReadADC (0); char str [10]; // ReadADC () возвращает значение в целых числах. Если мы хотим отладить или увидеть значение замазки, // значение необходимо преобразовать в символы, чтобы USART мог его распечатать. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // если два значения имеют определенную разницу. Обнаруживается звук и переключается порт. // МИНИМАЛЬНОЕ ЗНАЧЕНИЕ можно изменить, увеличение сделает его менее чувствительным. Уменьшение сделает его более чувствительным, если (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^ = 0b00000010; // СВЕТ НА UC _delay_ms (200); }}} void InitADC () {// Выбрать Vref = AVcc ADMUX | = (1 << REFS0); // устанавливаем предварительный делитель на 128 и включаем ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// выбор канала АЦП с маской безопасности ADMUX = (ADMUX & 0xF0) | (Канал АЦП & 0x0F); // режим однократного преобразования ADCSRA | = (1 << ADSC); // ждем завершения преобразования АЦП while (ADCSRA & (1 << ADSC)); вернуть АЦП; }

Шаг 4: Добавление USART

Добавление USART
Добавление USART

USART - это протокол последовательной связи, который можно использовать в микроконтроллере. Я использую его на микроконтроллере, чтобы видеть аналоговые данные с датчика.

USART уже правильно запрограммирован и содержит файл заголовка (.h) и исходный файл (.c). Загрузите 2 файла и добавьте их в свою программу в AtmelStudio.

Щелкните правой кнопкой мыши имя проекта в обозревателе решений. Нажмите «Добавить» -> «Существующий элемент…» и выберите 2 загруженных файла.

Шаг 5: запуск кода

Запуск кода
Запуск кода
Запуск кода
Запуск кода

Подключите микроконтроллер к компьютеру. Найдите на своем компьютере «диспетчер устройств» и откройте его. Найдите «Порты (COM и LPT)» и запомните COM-порт, на котором находится микроконтроллер.

Откройте PuTTY и нажмите «Последовательный», введите найденный вами COM-порт микроконтроллера и нажмите «Открыть». Выскакивает терминал, оставьте его пока.

Вернитесь в AtmelStudio, чтобы выбрать правильный инструмент для программирования микроконтроллера.

  1. Нажмите на молоток.
  2. Выберите отладчик / программатор «mEDBG * ATML».
  3. Выберите интерфейс «debugWIRE».
  4. Нажимаем «начать без отладки».

Программа будет построена и написана.

Когда программа работает правильно, вы увидите целые значения в puTTY. Используя отвертку, я могу изменить значение, отображаемое в puTTY, повернув винт на датчике. Мой датчик выдает значения от 0 до 1000 при полном повороте винта. Я поворачиваю винт до 100 (10%) от общего значения. Я обнаружил, что это работает для меня.

Шаг 6: изменение чувствительности

Чтобы настроить чувствительность при включении света, вы можете использовать 2 варианта, но выбрать один, а не оба:

  1. Заменить винт датчика;
  2. Измените значение кода.

Я использую вариант 2. Увеличение МИНИМАЛЬНОГО ЗНАЧЕНИЯ сделает его менее чувствительным, уменьшение - более чувствительным.

#define МИНИМАЛЬНОЕ ЗНАЧЕНИЕ 5

Шаг 7: переключайтесь на все, что вам нравится

Переключайте все, что вам нравится!
Переключайте все, что вам нравится!
Переключайте все, что вам нравится!
Переключайте все, что вам нравится!

ВНИМАНИЕ: будьте осторожны при переключении на более высокое напряжение

Когда вас устраивает чувствительность датчика, вы можете изменить схему. Измените схему, как на изображении выше. Теперь вы можете переключать все, что захотите!