Indholdsfortegnelse:

Clap-on switch: 7 trin (med billeder)
Clap-on switch: 7 trin (med billeder)

Video: Clap-on switch: 7 trin (med billeder)

Video: Clap-on switch: 7 trin (med billeder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
Image
Image

En slægtning spurgte mig en gang, om jeg kunne oprette en switch, der reagerer på at klappe i dine hænder. Så jeg har bestilt nogle ting til at oprette et projekt og besluttede at lave en instruerbar, så alle kunne have en fantastisk switch som den.

Mikrokontrolleren er hjernen i dette projekt. En lydsensor er forbundet til mikrokontrolleren, sensoren sender analoge data, når der opdages lyd. Mikrocontrolleren er programmeret til at registrere store forskelle i lyd. Når der opdages en høj nok forskel, hvilket betyder et klap, sender mikrokontrolleren et signal til relæet. Relæet skifter, og lyset tændes. Når der klappes en anden gang, slukkes lyset igen.

Forbrugsvarer

Fysiske ting:

  • 1x ATmega328P Xplained Mini med kabel til programmering
  • 1x 5v relæmodul 1-kanal (KY-019 eller lignende)
  • 1x lydsensormodul (KY-038 eller lignende)
  • 1x brødbræt
  • 6x man-han jumper wire
  • 1x lysstik med ledning (eller enhver anden enhed, du vil tænde)
  • 1x pære
  • 1x modstand* (jeg bruger 220 Ohm)
  • 1x LED*

Software (download):

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

* Til testformål

Trin 1: Forbindelser

Oprettelse af programmet
Oprettelse af programmet

Tilslut alle ledninger som vist på billedet.

Trin 2: Oprettelse af programmet

Oprettelse af programmet
Oprettelse af programmet
Oprettelse af programmet
Oprettelse af programmet

Jeg kan lide at kode i C, så dette projekt er skrevet i C.

Hvis du endnu ikke har downloadet og installeret den nødvendige software, skal du downloade og installere den nu.

Følg nu disse næste trin:

  1. Åbn AtmelStudio.
  2. Klik på "File" -> "New" -> "Project".
  3. Klik på "GCC C Executable Project". Giv dit projekt et navn og en placering, der skal gemmes. Klik på "Ok".
  4. Søg efter ATmega328P. Klik på "ATmega328P" -> "Ok".
  5. Klik i Solution Explorer på "main.c" for at åbne hovedprogrammet.

Trin 3: Tilføjelse af kode

Slet koden, der allerede findes i main. C

Kopier og indsæt følgende kode i main. C

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); dobbelt val1, val2; int main (void) {// Initialiser USART USART_init (9600); USART_putstr ("#USART init / n"); // Initialiser ADC InitADC (); USART_putstr ("#ADC init / n"); // PC1 pin af PORTC output, resten input. DDRC = 0b00000010; // indstil startværdier til PORTC lav. PORTC = 0b00000000; mens (1) {// læsning af potentiometerværdi // læs værdi og gem i val1 val1 = ReadADC (0); _forsinkelse_ms (1); // læs næste værdi en store in val2 val2 = ReadADC (0); char str [10]; // ReadADC () giver værdien tilbage i heltal. Hvis vi vil debugge eller se værdien på kit, skal // værdien konverteres til tegn, så USART kan udskrive den. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // hvis de 2 værdier har en vis forskel. En lyd registreres og skifter en port. // MINIMALVÆRDI kan ændres, stigende vil gøre det mindre følsomt. Faldende vil gøre det mere følsomt, hvis (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^= 0b00000010; // LYS TIL UC _ forsinkelse_ms (200); }}} ugyldig InitADC () {// Vælg Vref = AVcc ADMUX | = (1 << REFS0); // sæt prescaller til 128 og aktiver ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// vælg ADC -kanal med sikkerhedsmaske ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // enkel konverteringstilstand ADCSRA | = (1 << ADSC); // vent, indtil ADC -konvertering er fuldført, mens (ADCSRA & (1 << ADSC)); returnere ADC; }

Trin 4: Tilføjelse af USART

Tilføjelse af USART
Tilføjelse af USART

USART er en seriel kommunikationsprotokol, der kan bruges på mikrokontrolleren. Jeg bruger det på mikrokontrolleren til at se analoge data fra sensoren.

USART er allerede programmeret korrekt og indeholder en header (.h) og kilde (.c) fil. Download de 2 filer og tilføj dem til dit program i AtmelStudio.

Højreklik på projektnavnet i Solution Explorer. Klik på "Tilføj" -> "Eksisterende element …", og vælg de 2 downloadede filer.

Trin 5: Kørsel af koden

Kørsel af koden
Kørsel af koden
Kørsel af koden
Kørsel af koden

Tilslut mikrokontrolleren til computeren. Søg på din computer efter "enhedshåndtering", og åbn den. Kig efter "Porte (COM & LPT)", og husk den COM-port, mikrokontrolleren er på.

Åbn PuTTY, og klik på "Serial", skriv den COM-port, du har fundet af mikrokontrolleren, og klik på "Åbn". En terminal dukker op, lad den stå nu.

Gå tilbage til AtmelStudio for at vælge det rigtige værktøj til programmering af mikrokontrolleren.

  1. Klik på hammerværktøjet.
  2. Vælg "mEDBG*ATML" debugger/programmer.
  3. Vælg grænsefladen "debugWIRE".
  4. Klik på "start uden fejlfinding".

Programmet vil bygge og skrive.

Når programmet kører korrekt, vil du se heltalsværdier i puTTY. Ved hjælp af en skruetrækker kan jeg ændre værdien i puTTY ved at dreje på skruen på sensoren. Min sensor giver værdierne fra 0 til 1000, når skruen drejes hele vejen. Jeg drejer skruen til 100 (10%) af den samlede værdi. Jeg har fundet ud af, at det virker for mig.

Trin 6: Skift følsomhed

For at justere følsomheden, når lyset tændes, kan du bruge 2 muligheder, men vælg en ikke begge:

  1. Skift sensor skrue;
  2. Skift kodeværdi.

Jeg bruger mulighed 2. Forøgelse af MINIMALVÆRDI vil gøre den mindre følsom, faldende gør den mere følsom.

#define MINIMALVÆRDI 5

Trin 7: Skift alt, hvad du kan lide

Skift alt, hvad du kan lide!
Skift alt, hvad du kan lide!
Skift alt, hvad du kan lide!
Skift alt, hvad du kan lide!

ADVARSEL: Pas på, når du skifter højere spændinger

Når du er tilfreds med sensorens følsomhed, kan du ændre kredsløbet. Skift kredsløb som billedet ovenfor. Du kan nu skifte alt, hvad du vil!

Anbefalede: