Πίνακας περιεχομένων:

Διακόπτης Clap-on: 7 βήματα (με εικόνες)
Διακόπτης Clap-on: 7 βήματα (με εικόνες)

Βίντεο: Διακόπτης Clap-on: 7 βήματα (με εικόνες)

Βίντεο: Διακόπτης Clap-on: 7 βήματα (με εικόνες)
Βίντεο: Μαθαίνω & Δημιουργώ "Πλανητάριο" & "Bio Καλλυντικά" - AS 2024, Νοέμβριος
Anonim
Image
Image

Ένας συγγενής με ρώτησε μια φορά αν μπορώ να δημιουργήσω έναν διακόπτη που αντιδρά στο χτύπημα των χεριών σας. Έτσι, έχω παραγγείλει κάποια πράγματα για τη δημιουργία ενός έργου και αποφάσισα να κάνω ένα διδακτικό, ώστε όλοι να έχουν έναν υπέροχο διακόπτη σαν κι αυτόν.

Ο μικροελεγκτής είναι ο εγκέφαλος αυτού του έργου. Ένας αισθητήρας ήχου είναι συνδεδεμένος στον μικροελεγκτή, ο αισθητήρας στέλνει αναλογικά δεδομένα όταν ανιχνεύεται ήχος. Ο μικροελεγκτής είναι προγραμματισμένος να ανιχνεύει μεγάλες διαφορές στον ήχο. Όταν ανιχνευτεί μια αρκετά υψηλή διαφορά, που σημαίνει ένα χτύπημα, ο μικροελεγκτής στέλνει ένα σήμα στο ρελέ. Το ρελέ αλλάζει και το φως ανάβει. Όταν χτυπάτε για δεύτερη φορά, το φως θα σβήσει ξανά.

Προμήθειες

Φυσικά πράγματα:

  • 1x ATmega328P Xplained Mini με καλώδιο για προγραμματισμό
  • 1x μονάδα ρελέ 1 καναλιού (KY-019 ή παρόμοιο)
  • 1x μονάδα αισθητήρα ήχου (KY-038 ή παρόμοιο)
  • 1x Breadboard
  • 6x αρσενικό-αρσενικό καλώδιο άλτης
  • 1x πρίζα με καλώδιο (ή οποιαδήποτε άλλη συσκευή που θέλετε να ενεργοποιήσετε)
  • 1x λάμπα
  • 1x αντίσταση* (χρησιμοποιώ 220 Ohm)
  • 1x LED*

Λογισμικό (λήψη):

  • AtmelStudio 7.0 (https://www.microchip.com/mplab/avr-support/atmel-studio-7)
  • Στόκος (www.putty.org)*

* Για σκοπούς δοκιμών

Βήμα 1: Συνδέσεις

Δημιουργία του Προγράμματος
Δημιουργία του Προγράμματος

Συνδέστε όλα τα καλώδια όπως φαίνεται στην εικόνα.

Βήμα 2: Δημιουργία προγράμματος

Δημιουργία του Προγράμματος
Δημιουργία του Προγράμματος
Δημιουργία του Προγράμματος
Δημιουργία του Προγράμματος

Μου αρέσει να κωδικοποιώ σε C, οπότε αυτό το έργο είναι γραμμένο στο C.

Εάν δεν έχετε ακόμη κατεβάσει και εγκαταστήσει το απαραίτητο λογισμικό, κάντε λήψη και εγκαταστήστε το τώρα.

Ακολουθήστε τώρα τα επόμενα βήματα:

  1. Ανοίξτε το AtmelStudio.
  2. Κάντε κλικ στο "Αρχείο" -> "Νέο" -> "Έργο".
  3. Κάντε κλικ στο "Εκτελέσιμο έργο GCC C". Δώστε στο έργο σας όνομα και τοποθεσία για αποθήκευση. Κάντε κλικ στο "Εντάξει".
  4. Αναζητήστε το ATmega328P. Κάντε κλικ στο "ATmega328P" -> "Ok".
  5. Κάντε κλικ στην Εξερεύνηση λύσεων στο "main.c" για να ανοίξετε το κύριο πρόγραμμα.

Βήμα 3: Προσθήκη κώδικα

Διαγράψτε τον κωδικό που υπάρχει ήδη στο main.c

Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στο main.c

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALVALUE 5 void InitADC (); uint16_t ReadADC (uint8_t ADCchannel); διπλό val1, val2; int main (άκυρο) {// Αρχικοποίηση του USART_init USART (9600); USART_putstr ("#USART init / n"); // Αρχικοποίηση του ADC InitADC (); USART_putstr ("#ADC init / n"); // PC1 pin της εξόδου PORTC, η υπόλοιπη είσοδος. DDRC = 0b00000010; // ορίστε τις αρχικές τιμές σε PORTC χαμηλές. PORTC = 0b00000000; ενώ (1) {// τιμή ποτενσιόμετρου ανάγνωσης // τιμή ανάγνωσης και αποθήκευση σε val1 val1 = ReadADC (0); _delay_ms (1); // διαβάστε την επόμενη τιμή en store στο val2 val2 = ReadADC (0); char str [10]; // το ReadADC () δίνει την τιμή πίσω σε ακέραιους αριθμούς. Εάν θέλουμε να κάνουμε εντοπισμό σφαλμάτων ή να δούμε την αξία του στόκου, // η τιμή πρέπει να μετατραπεί σε χαρακτήρες, ώστε το USART να μπορεί να την εκτυπώσει. itoa (val1, str, 10); USART_putstr (str); USART_putstr ("\ n"); // αν οι 2 τιμές έχουν κάποια διαφορά. Ένας ήχος ανιχνεύεται και αλλάζει μια θύρα. // MINIMALVALUE μπορεί να αλλάξει, αυξάνοντας το καθιστά λιγότερο ευαίσθητο. Η μείωση θα το κάνει πιο ευαίσθητο εάν (val1-val2> MINIMALVALUE || val2-val1> MINIMALVALUE) {PORTC ^= 0b00000010; // LIGHT ON UC _delay_ms (200); }}} void InitADC () {// Επιλέξτε Vref = AVcc ADMUX | = (1 << REFS0); // ρυθμίστε το prescaller στο 128 και ενεργοποιήστε το ADC ADCSRA | = (1 << ADPS2] | (1 << ADPS1] | (1 << ADPS0) | (1 << ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// επιλέξτε ADC κανάλι με μάσκα ασφαλείας ADMUX = (ADMUX & 0xF0) | (ADCchannel & 0x0F); // μεμονωμένη λειτουργία μετατροπής ADCSRA | = (1 << ADSC); // περιμένετε έως ότου ολοκληρωθεί η μετατροπή ADC ενώ (ADCSRA & (1 << ADSC)); επιστροφή ADC? }

Βήμα 4: Προσθήκη USART

Προσθήκη USART
Προσθήκη USART

Το USART είναι ένα σειριακό πρωτόκολλο επικοινωνίας που μπορεί να χρησιμοποιηθεί στον μικροελεγκτή. Το χρησιμοποιώ στον μικροελεγκτή για να βλέπω αναλογικά δεδομένα από τον αισθητήρα.

Το USART έχει ήδη προγραμματιστεί σωστά, περιέχει αρχείο κεφαλίδας (.h) και προέλευσης (.c). Κατεβάστε τα 2 αρχεία και προσθέστε τα στο πρόγραμμά σας στο AtmelStudio.

Κάντε δεξί κλικ στο όνομα του έργου στο Solution Explorer. Κάντε κλικ στην επιλογή "Προσθήκη" -> "Υφιστάμενο αντικείμενο …" και επιλέξτε τα 2 ληφθέντα αρχεία.

Βήμα 5: Εκτέλεση του κώδικα

Εκτέλεση του Κώδικα
Εκτέλεση του Κώδικα
Εκτέλεση του Κώδικα
Εκτέλεση του Κώδικα

Συνδέστε τον μικροελεγκτή στον υπολογιστή. Αναζητήστε στον υπολογιστή σας τον "διαχειριστή συσκευών" και ανοίξτε τον. Αναζητήστε "Θύρες (COM & LPT)" και θυμηθείτε τη θύρα COM που είναι ενεργοποιημένος από τον μικροελεγκτή.

Ανοίξτε το PuTTY και κάντε κλικ στο "Serial" πληκτρολογήστε τη θύρα COM που έχετε βρει του μικροελεγκτή και κάντε κλικ στο "Open". Εμφανίζεται ένα τερματικό, αφήστε το προς το παρόν.

Επιστρέψτε στο AtmelStudio για να επιλέξετε το σωστό εργαλείο για τον προγραμματισμό του μικροελεγκτή.

  1. Κάντε κλικ στο εργαλείο σφυρί.
  2. Επιλέξτε το πρόγραμμα εντοπισμού σφαλμάτων/προγραμματιστή "mEDBG*ATML".
  3. Επιλέξτε διεπαφή "debugWIRE".
  4. Κάντε κλικ στην επιλογή "Έναρξη χωρίς εντοπισμό σφαλμάτων".

Το πρόγραμμα θα δημιουργήσει και θα γράψει.

Όταν το πρόγραμμα εκτελείται σωστά, θα δείτε ακέραιες τιμές στο puTTY. Χρησιμοποιώντας ένα κατσαβίδι μπορώ να αλλάξω την τιμή που εμφανίζεται στο puTTY γυρίζοντας τη βίδα στον αισθητήρα. Ο αισθητήρας μου δίνει τις τιμές από 0 έως 1000 όταν γυρίζετε τη βίδα μέχρι τέλους. Γυρίζω τη βίδα στο 100 (10%) της συνολικής τιμής. Έχω διαπιστώσει ότι αυτό λειτουργεί για μένα.

Βήμα 6: Αλλάξτε την ευαισθησία

Για να ρυθμίσετε την ευαισθησία όταν ανάβει το φως, μπορείτε να χρησιμοποιήσετε 2 επιλογές, αλλά επιλέξτε μία όχι και τις δύο:

  1. Αλλαγή βίδας αισθητήρα.
  2. Αλλαγή τιμής κώδικα.

Χρησιμοποιώ την επιλογή 2. Η αύξηση του MINIMALVALUE θα το κάνει λιγότερο ευαίσθητο, η μείωση το καθιστά πιο ευαίσθητο.

#define MINIMALVALUE 5

Βήμα 7: Αλλάξτε οτιδήποτε σας αρέσει

Αλλάξτε ό, τι σας αρέσει!
Αλλάξτε ό, τι σας αρέσει!
Αλλάξτε ό, τι σας αρέσει!
Αλλάξτε ό, τι σας αρέσει!

ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Προσέξτε όταν αλλάζετε υψηλότερες τάσεις

Όταν είστε ευχαριστημένοι με την ευαισθησία του αισθητήρα, μπορείτε να αλλάξετε το κύκλωμα. Αλλάξτε το κύκλωμα όπως στην παραπάνω εικόνα. Τώρα μπορείτε να αλλάξετε ό, τι σας αρέσει!

Συνιστάται: