Sommario:

Interruttore Clap-on: 7 passaggi (con immagini)
Interruttore Clap-on: 7 passaggi (con immagini)

Video: Interruttore Clap-on: 7 passaggi (con immagini)

Video: Interruttore Clap-on: 7 passaggi (con immagini)
Video: 7 --- Come costruire un alimentatore da banco con pezzi di recupero 2024, Dicembre
Anonim
Image
Image

Una volta un parente mi ha chiesto se potevo creare un interruttore che reagisse al battere le mani. Quindi ho ordinato alcune cose per creare un progetto e ho deciso di creare un istruibile in modo che tutti possano avere un fantastico interruttore del genere.

Il microcontrollore è il cervello di questo progetto. Un sensore sonoro è collegato al microcontrollore, il sensore sta inviando dati analogici quando viene rilevato il suono. Il microcontrollore è programmato per rilevare grandi differenze di suono. Quando viene rilevata una differenza sufficientemente elevata, ovvero un applauso, il microcontrollore invia un segnale al relè. Il relè commuta e la luce si accende. Quando batti le mani una seconda volta, la luce si spegne di nuovo.

Forniture

cose fisiche:

  • 1x ATmega328P Xplained Mini con cavo per la programmazione
  • 1x modulo relè 5v 1 canale (KY-019 o simile)
  • 1x modulo sensore sonoro (KY-038 o simile)
  • 1x tagliere
  • 6x cavo ponticello maschio-maschio
  • 1x presa luce con cavo (o qualsiasi altro dispositivo che si desidera accendere)
  • 1x lampadina
  • 1x resistenza* (io uso 220 Ohm)
  • 1x LED*

Software (scarica):

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

* A scopo di test

Passaggio 1: connessioni

Creazione del programma
Creazione del programma

Collegare tutti i fili come mostrato nell'immagine.

Passaggio 2: creazione del programma

Creazione del programma
Creazione del programma
Creazione del programma
Creazione del programma

Mi piace programmare in C, quindi questo progetto è scritto in C.

Se non hai ancora scaricato e installato il software necessario, scaricalo e installalo ora.

Ora segui questi passaggi successivi:

  1. Apri AtmelStudio.
  2. Fare clic su "File" -> "Nuovo" -> "Progetto".
  3. Fare clic su "Progetto eseguibile GCC C". Dai al tuo progetto un nome e una posizione in cui archiviare. Fare clic su "Ok".
  4. Cerca l'ATmega328P. Fare clic su "ATmega328P" -> "Ok".
  5. Fare clic in Esplora soluzioni su "main.c" per aprire il programma principale.

Passaggio 3: aggiunta del codice

Elimina il codice già presente in main.c

Copia e incolla il seguente codice in main.c

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC(); uint16_t ReadADC(uint8_t ADCchannel); doppia val1, val2; int main(void) { // Inizializza USART USART_init(9600); USART_putstr("#USART init\n"); // Inizializza l'ADC InitADC(); USART_putstr("#ADC init\n"); // Pin PC1 dell'uscita PORTC, l'input del resto. DDRC = 0b0000001; // imposta i valori iniziali su PORTC basso. PORTC = 0b00000000; while(1) { //lettura valore potenziometro // lettura valore e memorizzazione in val1 val1=ReadADC(0); _delay_ms(1); // legge il valore successivo e memorizza in val2 val2=ReadADC(0); carattere str[10]; // il ReadADC() restituisce il valore in numeri interi. Se vogliamo eseguire il debug o vedere il valore su putty, // il valore deve essere convertito in caratteri in modo che USART possa stamparlo. itoa(val1, str, 10); USART_putstr(str); USART_putstr("\n"); // se i 2 valori hanno una certa differenza. Viene rilevato un suono e cambia una porta. // MINIMALVALUE può essere modificato, aumentandolo lo renderà meno sensibile. Diminuendo lo renderà più sensibile if(val1-val2 > MINIMALVALUE || val2-val1 > MINIMALVALUE) { PORTC ^= 0b00000010; // LUCE SU UC _delay_ms(200); } } } void InitADC() { // Seleziona Vref=AVcc ADMUX |= (1<<REFS0); //imposta il prescaler su 128 e abilita ADC ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADEN); } uint16_t ReadADC(uint8_t ADCchannel) { //seleziona il canale ADC con la maschera di sicurezza ADMUX = (ADMUX & 0xF0) | (canale ADC e 0x0F); //modalità di conversione singola ADCSRA |= (1<<ADSC); // attende il completamento della conversione ADC while(ADCSRA & (1<<ADSC)); restituire l'ADC; }

Passaggio 4: aggiunta di USART

Aggiunta di USART
Aggiunta di USART

L'USART è un protocollo di comunicazione seriale che può essere utilizzato sul microcontrollore. Lo uso sul microcontrollore per vedere i dati analogici dal sensore.

L'USART è già programmato correttamente, contiene un file header(.h) e source(.c). Scarica i 2 file e aggiungili al tuo programma in AtmelStudio.

Fare clic con il pulsante destro del mouse sul nome del progetto in Esplora soluzioni. Fare clic su "Aggiungi" -> "Elemento esistente…" e selezionare i 2 file scaricati.

Passaggio 5: esecuzione del codice

Esecuzione del codice
Esecuzione del codice
Esecuzione del codice
Esecuzione del codice

Collega il microcontrollore al computer. Cerca sul tuo computer "Gestione dispositivi" e aprilo. Cerca "Porte (COM e LPT)" e ricorda la porta COM su cui si trova il microcontrollore.

Apri PuTTY e fai clic su "Seriale" digita la porta COM che hai trovato del microcontrollore e fai clic su "Apri". Viene visualizzato un terminale, lascialo per ora.

Torna su AtmelStudio per selezionare lo strumento giusto per programmare il microcontrollore.

  1. Fare clic sullo strumento martello.
  2. Seleziona il debugger/programmatore "mEDBG*ATML".
  3. Selezionare l'interfaccia "debugWIRE".
  4. Fare clic su "Avvia senza debug".

Il programma costruirà e scriverà.

Quando il programma viene eseguito correttamente, vedresti valori interi in puTTY. Utilizzando un cacciavite posso modificare il valore visto in puTTY ruotando la vite sul sensore. Il mio sensore fornisce i valori da 0 a 1000 quando si gira la vite fino in fondo. Sto girando la vite a 100(10%) del valore totale. Ho scoperto che questo funziona per me.

Passaggio 6: modifica della sensibilità

Per regolare la sensibilità quando la luce si accende puoi usare 2 opzioni, ma scegline una e non entrambe:

  1. Cambiare la vite del sensore;
  2. Modifica il valore del codice.

Io uso l'opzione 2. Aumentando il MINIMALVALUE lo renderà meno sensibile, diminuendo lo renderà più sensibile.

#define VALORE MINIMO 5

Passaggio 7: cambia tutto ciò che ti piace

Cambia tutto quello che ti piace!
Cambia tutto quello che ti piace!
Cambia tutto quello che ti piace!
Cambia tutto quello che ti piace!

AVVERTENZA: attenzione quando si commutano tensioni più elevate

Quando sei soddisfatto della sensibilità del sensore puoi cambiare il circuito. Cambia il circuito come nell'immagine sopra. Ora puoi cambiare tutto ciò che ti piace!

Consigliato: