Índice:

Botão de aplauso: 7 etapas (com imagens)
Botão de aplauso: 7 etapas (com imagens)

Vídeo: Botão de aplauso: 7 etapas (com imagens)

Vídeo: Botão de aplauso: 7 etapas (com imagens)
Vídeo: MOMENTOS ESPORTIVOS QUE FARÃO VOCÊ APERTAR O BOTÃO DE PAUSA! 2024, Novembro
Anonim
Image
Image

Um parente me perguntou uma vez se eu poderia criar um interruptor que reage a bater palmas. Então, encomendei algumas coisas para criar um projeto e decidi fazer um instrutível para que todos pudessem ter um switch incrível como esse.

O microcontrolador é o cérebro desse projeto. Um sensor de som é conectado ao microcontrolador, o sensor está enviando dados analógicos quando o som é detectado. O microcontrolador é programado para detectar grandes diferenças de som. Quando uma diferença alta o suficiente é detectada, o que significa um aplauso, o microcontrolador envia um sinal para o relé. O relé liga e a luz acende. Ao bater palmas pela segunda vez, a luz apaga-se novamente.

Suprimentos

Coisas físicas:

  • 1x ATmega328P Xplained Mini com cabo para programação
  • 1x módulo de relé 5v de 1 canal (KY-019 ou similar)
  • 1 módulo sensor de som (KY-038 ou similar)
  • 1x breadboard
  • 6x fio de jumper Macho-Macho
  • 1x soquete de luz com cabo (ou qualquer outro dispositivo que você deseja ligar)
  • 1 lâmpada
  • 1 resistor * (eu uso 220 Ohm)
  • 1x LED *

Software (download):

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

* Para fins de teste

Etapa 1: conexões

Criando o programa
Criando o programa

Conecte todos os fios conforme mostrado na imagem.

Etapa 2: Criação do programa

Criação do programa
Criação do programa
Criando o programa
Criando o programa

Eu gosto de codificar em C, então este projeto foi escrito em C.

Se você ainda não baixou e instalou o software necessário, baixe e instale-o agora.

Agora siga estas próximas etapas:

  1. Abra o AtmelStudio.
  2. Clique em "Arquivo" -> "Novo" -> "Projeto".
  3. Clique em "Projeto executável GCC C". Dê ao seu projeto um nome e um local para armazenar. Clique OK".
  4. Procure o ATmega328P. Clique em "ATmega328P" -> "Ok".
  5. Clique no Gerenciador de Soluções em "main.c" para abrir o programa principal.

Etapa 3: adicionar código

Exclua o código já presente em main.c

Copie e cole o seguinte código em main.c

# define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); double val1, val2; int main (void) {// Inicializar o USART USART_init (9600); USART_putstr ("# USART init / n"); // Inicialize o ADC InitADC (); USART_putstr ("# ADC init / n"); // Pino PC1 da saída PORTC, a entrada restante. DDRC = 0b00000010; // define os valores iniciais para PORTC baixo. PORTC = 0b00000000; while (1) {// lendo o valor do potenciômetro // lê o valor e armazena em val1 val1 = ReadADC (0); _delay_ms (1); // lê o próximo valor e armazena em val2 val2 = ReadADC (0); char str [10]; // o ReadADC () retorna o valor em inteiros. Se quisermos depurar ou ver o valor na massa, // o valor precisa ser convertido em caracteres para que o USART possa imprimi-lo. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // se os 2 valores têm uma certa diferença. Um som é detectado e muda uma porta. // MINIMALVALUE pode ser alterado, aumentando o tornará menos sensível. Diminuir o tornará mais sensível se (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^ = 0b00000010; // LUZ ACESA UC _delay_ms (200); }}} void InitADC () {// Selecione Vref = AVcc ADMUX | = (1 << REFS0); // definir pré-chamada para 128 e ativar ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// selecione o canal ADC com máscara de segurança ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // modo de conversão única ADCSRA | = (1 << ADSC); // espera até que a conversão ADC seja concluída while (ADCSRA & (1 << ADSC)); return ADC; }

Etapa 4: Adicionando USART

Adicionando USART
Adicionando USART

O USART é um protocolo de comunicação serial que pode ser usado no microcontrolador. Eu o uso no microcontrolador para ver os dados analógicos do sensor.

O USART já está programado corretamente, contendo um arquivo de cabeçalho (.h) e fonte (.c). Baixe os 2 arquivos e adicione-os ao seu programa no AtmelStudio.

Clique com o botão direito no nome do projeto no Solution Explorer. Clique em "Adicionar" -> "Item Existente …" e selecione os 2 arquivos baixados.

Etapa 5: executando o código

Executando o Código
Executando o Código
Executando o Código
Executando o Código

Conecte o microcontrolador ao computador. Procure no seu computador por "gerenciador de dispositivos" e abra-o. Procure por "Portas (COM e LPT)" e lembre-se da porta COM em que o microcontrolador está ligado.

Abra o PuTTY e clique em "Serial" digite a porta COM que você encontrou do microcontrolador e clique em "Abrir". Um terminal aparece, deixe por enquanto.

Volte ao AtmelStudio para selecionar a ferramenta certa para programar o microcontrolador.

  1. Clique na ferramenta de martelo.
  2. Selecione o depurador / programador "mEDBG * ATML".
  3. Selecione a interface "debugWIRE".
  4. Clique em "iniciar sem depuração".

O programa irá construir e escrever.

Quando o programa for executado corretamente, você verá valores inteiros em puTTY. Usando uma chave de fenda, posso alterar o valor visto em puTTY girando o parafuso no sensor. Meu sensor fornece valores de 0 a 1000 ao girar o parafuso até o fim. Estou girando o parafuso para 100 (10%) do valor total. Eu descobri que isso funciona para mim.

Etapa 6: mudar a sensibilidade

Para ajustar a sensibilidade quando a luz acende, você pode usar 2 opções, mas escolha uma, não as duas:

  1. Troque o parafuso do sensor;
  2. Altere o valor do código.

Eu uso a opção 2. Aumentar o MINIMALVALUE o tornará menos sensível, enquanto diminuir o tornará mais sensível.

#define VALOR MÍNIMO 5

Etapa 7: mude o que quiser

Mude o que quiser!
Mude o que quiser!
Mude o que quiser!
Mude o que quiser!

AVISO: Cuidado ao alternar tensões mais altas

Quando estiver satisfeito com a sensibilidade do sensor, você pode alterar o circuito. Mude o circuito como na imagem acima. Agora você pode mudar o que quiser!

Recomendado: