Pengeluar elektronik secara beransur-ansur datang ke kesimpulan bahawa kawalan jauh terbaik adalah sawit pengguna. Jadi dalam lajur baru "Yandex.Station Mini" menyediakan pengurusan sedemikian. Jangan terlepas dari trend dan rakan-rakan. Jadi, sebagai contoh, pengarang Instructables di bawah nama samaran dan_nicholson datang dengan peranti mudah yang membolehkan anda mengendalikan TV menggunakan gerak isyarat. Secara lalai, ia diprogramkan untuk berfungsi dengan TV Sony, tetapi juga boleh dikonfigurasikan untuk mengawal mana-mana TV, pusat muzik, dll. Seperti yang boleh dilihat dari PPK, terdiri
buatan sendiri dari pencari jarak jauh
Arduino dan beberapa komponen tambahan. Boleh dibuat lebih padat:
Dan lebih padat jika anda meninggalkan papan roti dan sambungkan semuanya dengan penyolderan menggunakan wayar. Tuan membuat gambarajah peranti dalam program Fritzing, yang tidak semua orang suka, tetapi tidak tergesa-gesa untuk membuang selipar, cara membuat gambar rajah juga mudah. Tuan menghubungkan LED inframerah melalui perintang, dan semua kristal LED RGB disambungkan secara langsung. Dia menulis bahawa perintang juga wajar di sini, tetapi sebenarnya mereka dikehendaki.
Setelah memasang litar, tuan mengambil perpustakaan
di sini, dan kod arahan adalah
di sinimenulis dan mengisi lakaran:
/ * Swipe Remote Control
Lakaran ini menggunakan rangefinder ultrasonik untuk menentukan isyarat pengguna dan mengeluarkan isyarat IR ke TV sony berdasarkan perintah yang diberikan.
- Leretan tinggi (> 10in) = Channel Up
- Leret rendah = Channel Down
- Penangkapan tinggi (> 10in) = Volum
- Kekuatan rendah = Kelantangan
- Sensor penutup (<3in) = Hidupkan / Matikan
Dicipta oleh Dan Nicholson.
Kod contoh ini berada dalam domain awam.
Kod ini menggunakan pustaka IRremote (https://github.com/shirriff/Arduino-IRremote)
* /
#include
/ / Menetapkan untuk fungsi kawalan
#define CONTROL_CH 1 // Perubahan saluran
#define CONTROL_VOL 2 // Volum
#define CONTROL_POW 3 // Kuasa
#define CONTROL_UP 1
#define CONTROL_DOWN -1
#define DIST_MAX 20 // Maksimum jarak dalam inci, apa pun di atas diabaikan.
#define DIST_DOWN 10 // Ambang untuk perintah atas / bawah. Jika lebih tinggi, arahan "naik". Sekiranya lebih rendah, "turun".
#define DIST_POW 3 // Ambang untuk perintah kuasa, lebih rendah daripada = kuasa hidup / mati
/ // PIN IR
const int irPin = 3; // ini ditakrifkan di perpustakaan, var ini hanyalah peringatan. PERUBAHAN INI TIDAK AKAN PERUBAHAN PIN DALAM PERPUSTAKAAN
// 2 Sensor Ping Pin
const int pingPin = 8;
const int echoPin = 7;
// Pin Pengesahan LED
const int led = 13; / // dalaman LED untuk debugging atas / bawah
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED pada pemasa
pemasa yang tidak ditandatangani;
// Objek pemancar IR
IRsend irsend;
// Bendera pengesahan kuasa (memerlukan dua swipes untuk menghantar isyarat)
boolean powerConfirmed = false;
void setup () {
// memulakan komunikasi bersiri dan tetapkan pin
Serial.begin (9600);
pinMode (dipimpin, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
pemasa = millis ();
}
kekosongan gelung ()
{
// Serial.println (millis ());
durasi panjang, inci;
nilai int;
/ / Semak bacaan
tempoh = doPing ();
/ // Pemasa untuk mengesahkan tindakan (kini hanya kuasa)
jika (pemasa && pemasa <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("reset timer");
pemasa = palsu;
}
digitalWrite (led, LOW);
setColor (0, 0, 0); / / off
/ Tukar masa ke jarak
inci = microsecondsToInches (durasi);
// Jika kurang dari maksima inci, bertindak
jika (inci DIST_MAX)
{
doIR (CONTROL_CH, nilai); / / sapu
}
lain
{
// volum
int d = 500; / // kelewatan pertama lebih lama untuk perubahan volume tunggal
/ // ulang sehingga tangan dikeluarkan
sementara (inci DIST_DOWN)
{
digitalWrite (diketuai, TINGGI);
kembali CONTROL_UP;
}
lain
{
digitalWrite (led, LOW);
kembali CONTROL_DOWN;
}
}
/ *
* Letakkan kod IR yang betul
* /
tidak sah doIR (kawalan int, int val)
{
suis (kawalan)
{
kes CONTROL_POW:
// kuasa
Serial.println ("kuasa hidup / mati 0xa90");
untuk (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Kad kuasa TV Sony
kelewatan (40);
}
pecah;
kes CONTROL_CH:
setColor (0, 255, 0);
/ // output 'channel up / down' bergantung kepada val
jika (val == CONTROL_UP)
{
digitalWrite (diketuai, TINGGI);
untuk (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
kelewatan (40);
}
Serial.println ("channel up 0xD00A");
}
lain lagi
{
untuk (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
kelewatan (40);
}
Serial.println ("saluran ke bawah 0x3002");
}
pecah;
kes CONTROL_VOL:
setColor (0, 0, 255);
/ // output 'volume naik / turun' bergantung pada val
jika (val == CONTROL_UP)
{
digitalWrite (diketuai, TINGGI);
untuk (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
kelewatan (40);
}
Serial.println ("kelantangan naik 0x490");
}
lain lagi
{
untuk (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
kelewatan (40);
}
Serial.println ("kelantangan turun 0xC90");
}
pecah;
}
}
void setColor (int merah, int hijau, int biru)
{
analogWrite (ledR, merah);
analogWrite (ledG, hijau);
analogWrite (ledB, biru);
}
doPing lama ()
{
digitalWrite (pingPin, LOW);
delayMicroseconds (2);
digitalWrite (pingPin, HIGH);
delayMicroseconds (5);
digitalWrite (pingPin, LOW);
PulseIn return (echoPin, HIGH);
}
microsecondsToInches panjang (microseconds panjang)
{
// Menurut datasheet Parallax untuk PING))), ada
/ // 73.746 mikrosekon per inci (iaitu perjalanan bunyi pada 1130 kaki per
// kedua). Ini memberi jarak yang dilalui oleh ping, keluar
// dan kembali, jadi kita bahagikan dengan 2 untuk mendapatkan jarak halangan.
// See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
pulangan mikrodetik / 74/2;
}
microsecondsToCentimeters panjang (microseconds panjang)
{
/ / Kecepatan bunyi adalah 340 m / s atau 29 microseconds per centimeter.
// Ping berjalan keluar dan kembali, jadi untuk mencari jarak
// objek yang kita ambil setengah dari jarak perjalanan.
pulangan mikrodetik / 29/2;
}
Ciri program ini ialah menghantar mesej debug tentang apa yang sedang berlaku pada masa ini kepada monitor port serial siri Arduino IDE. Selepas memastikan bahawa semuanya berfungsi dengan betul, pada masa depan anda boleh kuasa peranti bukan dari komputer, tetapi dari bekalan kuasa.
Perintah menghantar arahan:1. Hidupkan atau matikan TV: gelombang telapak tangan anda di hadapan pencari jarak pada jarak 0 hingga 75 mm, LED RGB akan menyala ungu selama 5 saat, manakala ia menyala, gelombang pada jarak yang sama sekali lagi.
2. Kurangkan nombor saluran - swing pada jarak dari 75 (tidak termasuk) hingga 250 mm. Zum - sama, tetapi pada jarak 250 (tidak termasuk) hingga 500 mm.
3. Kurangkan atau menambah jumlah - sama dengan saluran, tetapi jangan gelombang, tetapi tahankan kelapa sawit anda. Walaupun pengguna memegang tapak tangannya, jumlahnya, bergantung pada jarak, berkurangan atau bertambah mengikut logik yang sama dengan nombor saluran.
Untuk menggunakan fungsi lain (EPG, teleteks, input bass, dan lain-lain), anda perlu menyimpan kawalan jauh yang tetap di sebelah anda. Dalam keadaan moden, adalah dinasihatkan untuk memprogram peranti untuk mengawal kotak set-top standard DVB-T2. Dalam kes pusat muzik, semuanya berbeza: penyiaran analog kekal pada masa ini, walaupun pada masa akan datang akan ada peralihan ke DAB + atau DRM + permulaan.
Setelah menyebarkan struktur, ia perlu diletakkan di dalam badan apa-apa struktur - dari
lakukan sendiri dari plexiglass, papan lapis, ke mana-mana kotak siap yang sesuai, contohnya, pematerian. Lubang-lubang harus disediakan di perumahan untuk rangefinder, kabel, dan kedua-dua LED. Adalah dinasihatkan untuk mengarahkan pencari pelbagai dan LED RGB ke satu arah, dan diod IR di arah yang bertentangan.