Innholdsfortegnelse:

Clap-on-bryter: 7 trinn (med bilder)
Clap-on-bryter: 7 trinn (med bilder)

Video: Clap-on-bryter: 7 trinn (med bilder)

Video: Clap-on-bryter: 7 trinn (med bilder)
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Juli
Anonim
Image
Image

En slektning spurte meg en gang om jeg kunne lage en bryter som reagerer på å klappe hendene. Så jeg har bestilt noen ting for å lage et prosjekt og bestemte meg for å lage en instruerbar slik at alle kunne ha en fantastisk bryter som den.

Mikrokontrolleren er hjernen til dette prosjektet. En lydsensor er koblet til mikrokontrolleren, sensoren sender analoge data når det oppdages lyd. Mikrokontrolleren er programmert til å oppdage store forskjeller i lyd. Når en høy nok forskjell oppdages, noe som betyr et klapp, sender mikrokontrolleren et signal til reléet. Reléet bytter og lyset tennes. Når du klapper en gang til, slås lyset av igjen.

Rekvisita

Fysiske ting:

  • 1x ATmega328P Xplained Mini med kabel for programmering
  • 1x 5v relemodul 1-kanal (KY-019 eller lignende)
  • 1x lydsensormodul (KY-038 eller lignende)
  • 1x brødbrett
  • 6x mann-hann-jumper wire
  • 1x lysuttak med ledning (eller annen enhet du vil slå på)
  • 1x lyspære
  • 1x motstand* (jeg bruker 220 Ohm)
  • 1x LED*

Programvare (nedlasting):

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

* For testformål

Trinn 1: Tilkoblinger

Opprette programmet
Opprette programmet

Koble til alle ledningene som vist på bildet.

Trinn 2: Opprette programmet

Opprette programmet
Opprette programmet
Opprette programmet
Opprette programmet

Jeg liker å kode i C, så dette prosjektet er skrevet i C.

Hvis du ennå ikke har lastet ned og installert den nødvendige programvaren, kan du laste den ned og installere den nå.

Følg nå disse neste trinnene:

  1. Åpne AtmelStudio.
  2. Klikk på "File" -> "New" -> "Project".
  3. Klikk på "GCC C Executable Project". Gi prosjektet et navn og et sted å lagre. Klikk "Ok".
  4. Søk etter ATmega328P. Klikk "ATmega328P" -> "Ok".
  5. Klikk i løsningsutforskeren på "main.c" for å åpne hovedprogrammet.

Trinn 3: Legge til kode

Slett koden som allerede finnes i main. C

Kopier og lim inn 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); dobbel 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 på PORTC -utgang, resten inngang. DDRC = 0b00000010; // sett innledende verdier til PORTC lav. PORTC = 0b00000000; mens (1) {// lese potensiometerverdi // lese verdi og lagre i val1 val1 = ReadADC (0); _forsinkelse_ms (1); // les neste verdi no lagre i val2 val2 = ReadADC (0); røye str [10]; // ReadADC () gir verdien tilbake i heltall. Hvis vi vil feilsøke eller se verdien på kitt, // må verdien konverteres til tegn slik at USART kan skrive den ut. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // hvis de to verdiene har en viss forskjell. En lyd oppdages og bytter port. // MINIMALVALUE kan endres, økende vil gjøre det mindre sensitivt. Å redusere vil gjøre det mer følsomt hvis (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^= 0b00000010; // LYS PÅ UC _forsinkelse_ms (200); }}}} ugyldig InitADC () {// Velg Vref = AVcc ADMUX | = (1 << REFS0); // sett prescaller til 128 og aktiver ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// velg ADC -kanal med sikkerhetsmaske ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // enkel konverteringsmodus ADCSRA | = (1 << ADSC); // vent til ADC -konverteringen er fullført mens (ADCSRA & (1 << ADSC)); returnere ADC; }

Trinn 4: Legge til USART

Legger til USART
Legger til USART

USART er en seriell kommunikasjonsprotokoll som kan brukes på mikrokontrolleren. Jeg bruker den på mikrokontrolleren for å se analoge data fra sensoren.

USART er allerede programmert riktig, og inneholder en topptekst (.h) og kilde (.c) -fil. Last ned de 2 filene og legg dem til programmet ditt i AtmelStudio.

Høyreklikk på prosjektnavnet i løsningsutforskeren. Klikk på "Legg til" -> "Eksisterende element …" og velg de 2 nedlastede filene.

Trinn 5: Kjøre koden

Kjører koden
Kjører koden
Kjører koden
Kjører koden

Koble mikrokontrolleren til datamaskinen. Søk etter "enhetsbehandling" på datamaskinen din og åpne den. Se etter "Ports (COM & LPT)" og husk COM-porten som mikrokontrolleren er på.

Åpne PuTTY og klikk på "Serial", skriv inn COM-porten du har funnet av mikrokontrolleren, og klikk "Open". En terminal dukker opp, la den stå for nå.

Gå tilbake til AtmelStudio for å velge riktig verktøy for programmering av mikrokontrolleren.

  1. Klikk på hammerverktøyet.
  2. Velg "mEDBG*ATML" debugger/programmereren.
  3. Velg grensesnittet "debugWIRE".
  4. Klikk på "start uten feilsøking".

Programmet vil bygge og skrive.

Når programmet kjører riktig, vil du se heltallverdier i puTTY. Ved å bruke en skrutrekker kan jeg endre verdien som ses i puTTY ved å skru skruen på sensoren. Sensoren min gir verdiene fra 0 til 1000 når skruen skrus helt. Jeg snur skruen til 100 (10%) av den totale verdien. Jeg har funnet ut at dette fungerer for meg.

Trinn 6: Endre følsomhet

For å justere følsomheten når lyset tennes, kan du bruke to alternativer, men velg ett, ikke begge deler:

  1. Bytt sensorskrue;
  2. Endre kodeverdi.

Jeg bruker alternativ 2. Å øke MINIMALVALUE vil gjøre det mindre følsomt, å redusere gjør det mer følsomt.

#define MINIMALVERDI 5

Trinn 7: Bytt alt du liker

Bytt alt du liker!
Bytt alt du liker!
Bytt alt du liker!
Bytt alt du liker!

ADVARSEL: Vær forsiktig når du bytter høyere spenning

Når du er fornøyd med sensoren til sensoren, kan du endre kretsen. Endre kretsen som bildet ovenfor. Du kan nå bytte alt du liker!

Anbefalt: