Az elektronikai gyártók fokozatosan arra a következtetésre jutnak, hogy a legjobb távirányító a felhasználói tenyér. Tehát az új oszlopban a "Yandex.Station Mini" biztosítja ezt a kezelést. Ne maradjon távol a trendektől és a barátoktól. Tehát például a danucnikon becenév alatt az Instructables szerzője egy egyszerű eszközzel állt elő, amely lehetővé teszi, hogy mozdulatokkal vezérelje a TV-jét. Alapértelmezés szerint a Sony TV-kkel való együttműködésre van programozva, de konfigurálható bármilyen más TV, zenei központ stb. Vezérlésére is. Mint látható a KDPV-ből, áll
Házitermékek a távolságmérőből
Arduino és további kiegészítő elemek. Még kompaktabbá tehető:
És még kompaktabb, ha elhagyja a kenyérvágódeszkát, és mindent összekapcsol vezetékekkel történő forrasztással. A mester készül egy eszközdiagramot a Fritzing programban, amely nem mindenkinek tetszik, de ne siess papucsot dobni, ez a diagramok készítésének módja szintén kényelmes lehet. A mester egy ellenálláson keresztül csatlakozik egy infravörös LED-hez, és az RGB LED összes kristályja közvetlenül csatlakozik. Azt írja, hogy az ellenállások itt is kívánatosak, de valójában szükségük van rá.
Az áramkör összeállítása után a mester veszi a könyvtárat
itt, és a parancskódok
ittírja és kitölti a vázlatot:
/ * Húzza a távirányítót
Ez a vázlat ultrahangos távolságmérőt használ a felhasználó gesztusának meghatározására, és az IR jelet a megadott parancs alapján továbbítja a sony TV-hez.
- Nagy ellop (> 10 hüvelyk) = Csatorna fel
- Alacsony ellop = Csatorna le
- Magas tartás (> 10 hüvelyk) = Hangerő növelése
- Alacsony tartás = Hangerő le
- Fedél érzékelő (<3in) = Be- / kikapcsolás
Készítette: Dan Nicholson.
Ez a példakód nyilvános.
Ez a kód az IRremote könyvtárat használja (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Meghatározza a vezérlő funkciókat
#define CONTROL_CH 1 // Csatornaváltás
#define CONTROL_VOL 2 // Kötet
#define CONTROL_POW 3 // Teljesítmény
#define CONTROL_UP 1
#define CONTROL_DOWN -1
#define DIST_MAX 20 // A maximális távolság hüvelykben, a fenti elemeket nem veszik figyelembe.
#define DIST_DOWN 10 // A fel / le parancsok küszöbértéke. Ha magasabb, akkor a parancs "fel". Ha alacsonyabb, akkor "le".
#define DIST_POW 3 // A tápfeszültség parancsának küszöbértéke, alacsonyabb, mint = a be- / kikapcsolás értéke
// IR PIN
const int irPin = 3; // ezt a könyvtár határozza meg, ez a var csak emlékeztető. Ennek megváltoztatása nem változtatja meg a PIN-kódot a könyvtárban
// 2 tűs ping-érzékelő
const int pingPin = 8;
const int echoPin = 7;
// Megerősítő LED csapok
const int led = 13; // belső LED fel / le hibakereséshez
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED az időzítőn
alá nem írt hosszú időzítő;
// IR adó objektum
IRsend irsend;
// Teljesítmény-megerősítő zászló (jel elküldéséhez két ujj szükséges)
boolean powerConfirmed = false;
érvénytelen beállítás () {
// inicializálja a soros kommunikációt és állítsa be a csapokat
Serial.begin (9600);
pinMode (led, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
időzítő = millis ();
}
üres hurok ()
{
// Serial.println (millis ());
hosszú időtartam, hüvelyk;
int érték;
// Ellenőrizze az olvasást
időtartam = doPing ();
// Időzítő a műveletek megerősítéséhez (jelenleg csak tápellátás)
if (időzítő && időzítő <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("időzítő visszaállítása");
időzítő = hamis;
}
digitalWrite (led, LOW);
setColor (0, 0, 0); // ki
// konvertálja az időt távolságra
hüvelyk = mikrosekundumokToInches (időtartam);
// Ha kevesebb, mint max hüvelyk távol van, járjon el
if (hüvelyk DIST_MAX)
{
doIR (CONTROL_CH, érték); // ellop
}
más
{
// kötet
int d = 500; // az első késleltetés hosszabb az egy kötet megváltoztatásánál
// ismételje meg a kéz eltávolítását
míg (hüvelyk DIST_DOWN)
{
digitalWrite (led, magas);
visszatérés CONTROL_UP;
}
más
{
digitalWrite (led, LOW);
visszatérés CONTROL_DOWN;
}
}
/ *
* Tűz ki a helyes IR kódot
* /
érvénytelen doIR (int control, int val)
{
kapcsoló (vezérlés)
{
eset CONTROL_POW:
// hatalom
Serial.println ("be- / kikapcsolás 0xa90");
for (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Sony TV hálózati kódja
késleltetés (40);
}
break;
eset CONTROL_CH:
setColor (0, 255, 0);
// 'csatorna fel / le' kimenet a val
if (val == CONTROL_UP)
{
digitalWrite (led, magas);
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
késleltetés (40);
}
Serial.println ("csatorna felfelé 0xD00A");
}
else // le
{
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
késleltetés (40);
}
Serial.println ("csatorna lefelé 0x3002");
}
break;
eset CONTROL_VOL:
setColor (0, 0, 255);
// kimeneti 'hangerő fel / le' a val
if (val == CONTROL_UP)
{
digitalWrite (led, magas);
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
késleltetés (40);
}
Serial.println ("hangerő növelése 0x490");
}
else // le
{
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
késleltetés (40);
}
Serial.println ("hangerő 0xC90 lefelé");
}
break;
}
}
void setColor (int piros, int zöld, int kék)
{
analogWrite (ledR, piros);
analoWrite (ledG, zöld);
analogWrite (ledB, kék);
}
hosszú doPing ()
{
digitalWrite (pingPin, LOW);
késleltetésMikrosekundumok (2);
digitalWrite (pingPin, HIGH);
késleltetésMikrosekundumok (5);
digitalWrite (pingPin, LOW);
visszatérő impulzus (echoPin, HIGH);
}
hosszú mikrosekundumokToInches (hosszú mikrosekundumok)
{
// A Parallax adatlapja szerint a PING))) vannak
// 73,746 mikrosekundum / hüvelyk (azaz a hang 1130 láb / perc sebességgel halad)
// második). Ez megadja a ping által megtett távolságot, kimenő
// és visszatér, tehát ketté osztjuk, hogy megkapjuk az akadály távolságát.
// Lásd: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
visszatérő mikrosekundumok / 74/2;
}
hosszú mikrosekundumokToCentimeters (hosszú mikrosekundumok)
{
A hang sebessége 340 m / s vagy 29 mikrosekund / centiméter.
// A ping oda-vissza halad, tehát a
// objektum a megtett távolság felét vesszük fel.
visszatérési mikrosekundumok / 29/2;
}
A program egyik jellemzője, hogy hibakeresési üzeneteket küld az Arduino IDE soros port monitorjára arról, hogy mi történik a pillanatban. Miután ellenőrizte, hogy minden helyesen működik-e, a jövőben az eszközt nem a számítógépről, hanem a tápegységről táplálja.
A parancsok küldésének sorrendje:1. Kapcsolja be vagy ki a tv-készüléket: hullámozza a tenyerét a távolságmérő előtt 0–75 mm távolságra, az RGB LED 5 másodpercig bíboran világít, míg világít, ugyanazon a távolságon hullámzik.
2. Csökkentse a csatorna számát - ingassa 75 (nem beleszámítva) és 250 mm távolságra. Nagyítás - ugyanaz, de 250 (nem beleszámítva) 500 mm távolságra.
3. Csökkentse vagy növelje a hangerőt - ugyanúgy, mint a csatornáknál, de ne hullámozzon, hanem mozdulatlanul tartsa a tenyerét. Amíg a felhasználó tartja a tenyerét, a hangerő, a távolságtól függően, a csatornaszámmal megegyező logika szerint csökken vagy növekszik.
A többi funkció (EPG, teletext, basszus bemenet stb.) Használatához rendszeres távirányítót kell tartania magának. Modern körülmények között tanácsos a készüléket programozni a DVB-T2 szabványos set-top box vezérléséhez. A zeneközpont esetében minden más: az analóg műsorszórás egyelőre megmarad, bár a jövőben áttér az induló DAB + vagy DRM + rendszerre.
A szerkezet hibakeresése után minden szerkezet testébe kell helyezni - a gyártottól
csináld magad a plexi üvegből, rétegelt lemezből, bármilyen alkalmas kész dobozba, például forrasztáshoz. A távolságmérő, a kábel és mindkét LED számára a házban lyukakat kell biztosítani. Ajánlatos a távolságmérőt és az RGB LED-et egy irányba, az IR diódát pedig az ellenkező irányba irányítani.