Οι κατασκευαστές ηλεκτρονικών συσκευών καταλήγουν σταδιακά στο συμπέρασμα ότι το καλύτερο τηλεχειριστήριο είναι η παλάμη του χρήστη. Έτσι στη νέα στήλη "Yandex.Station Mini" παρέχει μια τέτοια διαχείριση. Μην ξεφεύγετε από τις τάσεις και τους φίλους. Έτσι, για παράδειγμα, ο συγγραφέας των Instructables με το ψευδώνυμο dan_nicholson ήρθε με μια απλή συσκευή που σας επιτρέπει να ελέγχετε την τηλεόρασή σας χρησιμοποιώντας χειρονομίες. Από προεπιλογή, προγραμματίζεται να λειτουργεί με τηλεοράσεις Sony, αλλά μπορεί επίσης να ρυθμιστεί για να ελέγχει άλλες τηλεοράσεις, κέντρα μουσικής κλπ. Όπως μπορεί να φανεί από το KDPV, συνίσταται
σπιτικό από τον ανιχνευτή εμβέλειας
Arduino και πολλά πρόσθετα εξαρτήματα. Μπορεί να γίνει ακόμα πιο συμπαγής:
Και ακόμα πιο συμπαγές αν εγκαταλείψετε το breadboard και συνδέσετε τα πάντα με συγκόλληση χρησιμοποιώντας καλώδια. Ο πλοίαρχος κάνει ένα διάγραμμα συσκευών στο πρόγραμμα Fritzing, το οποίο δεν αρέσει σε όλους, αλλά μην βιαστείτε να ρίξετε παντόφλες, αυτή η μέθοδος σύνταξης διαγραμμάτων μπορεί επίσης να είναι βολική. Ο πλοίαρχος συνδέει μια υπέρυθρη λυχνία LED μέσω μιας αντίστασης και όλα τα κρύσταλλα της LED RGB είναι απευθείας συνδεδεμένα. Γράφει ότι οι αντιστάτες είναι επίσης επιθυμητοί εδώ, αλλά στην πραγματικότητα απαιτούνται.
Έχοντας συναρμολογήσει το κύκλωμα, ο κύριος παίρνει τη βιβλιοθήκη
εδώ, και οι κωδικοί εντολών είναι
εδώγράφει και γεμίζει το σκίτσο:
/ * Σύρετε το τηλεχειριστήριο
Αυτό το σκίτσο χρησιμοποιεί υπερηχητικό εύρος ζώνης για να καθορίσει τη χειρονομία του χρήστη και εξάγει ένα σήμα IR σε μια τηλεόρασή της Sony βασισμένη στην δοθείσα εντολή.
- Υψηλή ταλάντωση (> 10in) = Κανάλι επάνω
- Χαμηλή σάρωση = Κατανόηση καναλιού
- Υψηλή αναμονή (> 10in) = Αύξηση έντασης ήχου
- Χαμηλή αναμονή = Κατώτερη ένταση
- Αισθητήρας καλύμματος (<3in) = Ενεργοποίηση / απενεργοποίηση
Δημιουργήθηκε από τον Dan Nicholson.
Αυτός ο κώδικας παραδείγματος είναι δημόσιος τομέας.
Αυτός ο κώδικας χρησιμοποιεί τη βιβλιοθήκη IRremote (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Ορίζει τις λειτουργίες ελέγχου
#define CONTROL_CH 1 // Αλλαγή καναλιού
#define CONTROL_VOL 2 // Όγκος
#define CONTROL_POW 3 // Ισχύς
#define CONTROL_UP 1
#define CONTROL_DOWN -1
#define DIST_MAX 20 // Η μέγιστη απόσταση σε ίντσες, οτιδήποτε παραπάνω παραβλέπεται.
#define DIST_DOWN 10 // Όριο για τις εντολές άνω / κάτω. Εάν είναι υψηλότερη, η εντολή είναι "επάνω". Εάν είναι χαμηλότερη, "κάτω".
#define DIST_POW 3 // Κατώτατο όριο για εντολή ισχύος, μικρότερο από = power on / off
// ΡΙΝ IR
const int irPin = 3; // αυτό ορίζεται στη βιβλιοθήκη, αυτό το var είναι απλά μια υπενθύμιση. Η ΑΛΛΑΓΗ ΑΥΤΩΝ ΔΕΝ ΑΛΛΑΖΕΙ ΤΟΝ PIN ΣΤΗ ΒΙΒΛΙΟΘΗΚΗ
// 2 Αισθητήρας Ping Pin
const int pingPin = 8;
const int echoPin = 7;
// Πινακίδες LED επιβεβαίωσης
const int led = 13; // εσωτερική λυχνία LED για την ανίχνευση προς τα επάνω / προς τα κάτω
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// Χρονοδιακόπτης LED
Χωρίς υπογραφή μεγάλο χρονοδιακόπτη.
// αντικείμενο πομπού IR
IRsend irsend;
// Σημαία επιβεβαίωσης ισχύος (χρειάζεται δύο σάπια για την αποστολή σήματος)
boolean powerConfirmed = false;
άκυρη ρύθμιση () {
// αρχικοποιήστε τη σειριακή επικοινωνία και ρυθμίστε τις ακίδες
Serial.begin (9600);
pinMode (οδήγησε, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT).
pinMode (echoPin, είσοδος);
timer = millis ();
}}
κενός βρόχος ()
{
// Serial.println (millis ());
μακρά διάρκεια, ίντσες?
τιμή int.
// Ελέγξτε για ανάγνωση
διάρκεια = doPing ();
// Χρονοδιακόπτης για να επιβεβαιώσετε τις ενέργειες (προς το παρόν μόνο ενέργεια)
εάν (χρονοδιακόπτης && χρονοδιακόπτης <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("επαναφορά χρονομέτρου");
timer = false;
}}
ψηφιακή γραφή (led, LOW);
setColor (0, 0, 0). // off
// μετατρέψτε το χρόνο σε απόσταση
ιντσών = μικροδευτερόλεπταToInches (διάρκεια);
// Αν είναι μικρότερη από max. Εκατοστά μακριά, ενεργήστε
εάν (ίντσες DIST_MAX)
{
doIR (CONTROL_CH, τιμή); // σπρώξτε
}}
αλλού
{
// όγκος
int d = 500; // η πρώτη καθυστέρηση είναι μεγαλύτερη για μία αλλαγή όγκου
// επαναλάβετε μέχρι να αφαιρεθεί το χέρι
ενώ (ίντσες DIST_DOWN)
{
ψηφιακήWrite (led, υψηλή);
επιστροφή CONTROL_UP;
}}
αλλού
{
ψηφιακή γραφή (led, LOW);
επιστροφή CONTROL_DOWN;
}}
}}
/ *
* Σβήστε τον σωστό κώδικα IR
* /
void doIR (έλεγχος int, int val)
{
διακόπτης (έλεγχος)
{
υπόθεση CONTROL_POW:
// power
Serial.println ("ενεργοποίηση / απενεργοποίηση 0xa90");
για το (int i = 0, i <3, i ++)
{
setColor (255, 0, 0).
irsend.sendSony (0xa90, 12). // Κωδικός τροφοδοσίας της Sony TV
καθυστέρηση (40).
}}
διάλειμμα.
υπόθεση CONTROL_CH:
setColor (0, 255, 0).
// εξάγει το κανάλι προς τα επάνω / κάτω, ανάλογα με την τιμή
αν (val == CONTROL_UP)
{
ψηφιακήWrite (led, υψηλή);
για το (int i = 0, i <3, i ++)
{
irsend.sendSony (0x90, 12).
καθυστέρηση (40).
}}
Serial.println ("κανάλι επάνω 0xD00A");
}}
else // προς τα κάτω
{
για το (int i = 0, i <3, i ++)
{
irsend.sendSony (0x890,12).
καθυστέρηση (40).
}}
Serial.println ("κανάλι κάτω 0x3002");
}}
διάλειμμα.
υπόθεση CONTROL_VOL:
setColor (0, 0, 255).
// output 'όγκος προς τα πάνω / κάτω' ανάλογα με το κύμα
αν (val == CONTROL_UP)
{
ψηφιακήWrite (led, υψηλή);
για το (int i = 0, i <3, i ++)
{
irsend.sendSony (0x490,12).
καθυστέρηση (40).
}}
Serial.println ("αύξηση όγκου 0x490");
}}
else // προς τα κάτω
{
για το (int i = 0, i <3, i ++)
{
irsend.sendSony (0xC90, 12).
καθυστέρηση (40).
}}
Serial.println ("μείωση προς τα κάτω 0xC90");
}}
διάλειμμα.
}}
}}
void setColor (int, int πράσινο, int μπλε)
{
analogWrite (ledR, κόκκινο);
analogWrite (ledG, πράσινο);
analogWrite (ledB, μπλε);
}}
long doPing ()
{
ψηφιακήWrite (pingPin, LOW);
καθυστέρησηΜικοδευτερόλεπτα (2);
Ψηφιακή εγγραφή (pingPin, HIGH);
καθυστέρησηΜικοδευτερόλεπτα (5);
ψηφιακήWrite (pingPin, LOW);
παλμός επιστροφήςIn (echoPin, HIGH);
}}
μακροχρόνια μικροδευτερόλεπταToInches (μεγάλα μικροδευτερόλεπτα)
{
// Σύμφωνα με το φύλλο δεδομένων του Parallax για το PING))), υπάρχουν
// 73.746 μικροδευτερόλεπτα ανά ίντσα (δηλαδή ο ήχος ταξιδεύει στα 1130 πόδια ανά
// δευτερόλεπτο). Αυτό δίνει την απόσταση που διανύθηκε από το ping, εξερχόμενη
// και να επιστρέψουμε, έτσι διαιρούμε με 2 για να πάρουμε την απόσταση του εμποδίου.
// Βλέπε: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
επιστρέφουν μικροδευτερόλεπτα / 74/2;
}}
μακροχρόνια μικροδευτερόλεπταToCentimetre (μεγάλα μικροδευτερόλεπτα)
{
// Η ταχύτητα του ήχου είναι 340 m / s ή 29 microseconds ανά εκατοστό.
// Το ping ταξιδεύει προς τα πίσω και πίσω, έτσι ώστε να βρεθεί η απόσταση του
// αντικείμενο παίρνουμε το ήμισυ της διανυθείσας απόστασης.
μικροσκόπια επιστροφής / 29/2;
}}
Ένα χαρακτηριστικό του προγράμματος είναι η αποστολή μηνυμάτων αποσφαλμάτωσης για το τι συμβαίνει αυτήν τη στιγμή στην οθόνη σειριακής θύρας IDE του Arduino. Αφού βεβαιωθείτε ότι όλα λειτουργούν σωστά, στο μέλλον μπορείτε να τροφοδοτήσετε τη συσκευή όχι από τον υπολογιστή, αλλά από το τροφοδοτικό.
Η σειρά αποστολής εντολών:1. Ενεργοποιήστε ή απενεργοποιήστε την τηλεόραση: κυλήστε την παλάμη σας μπροστά από τον ανιχνευτή εμβέλειας σε απόσταση από 0 έως 75 mm, η λυχνία LED RGB θα ανάψει μωβ για 5 δευτερόλεπτα ενώ είναι αναμμένη, αλλάζει και πάλι στην ίδια απόσταση.
2. Μείωση του αριθμού καναλιού - ταλάντευση σε απόσταση από 75 (δεν περιλαμβάνεται) έως 250 mm. Μεγέθυνση - το ίδιο, αλλά σε απόσταση 250 (δεν περιλαμβάνεται) έως 500 mm.
3. Μειώστε ή αυξήστε την ένταση - το ίδιο όπως και με τα κανάλια, αλλά μην κάνετε κύμα, αλλά κρατήστε την παλάμη σας ακίνητη. Ενώ ο χρήστης κρατάει την παλάμη του, η ένταση, ανάλογα με την απόσταση, μειώνεται ή αυξάνεται σύμφωνα με την ίδια λογική με τον αριθμό του καναλιού.
Για να χρησιμοποιήσετε τις υπόλοιπες λειτουργίες (EPG, teletext, είσοδος μπάσων, κ.λπ.), θα πρέπει να έχετε κοντά σας ένα κανονικό τηλεχειριστήριο. Σε σύγχρονες συνθήκες, συνιστάται να προγραμματίσετε τη συσκευή για να ελέγχετε έναν συμβατό αποκωδικοποιητή DVB-T2. Στην περίπτωση του μουσικού κέντρου, τα πάντα είναι διαφορετικά: η αναλογική μετάδοση παραμένει προς το παρόν, αν και στο μέλλον θα υπάρξει μετάβαση στο αρχικό DAB + ή DRM +.
Αφού έχει απομακρυνθεί η δομή, θα πρέπει να τοποθετηθεί στο σώμα οποιασδήποτε δομής - από τα κατασκευασμένα
το κάνετε μόνοι σας από πλέξιγκλας, κόντρα πλακέ, σε οποιοδήποτε κατάλληλο τελικό κουτί, για παράδειγμα, συγκόλληση. Πρέπει να υπάρχουν τρύπες στο περίβλημα για το εύρος ζώνης, το καλώδιο και και τα δύο LED. Συνιστάται να κατευθύνετε τον ανιχνευτή εύρους τιμών και το LED RGB προς τη μία κατεύθυνση και τη δίοδο IR προς την αντίθετη κατεύθυνση.