Sadržaj:

Prekidač za pljeskanje: 7 koraka (sa slikama)
Prekidač za pljeskanje: 7 koraka (sa slikama)

Video: Prekidač za pljeskanje: 7 koraka (sa slikama)

Video: Prekidač za pljeskanje: 7 koraka (sa slikama)
Video: MODUL - fast & easy mounting 2024, Studeni
Anonim
Image
Image

Rođak me jednom pitao mogu li stvoriti prekidač koji reagira na pljeskanje po rukama. Zato sam naručio neke stvari za stvaranje projekta i odlučio napraviti instrukcije kako bi svi mogli imati takav sjajan prekidač.

Mikrokontroler je mozak ovog projekta. Zvučni senzor spojen je na mikrokontroler, senzor šalje analogne podatke kada se detektira zvuk. Mikrokontroler je programiran za otkrivanje velikih razlika u zvuku. Kad se detektira dovoljno velika razlika, što znači pljesak, mikrokontroler šalje signal releju. Relej se uključuje i svjetlo se pali. Kad pljesnete drugi put, svjetlo će se ponovno ugasiti.

Pribor

Fizičke stvari:

  • 1x ATmega328P Xplained Mini s kabelom za programiranje
  • 1x relejni modul 5V 1-kanalni (KY-019 ili slično)
  • 1x modul senzora zvuka (KY-038 ili sličan)
  • 1x Oglasna ploča
  • 6x spojna žica muško-muški
  • 1x utičnica za svjetlo s kabelom (ili bilo kojim drugim uređajem koji želite uključiti)
  • 1x žarulja
  • 1x otpornik* (koristim 220 ohma)
  • 1x LED*

Softver (preuzimanje):

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

* Za potrebe testiranja

Korak 1: Veze

Izrada programa
Izrada programa

Spojite sve žice kao što je prikazano na slici.

Korak 2: Izrada programa

Izrada programa
Izrada programa
Izrada programa
Izrada programa

Volim kodirati na C pa je ovaj projekt napisan na C.

Ako još niste preuzeli i instalirali potreban softver, preuzmite ga i instalirajte sada.

Sada slijedite ove sljedeće korake:

  1. Otvorite AtmelStudio.
  2. Pritisnite "Datoteka" -> "Novo" -> "Projekt".
  3. Kliknite na "GCC C izvršni projekt". Dajte svom projektu naziv i mjesto za pohranu. Pritisnite "U redu".
  4. Potražite ATmega328P. Pritisnite "ATmega328P" -> "U redu".
  5. Kliknite u Exploreru rješenja na "main.c" da biste otvorili glavni program.

Korak 3: Dodavanje koda

Izbrišite kôd koji je već prisutan u main.c

Kopirajte i zalijepite sljedeći kod u main.c

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); dvostruki val1, val2; int main (void) {// Pokretanje USART USART_init (9600); USART_putstr ("#USART init / n"); // Inicijalizacija ADC -a InitADC (); USART_putstr ("#ADC inicijala / n"); // PC1 pin PORTC izlaza, ostatak ulaz. DDRC = 0b00000010; // početne vrijednosti postaviti na PORTC nisko. PORTC = 0b00000000; while (1) {// očitavanje vrijednosti potenciometra // očitavanje vrijednosti i spremanje u val1 val1 = ReadADC (0); _kašnjenje_ms (1); // očitavanje sljedeće vrijednosti en pohranjivanje u val2 val2 = ReadADC (0); char str [10]; // ReadADC () daje vrijednost natrag u cijelim brojevima. Ako želimo otkloniti pogreške ili vidjeti vrijednost na kit, // vrijednost je potrebno pretvoriti u znakove kako bi je USART mogao ispisati. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // ako 2 vrijednosti imaju određenu razliku. Otkriva se zvuk i prebacuje port. // MINIMALVALUE se može promijeniti, povećanje će ga učiniti manje osjetljivim. Smanjenje će ga učiniti osjetljivijim ako (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^= 0b00000010; // LIGHT ON UC _delay_ms (200); }}} void InitADC () {// Odaberite Vref = AVcc ADMUX | = (1 << REFS0); // postavimo predbrojač na 128 i omogućimo ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// odabir ADC kanala sa zaštitnom maskom ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // pojedinačni način pretvorbe ADCSRA | = (1 << ADSC); // čekati dok ADC konverzija ne završi while (ADCSRA & (1 << ADSC)); povratni ADC; }

Korak 4: Dodavanje USART -a

Dodavanje USART -a
Dodavanje USART -a

USART je serijski komunikacijski protokol koji se može koristiti na mikrokontroleru. Koristim ga na mikrokontroleru za pregled analognih podataka sa senzora.

USART je već ispravno programiran, sadrži zaglavlje (.h) i izvornu (.c) datoteku. Preuzmite 2 datoteke i dodajte ih u program u AtmelStudio.

Desnom tipkom miša kliknite naziv projekta u Exploreru rješenja. Pritisnite "Dodaj" -> "Postojeća stavka …" i odaberite 2 preuzete datoteke.

Korak 5: Pokretanje koda

Pokretanje koda
Pokretanje koda
Pokretanje koda
Pokretanje koda

Spojite mikrokontroler na računalo. Potražite na svom računalu "upravitelj uređaja" i otvorite ga. Potražite "Ports (COM & LPT)" i zapamtite COM-port na kojem je mikrokontroler.

Otvorite PuTTY i kliknite na "Serijski", upišite COM-port koji ste pronašli na mikrokontroleru i kliknite "Otvori". Pojavljuje se terminal, ostavite ga za sada.

Vratite se na AtmelStudio kako biste odabrali pravi alat za programiranje mikrokontrolera.

  1. Kliknite na alat za čekić.
  2. Odaberite program za otklanjanje pogrešaka "mEDBG*ATML".
  3. Odaberite sučelje "debugWIRE".
  4. Pritisnite "pokreni bez otklanjanja pogrešaka".

Program će se graditi i pisati.

Kad se program ispravno pokrene, u puTTY ćete vidjeti cjelobrojne vrijednosti. Pomoću odvijača mogu promijeniti vrijednost viđenu u puTTY okretanjem vijka na senzoru. Moj senzor daje vrijednosti od 0 do 1000 pri okretanju vijka do kraja. Okrećem vijak na 100 (10%) ukupne vrijednosti. Otkrio sam da mi ovo radi.

Korak 6: Promijenite osjetljivost

Da biste prilagodili osjetljivost kada se svjetlo uključi, možete koristiti 2 mogućnosti, ali odaberite jednu, a ne obje:

  1. Promijenite vijak osjetnika;
  2. Promijenite vrijednost koda.

Koristim opciju 2. Povećanjem MINIMALVALUE učinit ćete je manje osjetljivom, a smanjenjem osjetljivijom.

#define MINIMALVALUE 5

Korak 7: Promijenite sve što želite

Promijenite sve što volite!
Promijenite sve što volite!
Promijenite sve što volite!
Promijenite sve što volite!

UPOZORENJE: Pazite pri uključivanju viših napona

Kad ste zadovoljni osjetljivošću senzora, možete promijeniti krug. Promijenite krug kao na gornjoj slici. Sada možete promijeniti sve što želite!

Preporučeni: