Elektronikproducenter er gradvis kommet til den konklusion, at den bedste fjernbetjening er brugerens håndflade. Så i den nye kolonne "Yandex.Station Mini" giver sådan styring. Stå ikke bortset fra trends og venner. For eksempel kom forfatteren af Instructables under kaldenavnet dan_nicholson med en simpel enhed, der giver dig mulighed for at kontrollere dit tv med bevægelser. Som standard er det programmeret til at arbejde med Sony TV'er, men kan også konfigureres til at kontrollere alle andre tv'er, musikcentre osv. Som det kan ses fra KDPV, består
hjemmelavet produkt fra rækkevidden finder
Arduino og flere yderligere komponenter. Kan gøres endnu mere kompakt:
Og endnu mere kompakt, hvis du opgiver brødbrættet og tilslutter alt ved lodning ved hjælp af ledninger. Skibsføreren laver et enhedsdiagram i Fritzing-programmet, som ikke alle kan lide, men ikke haste med at kaste hjemmesko. Denne metode til at udarbejde diagrammer kan også være praktisk. Master forbinder en infrarød LED gennem en modstand, og alle krystaller i RGB LED er direkte tilsluttet. Han skriver, at modstande også er ønskelige her, men faktisk kræves det.
Efter at have samlet kredsløbet, tager mesteren biblioteket
her, og kommandokoderne er
herskriver og udfylder skitsen:
/ * Svej fjernbetjening
Denne skitse bruger en ultrasonisk afstandsmåler til at bestemme brugerens gestus og udsender et IR-signal til et Sony TV baseret på den givne kommando.
- Høj skub (> 10in) = Kanal op
- Lav swipe = Kanal ned
- Høj hold (> 10in) = Lydstyrke op
- Lavt hold = lydstyrke nede
- Dækselsensor (<3in) = Tænd / sluk
Oprettet af Dan Nicholson.
Dette eksempelkode er i det offentlige domæne.
Denne kode bruger IRremote-biblioteket (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Definerer for kontrolfunktioner
#definér CONTROL_CH 1 // Kanalændring
#definer CONTROL_VOL 2 // Volume
#definér CONTROL_POW 3 // Strøm
#definér CONTROL_UP 1
#definér CONTROL_DOWN -1
#definér DIST_MAX 20 // Maksimal afstand i tommer, alt over ignoreres.
#definér DIST_DOWN 10 // Tærskelværdi for op / ned-kommandoer. Hvis højere, er kommandoen "op". Hvis det er lavere, "ned".
#define DIST_POW 3 // Tærskel for strømkommando, lavere end = tænd / sluk
// IR-PIN
konst int irPin = 3; // dette er defineret i biblioteket, denne var er bare en påmindelse. ÆNDRING AF DETTE SKAL IKKE ÆNDRE PIN I BIBLIOTEK
// 2 pin-ping-sensor
const int pingPin = 8;
const int echoPin = 7;
// Bekræftelses-LED-pins
konst int led = 13; // intern LED til op / ned-fejlfinding
konst int ledR = 11;
konst int ledG = 10;
konst int ledB = 9;
// LED på timer
usigneret lang timer;
// IR-senderobjekt
IRsend irsend;
// Power-bekræftelsesflag (har brug for to swipes for at sende signal)
boolsk magt bekræftet = falsk;
ugyldig opsætning () {
// initialiserer seriekommunikation og sæt stifter
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 ());
lang varighed, inches;
int-værdi;
// Kontroller for en læsning
varighed = doPing ();
// Timer til bekræftelse af handlinger (i øjeblikket kun strøm)
if (timer && timer <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("timer reset");
timer = falsk;
}
digitalWrite (ledet, lavt);
setColor (0, 0, 0); // slukket
// konvertere tiden til en afstand
tommer = mikrosekunderToInches (varighed);
// Hvis mindre end max. Inches væk, skal du handle
if (tommer DIST_MAX)
{
doIR (CONTROL_CH, værdi); // stryg
}
andet
{
// volumen
int d = 500; // første forsinkelse er længere ved ændring af enkelt lydstyrke
// gentag, indtil hånden er fjernet
mens (tommer DIST_DOWN)
{
digitalWrite (ledet, HØJT);
returner CONTROL_UP;
}
andet
{
digitalWrite (ledet, lavt);
returner CONTROL_DOWN;
}
}
/ *
* Sluk for korrekt IR-kode
* /
void doIR (int-kontrol, int val)
{
afbryder (kontrol)
{
sag CONTROL_POW:
// magt
Serial.println ("tænd / sluk 0xa90");
for (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Sony TV strømkode
forsinkelse (40);
}
break;
sag CONTROL_CH:
setColor (0, 255, 0);
// output 'kanal op / ned' afhængigt af val
if (val == CONTROL_UP)
{
digitalWrite (ledet, HØJT);
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
forsinkelse (40);
}
Serial.println ("kanal op 0xD00A");
}
ellers // ned
{
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
forsinkelse (40);
}
Serial.println ("kanal ned 0x3002");
}
break;
sag CONTROL_VOL:
setColor (0, 0, 255);
// output 'lydstyrke op / ned' afhængigt af val
if (val == CONTROL_UP)
{
digitalWrite (ledet, HØJT);
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
forsinkelse (40);
}
Serial.println ("volumen op 0x490");
}
ellers // ned
{
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
forsinkelse (40);
}
Serial.println ("volumen nede 0xC90");
}
break;
}
}
void setColor (int rød, int green, int blue)
{
analogWrite (ledR, rød);
analogWrite (ledG, grøn);
analogWrite (ledB, blå);
}
lang doPing ()
{
digitalWrite (pingPin, LOW);
forsinkelse Mikrosekunder (2);
digitalWrite (pingPin, HØJ);
forsinkelse Mikrosekunder (5);
digitalWrite (pingPin, LOW);
returpuls (echoPin, HØJ);
}
lange mikrosekunderToInches (lange mikrosekunder)
{
// I henhold til Parallax 'datablad til PING))) findes der
// 73.746 mikrosekunder pr. Tomme (dvs. lyd bevæger sig ved 1130 fod pr
// sekund). Dette giver den afstand, som pingen har rejst, udgående
// og vende tilbage, så vi deler med 2 for at få afstanden fra forhindringen.
// Se: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
returmikrosekunder / 74/2;
}
lange mikrosekunderToCentimeters (lange mikrosekunder)
{
// Lydhastigheden er 340 m / s eller 29 mikrosekunder per centimeter.
// Pingen rejser ud og tilbage, så for at finde afstanden til
// genstand tager vi halvdelen af den tilbagelagte afstand.
returmikrosekunder / 29/2;
}
En funktion af programmet er afsendelse af fejlfindingsmeddelelser om, hvad der sker i øjeblikket til Arduino IDE serielle portmonitor. Når du har sikret dig, at alt fungerer korrekt, kan du i fremtiden tænde enheden ikke fra computeren, men fra strømforsyningen.
Ordren med at sende kommandoer:1. Tænd eller sluk for TV'et: bølg din håndflade foran afstandsmåleren i en afstand fra 0 til 75 mm, RGB-LED'en lyser lilla i 5 sekunder, mens den er tændt, bølg med den samme afstand igen.
2. Sænk kanalnummeret - sving i en afstand fra 75 (ikke inklusive) til 250 mm. Zoom - det samme, men i en afstand af 250 (ikke inklusive) til 500 mm.
3. Sænk eller forøg lydstyrken - det samme som med kanalerne, men bøl ikke, men hold din håndflade bevægelig. Mens brugeren holder sin håndflade, falder eller stiger lydstyrken afhængigt af afstanden efter den samme logik som kanalnummeret.
For at bruge resten af funktionerne (EPG, tekst-tv, basindgang osv.) Skal du holde en regelmæssig fjernbetjening ved siden af dig. Under moderne forhold anbefales det at programmere enheden til at styre en DVB-T2 standard set-top-boks. For musikcentret er alt anderledes: analog udsendelse forbliver i øjeblikket, skønt der i fremtiden vil være en overgang til opstart DAB + eller DRM +.
Efter at have debugged strukturen, skal den placeres i kroppen af enhver struktur - fra den fremstillede
gør det selv fra plexiglas, krydsfiner til enhver passende færdig kasse, for eksempel lodning. Der skal være huller i huset til afstandsmåleren, kablet og begge lysdioder. Det tilrådes at rette afstandsmåleren og RGB-LED i en retning og IR-dioden i den modsatte retning.