Innehållsförteckning:

Clap-on Switch: 7 steg (med bilder)
Clap-on Switch: 7 steg (med bilder)

Video: Clap-on Switch: 7 steg (med bilder)

Video: Clap-on Switch: 7 steg (med bilder)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
Anonim
Image
Image

En släkting frågade mig en gång om jag kunde skapa en switch som reagerar på att klappa händerna. Så jag har beställt några saker för att skapa ett projekt och bestämde mig för att göra en instruerbar så att alla kan ha en fantastisk switch så.

Mikrokontrollern är hjärnan i detta projekt. En ljudsensor är ansluten till mikrokontrollern, sensorn skickar analog data när ljud detekteras. Mikrokontrollern är programmerad att upptäcka stora skillnader i ljud. När en tillräckligt hög skillnad detekteras, vilket betyder en klapp, skickar mikrokontrollern en signal till reläet. Reläet växlar och lampan tänds. När du klappar en andra gång släcks lampan igen.

Tillbehör

Fysiska saker:

  • 1x ATmega328P Xplained Mini med kabel för programmering
  • 1x 5v relämodul 1-kanal (KY-019 eller liknande)
  • 1x ljudsensormodul (KY-038 eller liknande)
  • 1x brödbräda
  • 6x Man-Man bygelkabel
  • 1x ljusuttag med sladd (eller någon annan enhet du vill slå på)
  • 1x glödlampa
  • 1x motstånd* (jag använder 220 Ohm)
  • 1x LED*

Programvara (ladda ner):

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

* För teständamål

Steg 1: Anslutningar

Skapa programmet
Skapa programmet

Anslut alla trådar som visas på bilden.

Steg 2: Skapa programmet

Skapa programmet
Skapa programmet
Skapa programmet
Skapa programmet

Jag gillar att koda i C så det här projektet skrivs i C.

Om du inte har laddat ner och installerat den nödvändiga programvaran, ladda ner och installera den nu.

Följ nu följande steg:

  1. Öppna AtmelStudio.
  2. Klicka på "File" -> "New" -> "Project".
  3. Klicka på "GCC C Executable Project". Ge ditt projekt ett namn och en plats att lagra. Klicka på "Ok".
  4. Sök efter ATmega328P. Klicka på "ATmega328P" -> "Ok".
  5. Klicka i Solution Explorer på "main.c" för att öppna huvudprogrammet.

Steg 3: Lägga till kod

Radera koden som redan finns i main. C

Kopiera och klistra in följande kod i main.c

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); dubbel val1, val2; int main (void) {// Initiera USART USART_init (9600); USART_putstr ("#USART init / n"); // Initiera ADC InitADC (); USART_putstr ("#ADC init / n"); // PC1 -stift av PORTC -utgång, resten ingång. DDRC = 0b00000010; // ställ in initialvärden till PORTC låg. PORTC = 0b00000000; medan (1) {// avläsning av potentiometervärde // läs värde och lagra i val1 val1 = ReadADC (0); _fördröjning_ms (1); // läs nästa värde en store i val2 val2 = ReadADC (0); char str [10]; // ReadADC () ger värdet tillbaka i heltal. Om vi vill felsöka eller se värdet på kitt, // måste värdet konverteras till tecken så att USART kan skriva ut det. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // om de två värdena har en viss skillnad. Ett ljud detekteras och byter port. // MINIMALVÄRDE kan ändras, ökning gör det mindre känsligt. Minskning gör det mer känsligt om (val1-val2> MINIMALVÄRDE || val2-val1> MINIMALVÄRDE) {PORTC ^= 0b00000010; // LJUS PÅ UC _fördröjning_ms (200); }}} void InitADC () {// Select Vref = AVcc ADMUX | = (1 << REFS0); // ställ in prescaller till 128 och aktivera ADC ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// välj ADC -kanal med säkerhetsmask ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // enda konverteringsläge ADCSRA | = (1 << ADSC); // vänta tills ADC -konverteringen är klar medan (ADCSRA & (1 << ADSC)); returnera ADC; }

Steg 4: Lägga till USART

Lägger till USART
Lägger till USART

USART är ett seriellt kommunikationsprotokoll som kan användas på mikrokontrollern. Jag använder den på mikrokontrollern för att se analoga data från sensorn.

USART är redan programmerat korrekt och innehåller en rubrik (.h) och källfil (.c). Ladda ner de två filerna och lägg till dem i ditt program i AtmelStudio.

Högerklicka på projektnamnet i Solution Explorer. Klicka på "Lägg till" -> "Befintligt objekt …" och välj de 2 nedladdade filerna.

Steg 5: Kör koden

Kör koden
Kör koden
Kör koden
Kör koden

Anslut mikrokontrollern till datorn. Sök efter "enhetshanterare" på din dator och öppna den. Leta efter "Ports (COM & LPT)" och kom ihåg COM-porten som mikrokontrollern är på.

Öppna PuTTY och klicka på "Serial", skriv COM-porten som du har hittat för mikrokontrollern och klicka på "Öppna". En terminal dyker upp, lämna den för nu.

Gå tillbaka till AtmelStudio för att välja rätt verktyg för programmering av mikrokontrollern.

  1. Klicka på hammarverktyget.
  2. Välj "mEDBG*ATML" felsökare/programmerare.
  3. Välj gränssnittet "debugWIRE".
  4. Klicka på "starta utan felsökning".

Programmet kommer att bygga och skriva.

När programmet körs korrekt ser du heltalsvärden i puTTY. Med en skruvmejsel kan jag ändra värdet i puTTY genom att vrida på skruven på sensorn. Min sensor ger värdena från 0 till 1000 när skruven vrids hela vägen. Jag vrider skruven till 100 (10%) av det totala värdet. Jag har fått reda på att det här fungerar för mig.

Steg 6: Ändra känslighet

För att justera känsligheten när ljuset tänds kan du använda två alternativ, men välj ett inte båda:

  1. Byt sensorskruv;
  2. Ändra kodvärde.

Jag använder alternativ 2. Att öka MINIMALVÄRDET gör det mindre känsligt, minskande gör det mer känsligt.

#define MINIMALVÄRDE 5

Steg 7: Byt vad du vill

Byt vad du vill!
Byt vad du vill!
Byt vad du vill!
Byt vad du vill!

VARNING: Se upp när du växlar högre spänningar

När du är nöjd med sensorns känslighet kan du ändra kretsen. Ändra kretsen som bilden ovan. Du kan nu byta vad du vill!

Rekommenderad: