Elektronikstillverkarna kommer gradvis till slutsatsen att den bästa fjärrkontrollen är användarens handflata. Så i den nya kolumnen "Yandex.Station Mini" ger sådan hantering. Stå inte bortsett från trender och vänner. Så till exempel kom författaren till Instructables under smeknamnet dan_nicholson med en enkel enhet som låter dig styra din TV med gester. Som standard är den programmerad att fungera med Sony-TV-apparater, men kan också konfigureras för att styra alla andra TV-apparater, musikcentra etc. Som framgår av KDPV, består
hemgjorda produkt från räckviddsökaren
Arduino och flera ytterligare komponenter. Kan göras ännu mer kompakt:
Och ännu mer kompakt om du lämnar brödskivan och ansluter allt genom lödning med trådar. Befälhavaren gör ett enhetsschema i Fritzing-programmet, som inte alla gillar, men inte rusar med att kasta tofflor, denna metod för att utarbeta diagram kan också vara bekväm. Befälhavaren ansluter en infraröd LED genom ett motstånd, och alla kristaller på RGB LED är direkt anslutna. Han skriver att motstånd också är önskvärda här, men i själva verket krävs de.
Efter att ha satt ihop kretsen tar befälhavaren biblioteket
här, och kommandokoderna är
härskriver och fyller skissen:
/ * Dra fjärrkontrollen
Denna skiss använder en ultraljudsavståndsmätare för att bestämma användarens gest och matar ut en IR-signal till en Sony TV baserat på det angivna kommandot.
- High swipe (> 10in) = Channel Up
- Låg svep = Kanal ner
- Hög håll (> 10in) = Volym upp
- Låg håll = Volym ned
- Täckgivare (<3in) = Slå på / av
Skapad av Dan Nicholson.
Det här exemplet är i den allmänna domänen.
Den här koden använder IRremote-biblioteket (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Definierar för styrfunktioner
#definiera CONTROL_CH 1 // Kanaländring
#definiera CONTROL_VOL 2 // Volym
#definiera CONTROL_POW 3 // Ström
#definiera CONTROL_UP 1
#definiera CONTROL_DOWN -1
#definiera DIST_MAX 20 // Maximalt avstånd i tum, allt ovan ignoreras.
#definiera DIST_DOWN 10 // Tröskel för upp / ner-kommandon. Om högre är kommandot "upp". Om lägre, "ner".
#define DIST_POW 3 // Tröskel för kraftkommando, lägre än = ström på / av
// IR-PIN
const int irPin = 3; // detta definieras i biblioteket, denna var är bara en påminnelse. ÄNDRA AV DETTA ÄR INTE ÄNDRANDE PIN I BIBLIOTEK
// 2 Ping Ping Sensor
const int pingPin = 8;
const int echoPin = 7;
// Bekräftelse LED-stift
const int led = 13; // intern LED för upp / ner felsökning
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED på timer
osignerad lång timer;
// IR-sändarobjekt
IRsend irsend;
// Power bekräftelseflagg (behöver två swipes för att skicka signal)
boolean powerConfirmed = falsk;
ogiltig installation () {
// initiera seriekommunikation och stiftstift
Serial.begin (9600);
pinMode (led, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
timer = millis ();
}
void loop ()
{
// Serial.println (millis ());
lång varaktighet, tum;
int-värde;
// Kontrollera om du har läst
varaktighet = doPing ();
// Timer för att bekräfta åtgärder (för närvarande endast ström)
if (timer && timer <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("timeråterställning");
timer = falsk;
}
digitalWrite (led, LÅG);
setColor (0, 0, 0); // av
// konvertera tiden till ett avstånd
tum = mikrosekunderTumar (varaktighet);
// Om mindre än max tum bort, agera
if (tum DIST_MAX)
{
doIR (CONTROL_CH, värde); // svepa
}
annars
{
// volym
int d = 500; // första fördröjningen är längre för ändring av en enda volym
// upprepa tills handen har tagits bort
medan (tum DIST_DOWN)
{
digitalWrite (led, HÖG);
returnera CONTROL_UP;
}
annars
{
digitalWrite (led, LÅG);
returnera CONTROL_DOWN;
}
}
/ *
* Avaktivera korrekt IR-kod
* /
void doIR (int-kontroll, int val)
{
omkopplare (kontroll)
{
fall CONTROL_POW:
// kraft
Serial.println ("ström på / av 0xa90");
för (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Sony TV-strömkod
fördröjning (40);
}
break;
fall CONTROL_CH:
setColor (0, 255, 0);
// mata ut 'kanal upp / ner' beroende på val
if (val == CONTROL_UP)
{
digitalWrite (led, HÖG);
för (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
fördröjning (40);
}
Serial.println ("kanal upp 0xD00A");
}
annars // ned
{
för (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
fördröjning (40);
}
Serial.println ("kanal ner 0x3002");
}
break;
fall CONTROL_VOL:
setColor (0, 0, 255);
// mata ut "volym upp / ner" beroende på val
if (val == CONTROL_UP)
{
digitalWrite (led, HÖG);
för (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
fördröjning (40);
}
Serial.println ("volym upp 0x490");
}
annars // ned
{
för (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
fördröjning (40);
}
Serial.println ("volym ned 0xC90");
}
break;
}
}
void setColor (int röd, int grön, int blå)
{
analogWrite (ledR, röd);
analogWrite (ledG, grön);
analogWrite (ledB, blå);
}
lång doPing ()
{
digitalWrite (pingPin, LOW);
fördröjning Mikrosekunder (2);
digitalWrite (pingPin, HIGH);
fördröjning Mikrosekunder (5);
digitalWrite (pingPin, LOW);
returpuls (echoPin, HÖG);
}
långa mikrosekunderToInches (långa mikrosekunder)
{
// Enligt Parallax datablad för PING))) finns det
// 73.746 mikrosekunder per tum (d.v.s. ljudet reser med 1130 fot per
// sekund). Detta ger avståndet med pingen, utgående
// och återvända, så vi delar med 2 för att få avståndet till hindret.
// Se: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
returmikrosekunder / 74/2;
}
långa mikrosekunderToCentimetrar (långa mikrosekunder)
{
// Ljudets hastighet är 340 m / s eller 29 mikrosekunder per centimeter.
// Pingen reser ut och tillbaka, så för att hitta avståndet till
// objektet tar vi hälften av det reste.
returmikrosekunder / 29/2;
}
En funktion i programmet är att skicka felsökningsmeddelanden om vad som händer för tillfället till Arduino IDE seriella portmonitorn. När du har kontrollerat att allt fungerar korrekt kan du i framtiden strömförsörja enheten inte från datorn utan från strömförsörjningen.
Ordningen att skicka kommandon:1. Slå på eller stänga av TV: n: vinka handflatan framför avståndsökaren på ett avstånd från 0 till 75 mm, RGB-LED-lampan tänds lila i 5 sekunder, medan den lyser, vinkar du på samma avstånd igen.
2. Minska kanalnumret - sväng på avstånd från 75 (inte inklusive) till 250 mm. Zooma - samma, men på ett avstånd från 250 (inte inklusive) till 500 mm.
3. Sänk eller öka volymen - på samma sätt som med kanalerna, men vift inte, men håll handflatan rörlig. Medan användaren håller i handflatan minskar eller ökar volymen, beroende på avståndet, enligt samma logik som kanalnumret.
För att använda resten av funktionerna (EPG, text-TV, basingång, etc.) bör du hålla en vanlig fjärrkontroll bredvid dig. Under moderna förhållanden är det tillrådligt att programmera enheten för att styra en DVB-T2-standardbox. När det gäller musikcentret är allt annorlunda: analog sändning kvarstår för närvarande, även om det i framtiden kommer att bli en övergång till uppstarten DAB + eller DRM +.
Efter att ha felsökt strukturen bör den placeras i kroppen på vilken struktur som helst - från tillverkaren
gör det själv från plexiglas, plywood till valfri färdig låda, till exempel lödning. Hål bör finnas i huset för avståndsmätaren, kabeln och båda lysdioderna. Det är lämpligt att rikta räckvidd och RGB-LED i en riktning och IR-dioden i motsatt riktning.