Elektronikas ražotāji pakāpeniski nonāk pie secinājuma, ka vislabākā tālvadības pults ir lietotāja plauksta. Tātad jaunajā kolonnā "Yandex.Station Mini" nodrošina šādu pārvaldību. Neuzstādieties malā no tendencēm un draugiem. Tā, piemēram, instrumenta Instructables autors ar segvārdu dan_nicholson nāca klajā ar vienkāršu ierīci, kas ļauj kontrolēt televizoru, izmantojot žestus. Pēc noklusējuma tas ir ieprogrammēts darbam ar Sony televizoriem, bet to var arī konfigurēt, lai vadītu visus citus televizorus, mūzikas centrus utt. Kā redzams no KDPV, sastāv
mājās gatavots no diapazona meklētāja
Arduino un vairākas papildu sastāvdaļas. Var padarīt vēl kompaktu:
Un vēl kompaktāks, ja jūs atsakāties no maizes dēļa un savienojat visu, lodējot, izmantojot vadus. Meistars programmā Fritzing izveido ierīces diagrammu, kas ne visiem patīk, bet nesteidzas mest čības, arī šī diagrammu sastādīšanas metode var būt ērta. Kapteinis caur rezistoru savieno infrasarkano gaismas diodi, un visi RGB gaismas diodes kristāli ir tieši savienoti. Viņš raksta, ka arī rezistori šeit ir vēlami, taču patiesībā tie ir nepieciešami.
Pēc shēmas montāžas meistars ņem bibliotēku
šeit, un komandu kodi ir
šeitraksta un aizpilda skici:
/ * Pārvelciet tālvadības pulti
Šajā skicē tiek izmantots ultraskaņas diapazona meklētājs, lai noteiktu lietotāja žestu, un, pamatojoties uz doto komandu, tas izvada IR signālu skaņas televizoram.
- Augsts vilkšana (> 10 collas) = Channel Up
- Zems zvēliens = Channel Down
- augsta aizturēšana (> 10 collas) = skaļuma palielināšana
- zema aizturēšana = skaļuma samazināšana
- Pārsega sensors (<3 collas) = ieslēgt / izslēgt
Izveidoja Dan Nicholson.
Šis koda piemērs ir publiski pieejams.
Šis kods izmanto IRremote bibliotēku (https://github.com/shirriff/Arduino-IRremote)
* /
# iekļaut
// Definē kontroles funkcijas
#define CONTROL_CH 1 // Kanāla maiņa
#define CONTROL_VOL 2 // Apjoms
#define CONTROL_POW 3 // Jauda
#define CONTROL_UP 1
#definēt CONTROL_DOWN -1
#define DIST_MAX 20 // Maksimālais attālums collās, tiek ņemts vērā viss iepriekš minētais.
#define DIST_DOWN 10 // Augšup / leju komandu slieksnis. Ja augstāk, komanda ir "uz augšu". Ja zemāks, "uz leju".
#definēt DIST_POW 3 // barošanas komandas slieksnis, zemāks par = ieslēgšana / izslēgšana
// IR PIN
const int irPin = 3; // tas ir definēts bibliotēkā, šis var ir tikai atgādinājums. ŠĪ APMAIŅA BIBLIOTĒKĀ nemainīs PIN
// 2 pin tapu sensors
const int pingPin = 8;
const int echoPin = 7;
// Apstiprinājuma LED tapas
const int led = 13; // iekšējā gaismas diode atkļūdošanai augšup / lejup
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED uz taimera
neparakstīts garš taimeris;
// IR raidītāja objekts
IRsend irsend;
// Jaudas apstiprināšanas karodziņš (signāla nosūtīšanai nepieciešami divi zvēlieni)
Būla powerConfirmed = false;
Nederīga iestatīšana () {
// inicializēt seriālo komunikāciju un iestatīt piespraudes
Sērijas.begin (9600);
pinMode (led, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
taimeris = milisi ();
}
tukšs cilpa ()
{
// Serial.println (millis ());
ilgs ilgums, collas;
int vērtība;
// Pārbaudiet, vai nav lasījuma
ilgums = doPing ();
// Taimeris darbību apstiprināšanai (pašlaik tikai barošana)
if (taimeris && taimeris <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("taimera atiestatīšana");
taimeris = nepatiess;
}
digitalWrite (led, LOW);
setColor (0, 0, 0); // izslēgts
// konvertējiet laiku uz attālumu
collas = mikrosekundesToInches (ilgums);
// Ja jūtat mazāk nekā collas, rīkojieties
ja (collas DIST_MAX)
{
doIR (CONTROL_CH, vērtība); // pārvelciet
}
cits
{
// apjoms
int d = 500; // pirmā aizkave ir ilgāka viena apjoma maiņai
// atkārtojiet, līdz roka tiek noņemta
kamēr (collas DIST_DOWN)
{
digitalWrite (led, HIGH);
atgriezt CONTROL_UP;
}
cits
{
digitalWrite (led, LOW);
atgriezties CONTROL_DOWN;
}
}
/ *
* Izdzēsiet pareizu IR kodu
* /
tukšs doIR (int kontrole, int val)
{
slēdzis (vadība)
{
gadījums CONTROL_POW:
// spēks
Serial.println ("ieslēgšana / izslēgšana 0xa90");
priekš (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Sony TV barošanas kods
kavēšanās (40);
}
pārtraukums;
gadījums CONTROL_CH:
setColor (0, 255, 0);
// izejas 'kanāls uz augšu / uz leju' atkarībā no val
if (val == CONTROL_UP)
{
digitalWrite (led, HIGH);
priekš (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
kavēšanās (40);
}
Serial.println ("kanāls uz augšu 0xD00A");
}
cits // uz leju
{
priekš (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
kavēšanās (40);
}
Serial.println ("kanāls uz leju 0x3002");
}
pārtraukums;
gadījums CONTROL_VOL:
setColor (0, 0, 255);
// izejas 'skaļuma palielināšana / samazināšana' atkarībā no val
if (val == CONTROL_UP)
{
digitalWrite (led, HIGH);
priekš (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
kavēšanās (40);
}
Serial.println ("skaļums palielinās līdz 0x490");
}
cits // uz leju
{
priekš (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
kavēšanās (40);
}
Serial.println ("skaļuma samazinājums 0xC90");
}
pārtraukums;
}
}
void setColor (int sarkans, int zaļš, int zils)
{
analogWrite (ledR, sarkans);
analogWrite (ledG, zaļš);
analogWrite (ledB, zils);
}
ilgi doPing ()
{
digitalWrite (pingPin, LOW);
kavēšanāsMikrosekundēs (2);
digitalWrite (pingPin, HIGH);
kavēšanāsMikrosekundēs (5);
digitalWrite (pingPin, LOW);
atgriešanās pulseIn (echoPin, HIGH);
}
garās mikrosekundēsToInches (garās mikrosekundēs)
{
// Saskaņā ar Parallax datu lapu PING))) ir
// 73,746 mikrosekundes collā (t.i., skaņa pārvietojas ar ātrumu 1130 pēdas uz collu)
// otrais). Tas dod ping nobraukto attālumu, izejošo
// un atgriežas, tāpēc mēs dalām ar 2, lai iegūtu šķēršļa attālumu.
// Skatīt: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
atgriešanās mikrosekundēs / 74/2;
}
garās mikrosekundēsToCentimeters (garās mikrosekundēs)
{
Skaņas ātrums ir 340 m / s vai 29 mikrosekundes uz centimetru.
// Pings brauc uz priekšu un atpakaļ, tāpēc, lai atrastu
// objekts, kuru mēs ņemam no nobrauktā attāluma.
atgriešanās mikrosekundēs / 29/2;
}
Programmas iezīme ir atkļūdošanas ziņojumu nosūtīšana par notiekošo uz Arduino IDE seriālā porta monitoru. Pārliecinoties, ka viss darbojas pareizi, nākotnē ierīci varēsiet barot nevis no datora, bet no barošanas avota.
Komandu nosūtīšanas secība:1. Ieslēdziet vai izslēdziet televizoru: vilciet plaukstu diapazona meklētāja priekšā no 0 līdz 75 mm, RGB gaismas diode 5 sekundes iedegsies purpursarkanā krāsā, kamēr tā tiks iedegta, atkal vilniet tajā pašā attālumā.
2. Samaziniet kanāla numuru - mainieties no 75 (neieskaitot) līdz 250 mm. Tālummaiņa - tāda pati, bet attālumā no 250 (neieskaitot) līdz 500 mm.
3. Samaziniet vai palieliniet skaļumu - tāpat kā ar kanāliem, bet neviļojiet, bet turiet plaukstu nekustīgu. Kamēr lietotājs tur plaukstu, skaļums atkarībā no attāluma samazinās vai palielinās pēc tās pašas loģikas kā kanāla numurs.
Lai izmantotu pārējās funkcijas (EPG, teleteksts, basa ievade utt.), Jums regulāri jāatrodas tālvadības pultī blakus. Mūsdienu apstākļos ir ieteicams ierīci programmēt, lai vadītu DVB-T2 standarta televizora pierīci. Mūzikas centra gadījumā viss ir savādāk: analogā apraide pagaidām saglabājas, kaut arī nākotnē notiks pāreja uz starta DAB + vai DRM +.
Pēc struktūras atkļūdošanas to vajadzētu ievietot jebkuras struktūras korpusā - no saražotās
dari pats sākot ar plexiglass, saplāksni un beidzot ar jebkuru piemērotu gatavo kastīti, piemēram, lodēšanai. Tālummērītāja, kabeļa un abu gaismas diožu korpusā jābūt caurumiem. Ir ieteicams virzīt diapazona meklētāju un RGB LED vienā virzienā, bet IR diode - pretējā virzienā.