Elektronikkprodusenter konkluderer gradvis at den beste fjernkontrollen er brukerens håndflate. Så i den nye spalten gir "Yandex.Station Mini" slik styring. Ikke stå bortsett fra trender og venner. Så for eksempel kom forfatteren av Instructables under kallenavnet dan_nicholson med en enkel enhet som lar deg kontrollere TV-en din ved å bruke bevegelser. Som standard er den programmert til å fungere med Sony TV-er, men kan også konfigureres til å kontrollere andre TV-er, musikksentre osv. Som det fremgår av KDPV
hjemmelaget produkt fra rekkevidden
Arduino og flere tilleggskomponenter. Kan gjøres enda mer kompakt:
Og enda mer kompakt hvis du forlater brødbordet og kobler til alt ved lodding ved hjelp av ledninger. Mesteren lager et enhetsdiagram i Fritzing-programmet, som ikke alle liker, men ikke skynder seg å kaste tøfler, denne metoden for å tegne diagrammer kan også være praktisk. Master kobler en infrarød LED gjennom en motstand, og alle krystaller av RGB LED er direkte koblet til. Han skriver at motstander også er ønskelige her, men faktisk er de påkrevd.
Etter å ha montert kretsløpet, tar masteren biblioteket
her, og kommandokodene er
herskriver og fyller skissen:
/ * Sveip fjernkontrollen
Denne skissen bruker en ultrasonisk avstandsmåler for å bestemme brukerens gest og gir ut et IR-signal til en Sony TV basert på kommandoen som er gitt.
- Høy sveip (> 10in) = Kanal opp
- Lav sveip = Kanal ned
- Høy hold (> 10in) = Volum opp
- Lavt hold = Volum ned
- Dekksensor (<3in) = Slå av / på
Opprettet av Dan Nicholson.
Dette eksempelskoden er i det offentlige.
Denne koden bruker IRremote-biblioteket (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Definerer for kontrollfunksjoner
#definere CONTROL_CH 1 // Kanalendring
#definere CONTROL_VOL 2 // Volum
#definere CONTROL_POW 3 // Strøm
#definere CONTROL_UP 1
#definere CONTROL_DOWN -1
#definere DIST_MAX 20 // Maksimal avstand i tommer, alt over blir ignorert.
#definere DIST_DOWN 10 // Terskel for opp / ned-kommandoer. Hvis høyere, er kommandoen "opp". Hvis lavere, "ned".
#define DIST_POW 3 // Terskel for strømkommando, lavere enn = slå av / på
// IR-PIN
const int irPin = 3; // dette er definert i biblioteket, denne var er bare en påminnelse. ENDRING AV DETTE VIL IKKE ENDRE PIN I BIBLIOTEK
// 2-pinners Ping-sensor
const int pingPin = 8;
const int echoPin = 7;
// LED-pinner for bekreftelse
const int led = 13; // intern LED for feilsøking opp / ned
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED på timer
usignert lang tidtaker;
// IR-senderobjekt
IRsend irsend;
// Power bekreftelsesflagg (trenger to sveiper for å sende signal)
boolsk makt bekreftet = usant;
ugyldig oppsett () {
// initialisere seriell kommunikasjon og sett pinner
Serial.begin (9600);
pinMode (ledet, UTGANG);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
tidtaker = millis ();
}
void loop ()
{
// Serial.println (millis ());
lang varighet, inches;
int-verdi;
// Sjekk for en lesning
varighet = doPing ();
// Timer for å bekrefte handlinger (for øyeblikket bare strøm)
if (timer && timer <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("timer reset");
tidtaker = falsk;
}
digitalWrite (ledet, LAV);
setColor (0, 0, 0); // av
// konvertere tiden på avstand
tommer = mikrosekunderToInches (varighet);
// Hvis mindre enn maks. 20 centimeter unna, må du handle
if (tommer DIST_MAX)
{
doIR (CONTROL_CH, verdi); // sveip
}
annet
{
// volum
int d = 500; // første forsinkelse er lengre for endring av enkeltvolum
// gjenta til hånden er fjernet
mens (tommer DIST_DOWN)
{
digitalWrite (ledet, HØYT);
returner CONTROL_UP;
}
annet
{
digitalWrite (ledet, LAV);
returner CONTROL_DOWN;
}
}
/ *
* Avbryt riktig IR-kode
* /
void doIR (int control, int val)
{
bryter (kontroll)
{
sak CONTROL_POW:
// kraft
Serial.println ("slå av / på 0xa90");
for (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Sony TV strømkode
forsinkelse (40);
}
break;
sak CONTROL_CH:
setColor (0, 255, 0);
// output 'channel up / down' avhengig av val
if (val == CONTROL_UP)
{
digitalWrite (ledet, HØYT);
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
forsinkelse (40);
}
Serial.println ("kanal opp 0xD00A");
}
ellers // ned
{
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
forsinkelse (40);
}
Serial.println ("kanal ned 0x3002");
}
break;
sak CONTROL_VOL:
setColor (0, 0, 255);
// output 'volum opp / ned' avhengig av val
if (val == CONTROL_UP)
{
digitalWrite (ledet, HØYT);
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
forsinkelse (40);
}
Serial.println ("volum opp 0x490");
}
ellers // ned
{
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
forsinkelse (40);
}
Serial.println ("volum ned 0xC90");
}
break;
}
}
void setColor (int rød, int grønn, int blå)
{
analogWrite (ledR, rød);
analogWrite (ledG, grønn);
analogWrite (ledB, blå);
}
lang doPing ()
{
digitalWrite (pingPin, LOW);
forsinkelse Mikrosekunder (2);
digitalWrite (pingPin, HIGH);
forsinkelse Mikrosekunder (5);
digitalWrite (pingPin, LOW);
returpuls (echoPin, HIGH);
}
lange mikrosekunderToInches (lange mikrosekunder)
{
// I følge Parallax sitt datablad for PING))), finnes det
// 73,746 mikrosekunder per tomme (dvs. lyd beveger seg med 1130 fot pr
// sekund). Dette gir avstanden tilbakelagt av pingen, utgående
// og returner, så deler vi med 2 for å få avstanden til hindringen.
// Se: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
returmikrosekunder / 74/2;
}
lange mikrosekunderToCentimeters (lange mikrosekunder)
{
// Lydhastigheten er 340 m / s eller 29 mikrosekunder per centimeter.
// Pingen reiser ut og tilbake, så for å finne avstanden til
// objekt tar vi halvparten av tilbakelagt distanse.
retur mikrosekunder / 29/2;
}
En funksjon i programmet er sending av feilsøkingsmeldinger om hva som skjer for øyeblikket til Arduino IDE serielle portmonitor. Etter å ha sørget for at alt fungerer riktig, kan du i fremtiden slå strøm på enheten ikke fra datamaskinen, men fra strømforsyningen.
Rekkefølgen for å sende kommandoer:1. Slå TVen av eller på: vift håndflaten foran avstandsøkeren i en avstand fra 0 til 75 mm, RGB-LED-en lyser lilla i 5 sekunder, mens den lyser, bølg på samme avstand igjen.
2. Reduser kanalnummeret - sving i avstand fra 75 (ikke inkludert) til 250 mm. Zoom - det samme, men i en avstand fra 250 (ikke inkludert) til 500 mm.
3. Senk eller øk volumet - det samme som med kanalene, men ikke vink, men hold håndflaten ubevegelig. Mens brukeren holder håndflaten, reduseres eller øker volumet, avhengig av avstanden, i henhold til samme logikk som kanalnummeret.
For å bruke resten av funksjonene (EPG, tekst-TV, bassinngang osv.), Bør du holde en vanlig fjernkontroll ved siden av. Under moderne forhold anbefales det å programmere enheten for å kontrollere en DVB-T2 standard set-top-boks. Når det gjelder musikksenteret er alt annerledes: analog kringkasting gjenstår foreløpig, selv om det i fremtiden vil være en overgang til oppstarten DAB + eller DRM +.
Etter å ha feilsøkt strukturen, bør den plasseres i kroppen til enhver struktur - fra den produserte
gjør det selv fra pleksiglass, kryssfiner til hvilken som helst passende ferdig eske, for eksempel lodding. Det skal være hull i huset for avstandsmåleren, kabelen og begge lysdioder. Det anbefales å rette avstandsfinner og RGB-LED i en retning, og IR-dioden i motsatt retning.