Proizvođači elektronike postupno dolaze do zaključka da je najbolji daljinski upravljač dlan korisnika. Tako u novom stupcu "Yandex.Station Mini" pruža takvo upravljanje. Nemojte stajati na stranu trendova i prijatelja. Tako je, na primjer, autor Upute za rad pod nadimkom dan_nicholson smislio jednostavan uređaj koji vam omogućuje kontrolu televizora pomoću gesta. Prema zadanim postavkama programirano je za rad sa Sony televizorima, ali također se može konfigurirati za kontrolu bilo kojeg drugog televizora, glazbenog centra itd. Kao što se može vidjeti iz KDPV, sastoji se od
domaći proizvod iz pretraživača dometa
Težak i nekoliko dodatnih komponenti. Može se učiniti još kompaktnijim:
A još je kompaktnije ako napustite ploču i sve povežete lemljenjem pomoću žica. Majstor u programu Fritzing napravi dijagram uređaja, koji se ne sviđa svima, ali ne žuri baciti papuče, ova metoda izrade dijagrama također može biti zgodna. Glavni poveziva infracrvenu LED diodu kroz otpornik, a svi kristali RGB LED-a izravno su povezani. Piše da su i ovdje otporni otpornici, ali u stvari su potrebni.
Sastavivši krug, majstor uzima knjižnicu
ovdje, a naredbeni su kodovi
ovdjepiše i ispunjava skicu:
/ * Prevucite prstom Daljinski upravljač
Ova skica koristi ultrazvučni daljinomjer za određivanje gestove korisnika i šalje IR signal na sony TV na temelju date naredbe.
- Visoko prelazite prstom (> 10in) = Kanal prema gore
- Mali pomak = Kanal prema dolje
- Visoko čekanje (> 10in) = povećanje glasnoće
- Malo zadržavanje = smanjenje glasnoće
- Senzor poklopca (<3in) = Uključivanje / Isključivanje
Stvorio Dan Nicholson.
Ovaj primjer koda je u javnoj domeni.
Ovaj kôd koristi knjižnicu IRremote (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Definira za upravljačke funkcije
#define CONTROL_CH 1 // Promjena kanala
#define CONTROL_VOL 2 // Svezak
#define CONTROL_POW 3 // Snaga
#define CONTROL_UP 1
#define CONTROL_DOWN -1
#define DIST_MAX 20 // Maksimalna udaljenost u inčima, zanemaruje se sve gore.
#define DIST_DOWN 10 // Prag za naredbe gore / dolje. Ako je viša, naredba je "gore". Ako je niže, "dolje".
#define DIST_POW 3 // Prag za naredbu napajanja, niži od = uključivanje / isključivanje napajanja
// IR PIN
const int irPin = 3; // ovo je definirano u biblioteci, ovaj var je samo podsjetnik. PROMJENU OVO NE BI PROMIJENILI PIN U KNJIŽNICI
// 2-polni osjetnik pinga
const int pingPin = 8;
const int echoPin = 7;
// Potvrda LED pinovi
const int led = 13; // unutarnji LED za uklanjanje pogrešaka gore / dolje
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED na mjeraču vremena
nepotpisani dugi tajmer;
// Objekt IR odašiljača
IRsend irsend;
// Oznaka potvrde napajanja (potrebna su dva poteza za slanje signala)
booleova snagaConfirmed = false;
poništavanje postave () {
// inicijalizirati serijsku komunikaciju i postaviti igle
Serijski počet (9600);
pinMode (vodio, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
timer = millis ();
}
void petlja ()
{
// Serijski.println (millis ());
dugo trajanje, inča;
int vrijednost;
// Provjerite ima li čitanja
trajanje = doPing ();
// Mjerač vremena za potvrdu akcija (trenutno samo napajanje)
if (timer && timer <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("resetiranje vremena");
timer = lažno;
}
digitalWrite (led, LOW);
setColor (0, 0, 0); // isključeno
// pretvoriti vrijeme u daljinu
inča = mikrosekunde sata (trajanje);
// Ako je udaljen manje od max inča, djelujte
ako (inča DIST_MAX)
{
doIR (CONTROL_CH, vrijednost); // prelaziti prstom
}
drugo
{
// svezak
int d = 500; // prvo kašnjenje je duže za pojedinačnu promjenu glasnoće
// ponavljajte dok se ruka ne ukloni
dok (inča DIST_DOWN)
{
digitalWrite (vodio, VISOK);
povratak CONTROL_UP;
}
drugo
{
digitalWrite (led, LOW);
povratak CONTROL_DOWN;
}
}
/ *
* Isključite ispravan IR kod
* /
void doIR (int kontrola, int val)
{
sklopka (upravljanje)
{
slučaj CONTROL_POW:
// snaga
Serial.println ("uključivanje / isključivanje 0xa90");
za (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Šifra napajanja Sony TV
kašnjenje (40);
}
razbiti;
slučaj CONTROL_CH:
setColor (0, 255, 0);
// izlaz 'kanal gore / dolje', ovisno o val
ako (val == CONTROL_UP)
{
digitalWrite (vodio, VISOK);
za (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
kašnjenje (40);
}
Serial.println ("kanal do 0xD00A");
}
drugo // dolje
{
za (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
kašnjenje (40);
}
Serial.println ("kanal dolje 0x3002");
}
razbiti;
slučaj CONTROL_VOL:
setColor (0, 0, 255);
// izlazni 'volumen gore / dolje', ovisno o val
ako (val == CONTROL_UP)
{
digitalWrite (vodio, VISOK);
za (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
kašnjenje (40);
}
Serial.println ("glasnoća do 0x490");
}
drugo // dolje
{
za (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
kašnjenje (40);
}
Serial.println ("glasnoća 0xC90");
}
razbiti;
}
}
void setColor (int crvena, int zelena, int plava)
{
analogWrite (ledR, crveno);
analogWrite (ledG, zelena);
analogWrite (ledB, plava);
}
dugo doPing ()
{
digitalWrite (pingPin, LOW);
kašnjenjeMikrosekunde (2);
digitalWrite (pingPin, HIGH);
kašnjenjeMikrosekunde (5);
digitalWrite (pingPin, LOW);
povratni pulsIn (echoPin, HIGH);
}
duge mikrosekundeToInče (duge mikrosekunde)
{
// Prema Parallaxovoj listi za PING))), postoje
// 73.746 mikrosekundi po inču (tj. Zvuk putuje 1130 stopa po per
// drugi). Ovo daje udaljenost prijeđenu pingom i odlazak
// i vratimo, pa dijelimo s 2 da bismo dobili udaljenost prepreke.
// Pogledajte: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
povratne mikrosekunde / 74/2;
}
dugi mikrosekundeToCentimeters (dugi mikrosekundi)
{
// Brzina zvuka je 340 m / s ili 29 mikrosekundi po centimetru.
// Ping putuje unatrag i nazad, tako da pronađe udaljenost od
// objekt uzimamo polovicu prijeđene udaljenosti.
povratne mikrosekunde / 29/2;
}
Značajka programa je slanje programa za uklanjanje pogrešaka o onome što se trenutno događa na monitoru Arduino IDE serijskog porta. Nakon što osigurate da sve ispravno radi, ubuduće uređaj možete napajati ne iz računala, nego iz napajanja.
Redoslijed slanja naredbi:1. Uključite ili isključite televizor: mahnite dlanom ispred daljinskog upravljača na udaljenosti od 0 do 75 mm, RGB LED žaruljica će svijetliti ljubičasto 5 sekundi, dok svijetli, mazite opet na istoj udaljenosti.
2. Smanjite broj kanala - ljuljajte se na udaljenosti od 75 (nije uključeno) na 250 mm. Zum - isti, ali na udaljenosti od 250 (nije uključeno) do 500 mm.
3. Smanjite ili povećajte glasnoću - isto kao i kod kanala, ali ne mašite, već dlan držite nepomično. Dok korisnik drži svoj dlan, glasnoća, ovisno o udaljenosti, smanjuje se ili povećava po istoj logici kao i broj kanala.
Za korištenje ostalih funkcija (EPG, teletekst, bas unos, itd.) Držite se redovnog daljinskog upravljača pokraj sebe. U modernim uvjetima, preporučljivo je programirati uređaj za upravljanje DVB-T2 standardnim prijemnikom. U slučaju glazbenog centra sve je drugačije: analogno emitiranje zasad ostaje, iako će u budućnosti doći do prijelaza na start-up DAB + ili DRM +.
Učinili uklanjanje greške u strukturi, ona bi trebala biti postavljena u tijelo bilo koje strukture - od proizvedene
učinite to sami od pleksiglasa, šperploče, do bilo koje prikladne gotove kutije, na primjer, lemljenjem. U kućištu trebaju biti otvori za daljinomjer, kabel i obje LED diode. Preporučljivo je daljinomjer i RGB LED usmjeriti u jednom smjeru, a IR diodu u suprotnom smjeru.