Talaan ng mga Nilalaman:

Clap-on Switch: 7 Hakbang (na may Mga Larawan)
Clap-on Switch: 7 Hakbang (na may Mga Larawan)

Video: Clap-on Switch: 7 Hakbang (na may Mga Larawan)

Video: Clap-on Switch: 7 Hakbang (na may Mga Larawan)
Video: I work at the Private Museum for the Rich and Famous. Horror stories. Horror. 2024, Nobyembre
Anonim
Image
Image

Tinanong ako ng isang kamag-anak isang beses kung makakalikha ako ng switch na tumutugon sa pagpalakpak ng iyong mga kamay. Kaya't nag-order ako ng ilang mga bagay upang lumikha ng isang proyekto at nagpasya na gumawa ng isang itinuro sa gayon ang lahat ay maaaring magkaroon ng isang kahanga-hangang switch tulad nito.

Ang microcontroller ang utak ng proyektong ito. Ang isang sound sensor ay konektado sa microcontroller, ang sensor ay nagpapadala ng analog data kapag nakita ang tunog. Naka-program ang microcontroller upang makita ang malalaking pagkakaiba-iba ng tunog. Kapag may napansin na sapat na mataas na sapat, nangangahulugang isang palakpak, ang microcontroller ay nagpapadala ng isang senyas sa relay. Ang relay switch at ang ilaw ay nakabukas. Kapag pumalakpak sa pangalawang pagkakataon, papatay muli ang ilaw.

Mga gamit

Mga bagay na pisikal:

  • 1x ATmega328P Xplained Mini na may cable para sa pagprograma
  • 1x 5v relay module 1-channel (KY-019 o katulad)
  • 1x module ng Sound sensor (KY-038 o katulad)
  • 1x Breadboard
  • 6x Male-Male jumper wire
  • 1x light socket na may kurdon (o anumang iba pang aparato na nais mong i-on)
  • 1x bombilya
  • 1x risistor * (Gumagamit ako ng 220 Ohm)
  • 1x LED *

Software (pag-download):

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

* Para sa mga layunin sa pagsubok

Hakbang 1: Mga Koneksyon

Paglikha ng Programa
Paglikha ng Programa

Ikonekta ang lahat ng mga wire tulad ng ipinakita sa imahe.

Hakbang 2: Paglikha ng Programa

Paglikha ng Programa
Paglikha ng Programa
Paglikha ng Programa
Paglikha ng Programa

Gusto kong mag-code sa C kaya ang proyektong ito ay nakasulat sa C.

Kung hindi mo pa nai-download at na-install ang kinakailangang software, i-download at i-install ito ngayon.

Sundin ngayon ang mga susunod na hakbang:

  1. Buksan ang AtmelStudio.
  2. Mag-click sa "File" -> "Bago" -> "Project".
  3. Mag-click sa "GCC C Executable Project". Bigyan ang iyong proyekto ng isang pangalan at lokasyon upang maiimbak. I-click ang "Ok".
  4. Maghanap para sa ATmega328P. I-click ang "ATmega328P" -> "Ok".
  5. Mag-click sa Solution Explorer sa "main.c" upang buksan ang pangunahing programa.

Hakbang 3: Pagdaragdag ng Code

Tanggalin ang code na mayroon na sa main.c

Kopyahin at i-paste ang sumusunod na code sa main.c

# tukuyin ang F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); dobleng val1, val2; int main (void) {// Initialise the USART USART_init (9600); USART_putstr ("# USART init / n"); // Initialise the ADC InitADC (); USART_putstr ("# ADC init / n"); // PC1 pin ng PORTC output, ang natitirang input. DDRC = 0b00000010; // itakda ang mga paunang halaga sa PORTC mababa. PORTC = 0b00000000; habang (1) {// pagbabasa ng potensyomentong halaga // basahin ang halaga at itabi sa val1 val1 = ReadADC (0); _delay_ms (1); // basahin ang susunod na halaga en store sa val2 val2 = ReadADC (0); char str [10]; // ang ReadADC () ay nagbibigay ng pabalik ng halaga sa mga integer. Kung nais naming i-debug o makita ang halaga sa masilya, // ang halaga ay kailangang mai-convert sa mga character upang mai-print ito ng USART. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // kung ang 2 halaga ay may tiyak na pagkakaiba. Ang isang tunog ay napansin at lumilipat ng isang port. // MINIMALVALUE ay maaaring mabago, ang pagdaragdag ay gagawing hindi gaanong sensitibo. Ang pagbawas ay magiging mas sensitibo kung (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^ = 0b00000010; // LIGHT ON UC _delay_ms (200); }}} walang bisa InitADC () {// Piliin Vref = AVcc ADMUX | = (1 << REFS0); // itakda ang prescaller sa 128 at paganahin ang ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// piliin ang ADC channel na may safety mask ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // solong conversion mode ADCSRA | = (1 << ADSC); // maghintay hanggang makumpleto ang pag-convert ng ADC habang (ADCSRA & (1 << ADSC)); ibalik ang ADC; }

Hakbang 4: Pagdaragdag ng USART

Pagdaragdag ng USART
Pagdaragdag ng USART

Ang USART ay isang serial protocol ng komunikasyon na maaaring magamit sa microcontroller. Ginagamit ko ito sa microcontroller upang makita ang analog data mula sa sensor.

Na-program na nang tama ang USART, naglalaman ng isang header (.h) at source (.c) na file. I-download ang 2 file at idagdag ang mga ito sa iyong programa sa AtmelStudio.

Mag-right click sa pangalan ng proyekto sa Solution Explorer. I-click ang "Idagdag" -> "Umiiral na Item …" at piliin ang 2 na nai-download na mga file.

Hakbang 5: Pagpapatakbo ng Code

Pagpapatakbo ng Code
Pagpapatakbo ng Code
Pagpapatakbo ng Code
Pagpapatakbo ng Code

Ikonekta ang microcontroller sa computer. Maghanap sa iyong computer para sa "device manager" at buksan ito. Hanapin ang "Ports (COM & LPT)" at alalahanin ang COM-port kung nasaan ang microcontroller.

Buksan ang PuTTY at mag-click sa "Serial" na uri ng COM-port na iyong natagpuan ng microcontroller at i-click ang "Buksan". Isang terminal ang pop up, iwanan ito sa ngayon.

Bumalik sa AtmelStudio upang piliin ang tamang tool para sa pagprograma ng microcontroller.

  1. Mag-click sa tool ng martilyo.
  2. Piliin ang "mEDBG * ATML" debugger / programmer.
  3. Piliin ang interface na "debugWIRE".
  4. I-click ang "magsimula nang walang pag-debug".

Ang programa ay magtatayo at magsusulat.

Kapag ang programa ay tumatakbo nang tama makikita mo ang mga halaga ng integer sa puTTY. Gamit ang isang distornilyador maaari kong mabago ang halagang nakikita sa puTTY sa pamamagitan ng pag-on ng tornilyo sa sensor. Ibinibigay ng aking sensor ang mga halaga mula 0 hanggang 1000 kapag binabaling ang tornilyo. Ginagawa ko ang turnilyo sa 100 (10%) ng kabuuang halaga. Nalaman kong gumagana ito para sa akin.

Hakbang 6: Baguhin ang Sensitivity

Upang ayusin ang pagkasensitibo kapag bumukas ang ilaw maaari kang gumamit ng 2 mga pagpipilian, ngunit pumili ng isa hindi pareho:

  1. Baguhin ang tornilyo ng sensor;
  2. Baguhin ang halaga ng code.

Gumagamit ako ng pagpipilian 2. Ang pagdaragdag ng MINIMALVALUE ay gagawin itong mas sensitibo, ang pagbawas ay ginagawang mas sensitibo.

# tukuyin ang MINIMALVALUE 5

Hakbang 7: Lumipat ng Anumang Gusto mo

Lumipat ng Anumang Gusto mo!
Lumipat ng Anumang Gusto mo!
Lumipat ng Anumang Gusto mo!
Lumipat ng Anumang Gusto mo!

BABALA: Mag-ingat kapag lumilipat ng mas mataas na mga voltages

Kapag masaya ka sa sensibilidad ng sensor maaari mong baguhin ang circuit. Baguhin ang circuit tulad ng imahe sa itaas. Maaari mo na ngayong ilipat ang anumang gusto mo!

Inirerekumendang: