Els fabricants d’electrònica arriben a la conclusió que el millor control remot és la palma de l’usuari. Així, a la nova columna "Yandex.Station Mini" s'ofereix aquesta gestió. No us aparteu de les tendències i dels amics. Per exemple, l’autor d’Instructables sota el sobrenom de dan_nicholson va trobar un dispositiu senzill que permet controlar el televisor mitjançant gestos. De manera predeterminada, està programat per funcionar amb televisors Sony, però també es pot configurar per controlar qualsevol altre televisor, centre musical, etc. Com es pot veure en KDPV, consisteix
casolans del cercador de gamma
Arduino i diversos components addicionals. Es pot fer encara més compacte:
I encara més compacte si abandoneu la placa i connecteu-ho tot soldant amb cables. El mestre fa un esquema de dispositius al programa Fritzing, que a tothom no agrada, però no s’afanyen a llençar sabatilles, aquest mètode per elaborar diagrames també pot ser convenient. El mestre connecta un LED infraroig mitjançant una resistència i tots els cristalls del LED RGB estan connectats directament. Escriu que les resistències també són desitjables aquí, però en realitat són necessàries.
Havent muntat el circuit, el mestre pren la biblioteca
aquíi els codis de comanda són
aquíescriu i omple l'esbós:
/ * Control remot de lliscar
Aquest esbós utilitza un telescriptor d’ultrasons per determinar el gest de l’usuari i emet un senyal IR a una TV sonora en funció de l’ordre donada.
- Desnivell alt (> 10in) = Pujada del canal
- Desnivell baix = Canal avall
- Manteniment alt (> 10in) = Pujada de volum
- Manteniment baix = Volum baixat
- Sensor de coberta (<3in) = Encès / desactivat
Creat per Dan Nicholson.
Aquest codi d'exemple es troba en el domini públic.
Aquest codi utilitza la biblioteca IRremote (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Defineix les funcions de control
#define CONTROL_CH 1 // Canvi de canal
#define CONTROL_VOL 2 // Volum
#define CONTROL_POW 3 // Potència
#defineu CONTROL_UP 1
#defineu CONTROL_DOWN -1
#define DIST_MAX 20 // La distància màxima en polzades, s'ignora qualsevol cosa anterior.
#define DIST_DOWN 10 // Llindar de les ordres amunt / avall. Si és més alt, la comanda està "amunt". Si baixa, "cap avall".
#define DIST_POW 3 // Llindar de l'ordre d'alimentació inferior a = encès / apagat
// PIN IR
const int irPin = 3; // això es defineix a la biblioteca, aquest var només és un recordatori. CANVIANT AIXIS NO CANVIARÀ EL PIN A LA BIBLIOTECA
// Sensor de ping de 2 pins
const int pingPin = 8;
const int echoPin = 7;
// Pins LED de confirmació
const int led = 13; // LED intern per a la depuració de dalt a baix
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED al temporitzador
temporitzador llarg no signat;
// Objecte transmissor IR
IRsend irsend;
// Indicador de confirmació d’energia (necessita dos remots per enviar senyal)
poder booleàConfermat = fals;
void setup () {
// inicialitzar la comunicació en sèrie i establir pins
Serial.begin (9600);
pinMode (led, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
temporitzador = millis ();
}
bucle void ()
{
// Serial.println (millis ());
llarga durada, polzades;
valor int;
// Comproveu una lectura
durada = doPing ();
// Temporitzador per confirmar accions (actualment només és potència)
if (timer && timer <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("restabliment del temporitzador");
temporitzador = fals;
}
digitalWrite (led, LOW);
setColor (0, 0, 0); // apagat
// convertir el temps en distància
polzades = microsecondsToInches (durada);
// Si es troba a menys de polzades màx
if (polzades DIST_MAX)
{
doIR (CONTROL_CH, valor); // lliscar
}
més
{
// volum
int d = 500; // El primer retard és més llarg per al canvi de volum únic
// repetir fins que es tregui la mà
mentre (polzades DIST_DOWN)
{
digitalWrite (led, HIGH);
retornar CONTROL_UP;
}
més
{
digitalWrite (led, LOW);
retornar CONTROL_DOWN;
}
}
/ *
* Apagueu el codi IR correcte
* /
void doIR (int control, int val)
{
interruptor (control)
{
cas CONTROL_POW:
// poder
Serial.println ("encès / apagat 0xa90");
per a (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Codi de poder de Sony TV
retard (40);
}
trencar;
cas CONTROL_CH:
setColor (0, 255, 0);
// sortida 'canal amunt / avall' en funció de val
if (val == CONTROL_UP)
{
digitalWrite (led, HIGH);
per a (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
retard (40);
}
Serial.println ("canalització 0xD00A");
}
més // baix
{
per a (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
retard (40);
}
Serial.println ("canal baix 0x3002");
}
trencar;
cas CONTROL_VOL:
setColor (0, 0, 255);
// sortida "volum amunt / avall" segons val
if (val == CONTROL_UP)
{
digitalWrite (led, HIGH);
per a (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
retard (40);
}
Serial.println ("volum 0x490");
}
més // baix
{
per a (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
retard (40);
}
Serial.println ("volum baixant 0xC90");
}
trencar;
}
}
void setColor (vermell int, verd verd, blau intens)
{
analogWrite (ledR, vermell);
analogWrite (ledG, verd);
analogWrite (ledB, blau);
}
llarga durada ()
{
digitalWrite (pingPin, LOW);
delayMicrosegons (2);
digitalWrite (pingPin, HIGH);
delayMicrosegons (5);
digitalWrite (pingPin, LOW);
retorn de pulsió (echoPin, HIGH);
}
microsegons llargsToInches (microsegons llargs)
{
// Segons el full de dades de Parallax per al PING))), n’hi ha
// 73.746 microsegons per polzada (és a dir, el so recorre 1130 peus per
// segon). Això dóna la distància recorreguda pel ping, sortint
// i tornem, de manera que dividim per 2 per obtenir la distància de l’obstacle.
// Vegeu: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
microsegons de retorn / 74/2;
}
microsegons llargsToCentímetres (microsegons llargs)
{
// La velocitat del so és de 340 m / s o 29 microsegons per centímetre.
// El ping viatja cap enrere i cap enrere, per tal de trobar la distància del
// objecte que agafem la meitat de la distància recorreguda.
microsegons de retorn / 29/2;
}
Una característica del programa és enviar al monitor de port sèrie Arduino IDE la depuració de missatges sobre el que està passant en aquest moment. Després d’assegurar-se que tot funciona correctament, en el futur podreu alimentar el dispositiu no des de l’ordinador, sinó des de la font d’alimentació.
L'ordre d'enviar ordres:1. Engegueu o apagueu el televisor: feu el palmell davant del cercador d’interval a una distància de 0 a 75 mm, el LED RGB s’il·luminarà morat durant 5 segons, mentre s’encén, torna a agitar a la mateixa distància.
2. Disminuïu el número de canal: balancegeu-lo a una distància de 75 (no inclosos) a 250 mm. Zoom: el mateix, però a una distància de 250 (no inclosos) a 500 mm.
3. Disminuir o augmentar el volum, el mateix que amb els canals, però no fer onades, però mantingui el palmell immòbil. Mentre l'usuari està subjectant la palma, el volum, segons la distància, disminueix o augmenta segons la mateixa lògica que el número de canal.
Per utilitzar altres funcions (EPG, teletext, entrada de baixa freqüència, etc.) heu de mantenir un control remot regular al vostre costat. En condicions modernes, és recomanable programar el dispositiu per controlar una caixa de configuració estàndard DVB-T2. En el cas del centre musical, tot és diferent: de moment es manté la retransmissió analògica, tot i que en el futur hi haurà una transició cap a la posada en marxa DAB + o DRM +.
Després d’haver depurat l’estructura, s’ha de col·locar al cos de qualsevol estructura - de la fabricada
fes-ho tu mateix des de plexiglass, contraplacat, fins a qualsevol caixa acabada adequada, per exemple, soldadura. S'han de disposar de forats a la carcassa del televisor, cable i ambdós leds. És recomanable dirigir el cercador de gamma i el LED RGB en una direcció i el díode IR en sentit contrari.