Cuprins:

Comutator clap-on: 7 pași (cu imagini)
Comutator clap-on: 7 pași (cu imagini)

Video: Comutator clap-on: 7 pași (cu imagini)

Video: Comutator clap-on: 7 pași (cu imagini)
Video: Беслан. Помни / Beslan. Remember (english & español subs) 2024, Iulie
Anonim
Image
Image

O rudă m-a întrebat odată dacă aș putea crea un comutator care să reacționeze la palme. Așa că am comandat câteva lucruri pentru a crea un proiect și am decis să fac un instructable, astfel încât toată lumea să aibă un comutator minunat de genul acesta.

Microcontrolerul este creierul acestui proiect. Un senzor de sunet este conectat la microcontroler, senzorul trimite date analogice atunci când sunetul este detectat. Microcontrolerul este programat pentru a detecta diferențe mari de sunet. Atunci când este detectată o diferență suficient de mare, adică o palpită, microcontrolerul trimite un semnal către releu. Releul se comută și lumina se aprinde. Când bateți din nou din palme, lumina se va stinge din nou.

Provizii

Lucruri fizice:

  • 1x ATmega328P Xplained Mini cu cablu pentru programare
  • 1x releu 5v modul 1 canal (KY-019 sau similar)
  • 1x modul senzor de sunet (KY-038 sau similar)
  • 1x placă de pâine
  • 6x sârmă jumper mascul-mascul
  • 1x priză de lumină cu cablu (sau orice alt dispozitiv pe care doriți să îl porniți)
  • 1x bec
  • 1x rezistor * (folosesc 220 Ohm)
  • 1x LED *

Software (descărcare):

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

* În scopuri de testare

Pasul 1: Conexiuni

Crearea programului
Crearea programului

Conectați toate firele așa cum se arată în imagine.

Pasul 2: Crearea programului

Crearea programului
Crearea programului
Crearea programului
Crearea programului

Îmi place să codez în C, așa că acest proiect este scris în C.

Dacă nu ați descărcat și instalat încă software-ul necesar, descărcați-l și instalați-l acum.

Acum urmați acești pași următori:

  1. Deschideți AtmelStudio.
  2. Faceți clic pe „Fișier” -> „Nou” -> „Proiect”.
  3. Faceți clic pe „Proiect executabil GCC C”. Dă-i proiectului un nume și o locație de stocat. Faceți clic pe „Ok”.
  4. Căutați ATmega328P. Faceți clic pe „ATmega328P” -> „Ok”.
  5. Faceți clic în Solution Explorer pe „main.c” pentru a deschide programul principal.

Pasul 3: Adăugarea codului

Ștergeți codul deja prezent în main.c

Copiați și lipiți următorul cod în main.c

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); dublu val1, val2; int main (void) {// Inițializați USART USART_init (9600); USART_putstr ("# USART init / n"); // Inițializați ADC InitADC (); USART_putstr ("# ADC init / n"); // PC1 pin al ieșirii PORTC, restul de intrare. DDRC = 0b00000010; // setați valorile inițiale la PORTC scăzut. PORTC = 0b00000000; while (1) {// citirea valorii potențiometrului // citirea valorii și stocarea în val1 val1 = ReadADC (0); _delay_ms (1); // citiți următoarea valoare en store în val2 val2 = ReadADC (0); char str [10]; // ReadADC () dă valoarea înapoi în numere întregi. Dacă dorim să depanăm sau să vedem valoarea pe chit, // valoarea trebuie convertită în caractere, astfel încât USART să o poată imprima. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // dacă cele 2 valori au o anumită diferență. Un sunet este detectat și comută un port. // MINIMALVALUE poate fi modificat, creșterea îl va face mai puțin sensibil. Scăderea îl va face mai sensibil dacă (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^ = 0b00000010; // LIGHT ON UC _delay_ms (200); }}} void InitADC () {// Selectați Vref = AVcc ADMUX | = (1 << REFS0); // setați prescallerul la 128 și activați ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// selectați canalul ADC cu mască de siguranță ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // modul de conversie unic ADCSRA | = (1 << ADSC); // așteptați până când conversia ADC este completă în timp ce (ADCSRA & (1 << ADSC)); returnează ADC; }

Pasul 4: Adăugarea USART

Adăugarea USART
Adăugarea USART

USART este un protocol de comunicație serial care poate fi utilizat pe microcontroler. Îl folosesc pe microcontroler pentru a vedea date analogice de la senzor.

USART este deja programat corect, conținând un fișier antet (.h) și sursă (.c). Descărcați cele 2 fișiere și adăugați-le la programul dvs. din AtmelStudio.

Faceți clic dreapta pe numele proiectului în Solution Explorer. Faceți clic pe „Adăugați” -> „Element existent…” și selectați cele 2 fișiere descărcate.

Pasul 5: Rularea codului

Rularea codului
Rularea codului
Rularea codului
Rularea codului

Conectați microcontrolerul la computer. Căutați „computer manager” pe computer și deschideți-l. Căutați „Porturi (COM & LPT)” și amintiți-vă de portul COM pe care este activat microcontrolerul.

Deschideți PuTTY și faceți clic pe „Serial” tastați portul COM pe care l-ați găsit la microcontroler și faceți clic pe „Deschidere”. Apare un terminal, lăsați-l pentru moment.

Reveniți la AtmelStudio pentru a selecta instrumentul potrivit pentru programarea microcontrolerului.

  1. Faceți clic pe instrumentul ciocan.
  2. Selectați programul de depanare „mEDBG * ATML”.
  3. Selectați interfața „debugWIRE”.
  4. Faceți clic pe „începeți fără depanare”.

Programul va construi și scrie.

Când programul rulează corect, veți vedea valori întregi în puTTY. Folosind o șurubelniță, pot schimba valoarea văzută în MÂNZIT prin rotirea șurubului senzorului. Senzorul meu oferă valorile de la 0 la 1000 atunci când întoarceți șurubul până la capăt. Întorc șurubul la 100 (10%) din valoarea totală. Am aflat că asta funcționează pentru mine.

Pasul 6: Schimbați sensibilitatea

Pentru a regla sensibilitatea la aprinderea luminii, puteți folosi 2 opțiuni, dar alegeți una dintre ele:

  1. Schimbați șurubul senzorului;
  2. Schimbați valoarea codului.

Folosesc opțiunea 2. Creșterea MINIMALVALUE o va face mai puțin sensibilă, scăderea o face mai sensibilă.

#define MINIMALVALUE 5

Pasul 7: Schimbați orice doriți

Schimbați orice doriți!
Schimbați orice doriți!
Schimbați orice doriți!
Schimbați orice doriți!

AVERTISMENT: Atenție când comutați tensiuni mai mari

Când sunteți mulțumit de sensibilitatea senzorului, puteți schimba circuitul. Schimbați circuitul ca imaginea de mai sus. Acum puteți schimba orice doriți!

Recomandat: