Výrobci elektroniky postupně docházejí k závěru, že nejlepším dálkovým ovladačem je dlaň uživatele. Takže v novém sloupci "Yandex.Station Mini" poskytuje takovou správu. Nestojte stranou od trendů a přátel. Například autor Instructables pod přezdívkou dan_nicholson přišel s jednoduchým zařízením, které vám umožní ovládat televizi pomocí gest. Ve výchozím nastavení je naprogramováno tak, aby spolupracovalo s televizory Sony, ale lze jej také nakonfigurovat tak, aby ovládalo jakékoli jiné televizory, hudební centra atd. Jak je vidět z KDPV, spočívá
domácí z hledače rozsahu
Arduino a několik dalších komponent. Může být ještě kompaktnější:
A ještě kompaktnější, pokud opustíte prkénko a připojíte vše pájením pomocí drátů. Master vytváří schéma zařízení v programu Fritzing, které se každému nelíbí, ale neponáhlí se házet pantofle, tento způsob vytváření diagramů může být také výhodný. Master připojuje infračervenou LED přes rezistor a všechny krystaly RGB LED jsou přímo připojeny. Píše, že zde jsou žádoucí i rezistory, ale ve skutečnosti jsou vyžadovány.
Po sestavení obvodu hlavní počítač vezme knihovnu
zdea příkazové kódy jsou
zdezapíše a vyplní náčrt:
/ * Přejeďte dálkovým ovladačem
Tato skica používá ultrazvukový dálkoměr k určení gesta uživatele a na základě zadaného příkazu vydává infračervený signál do sony TV.
- Vysoký posun (> 10 palců) = kanál nahoru
- Low swipe = Channel Down
- Vysoké přidržení (> 10 palců) = Zvýšení hlasitosti
- Nízké podržení = Snížení hlasitosti
- Senzor krytu (<3in) = Zapnout / Vypnout
Vytvořil Dan Nicholson.
Tento příklad kódu je ve veřejné doméně.
Tento kód používá knihovnu IRremote (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Definuje ovládací funkce
#define CONTROL_CH 1 // Změna kanálu
#define CONTROL_VOL 2 // Svazek
#define CONTROL_POW 3 // Napájení
#define CONTROL_UP 1
#define CONTROL_DOWN -1
#define DIST_MAX 20 // Maximální vzdálenost v palcích, cokoli výše je ignorováno.
#define DIST_DOWN 10 // Práh pro příkazy nahoru / dolů. Pokud je vyšší, příkaz je "nahoru". Pokud je nižší, „dolů“.
#define DIST_POW 3 // Prahová hodnota pro příkaz napájení, nižší než = zapnutí / vypnutí napájení
// IR PIN
const int irPin = 3; // to je definováno v knihovně, tato var je pouze připomínkou. ZMĚNA TENTO NEZMĚNA PIN V KNIHOVNĚ
// 2 pinový ping senzor
const int pingPin = 8;
const int echoPin = 7;
// Potvrzovací LED kolíky
const int led = 13; // vnitřní LED pro ladění nahoru / dolů
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED na časovači
nepodepsaný dlouhý časovač;
// IR vysílač objekt
IRsend irsend;
// Příznak potvrzení napájení (k odeslání signálu je třeba dvou přejetí prstem)
boolean powerConfirmed = false;
neplatné nastavení () {
// inicializuje sériovou komunikaci a nastaví piny
Serial.egegin (9600);
pinMode (led, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
časovač = millis ();
}
prázdná smyčka ()
{
// Serial.println (millis ());
dlouhé trvání, palce;
int hodnota;
// Zkontrolujte čtení
durace = doPing ();
// Časovač pro potvrzení akcí (aktuálně pouze napájení)
if (časovač && časovač <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("reset časovače");
časovač = false;
}
digitalWrite (led, LOW);
setColor (0, 0, 0); // off
// převést čas na vzdálenost
inches = microsecondsToInches (trvání);
// Pokud je méně než max. 10 palců, jednejte
if (palce DIST_MAX)
{
doIR (CONTROL_CH, hodnota); // přejeďte prstem
}
jinde
{
// objem
int d = 500; // první zpoždění je delší pro změnu jedné hlasitosti
// opakujte, dokud neodstraníte ruku
while (palce DIST_DOWN)
{
digitalWrite (led, HIGH);
návrat CONTROL_UP;
}
jinde
{
digitalWrite (led, LOW);
návrat CONTROL_DOWN;
}
}
/ *
* Vypněte správný IR kód
* /
void doIR (int control, int val)
{
spínač (ovládání)
{
případ CONTROL_POW:
// power
Serial.println ("zapnutí / vypnutí 0xa90");
pro (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Kód napájení televizoru Sony
zpoždění (40);
}
rozbít;
pouzdro CONTROL_CH:
setColor (0, 255, 0);
// výstup 'kanál nahoru / dolů' v závislosti na val
if (val == CONTROL_UP)
{
digitalWrite (led, HIGH);
pro (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
zpoždění (40);
}
Serial.println ("channel up 0xD00A");
}
else // down
{
pro (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
zpoždění (40);
}
Serial.println ("down down 0x3002");
}
rozbít;
pouzdro CONTROL_VOL:
setColor (0, 0, 255);
// výstup 'hlasitost nahoru / dolů' v závislosti na val
if (val == CONTROL_UP)
{
digitalWrite (led, HIGH);
pro (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
zpoždění (40);
}
Serial.println ("zvýšení objemu 0x490");
}
else // down
{
pro (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
zpoždění (40);
}
Serial.println ("snížení hlasitosti 0xC90");
}
rozbít;
}
}
void setColor (int červená, int zelená, int modrá)
{
analogWrite (ledR, red);
analogWrite (ledG, zelená);
analogWrite (ledB, modrý);
}
dlouhý doPing ()
{
digitalWrite (pingPin, LOW);
delayMicroseconds (2);
digitalWrite (pingPin, HIGH);
delayMicroseconds (5);
digitalWrite (pingPin, LOW);
návrat pulseIn (echoPin, HIGH);
}
dlouhé mikrosekundyToInches (dlouhé mikrosekundy)
{
// Podle datového listu Parallaxu pro PING))))
73,746 mikrosekundy na palec (tj. Zvuk se pohybuje rychlostí 1130 stop za
// sekundu). To dává vzdálenost ujetou pingem, odchozí
// a vrátit se, takže vydělíme 2, abychom získali vzdálenost překážky.
// Viz: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
návratové mikrosekundy / 74/2;
}
dlouhé mikrosekundyToCentimetry (dlouhé mikrosekundy)
{
Rychlost zvuku je 340 m / s nebo 29 mikrosekund za centimetr.
// Ping cestuje ven a zpět, aby našel vzdálenost
// objektu vezmeme polovinu ujeté vzdálenosti.
návratové mikrosekundy / 29/2;
}
Součástí programu je odesílání ladících zpráv o tom, co se právě děje, monitoru sériového portu Arduino IDE. Poté, co se ujistíte, že vše funguje správně, můžete v budoucnu zařízení napájet nikoli z počítače, ale ze zdroje napájení.
Pořadí odesílání příkazů:1. Zapněte nebo vypněte televizor: mávejte dlaně před hledačem vzdálenosti ve vzdálenosti 0 až 75 mm, LED RGB se rozsvítí fialově po dobu 5 sekund, zatímco svítí, mávejte znovu ve stejné vzdálenosti.
2. Snižte číslo kanálu - výkyv ve vzdálenosti od 75 (ne včetně) do 250 mm. Zoom - stejný, ale ve vzdálenosti 250 (ne včetně) do 500 mm.
3. Snižte nebo zvyšte hlasitost - stejně jako u kanálů, ale nemávejte, ale držte dlaň nehybně. Zatímco uživatel drží dlaň, hlasitost se v závislosti na vzdálenosti zmenšuje nebo zvyšuje podle stejné logiky jako číslo kanálu.
Chcete-li použít zbývající funkce (EPG, teletext, basový vstup atd.), Měli byste mít vedle sebe běžný dálkový ovladač. V moderních podmínkách je vhodné naprogramovat zařízení tak, aby ovládalo standardní set-top box DVB-T2. V případě hudebního centra je všechno jiné: analogové vysílání zatím zůstává, i když v budoucnu bude přechod na počáteční DAB + nebo DRM +.
Poté, co byla struktura odladěna, měla by být umístěna v těle jakékoli struktury - od vyrobeného
udělej to sám z plexiskla, překližky, do jakékoli vhodné hotové krabice, například pájení. V pouzdru dálkoměru, kabelu a obou LED by měly být umístěny otvory. Doporučuje se zaměřit hledač dosahu a RGB LED v jednom směru a IR diodu v opačném směru.