Elektronik üreticileri yavaş yavaş en iyi uzaktan kumandanın kullanıcının avuç içi olduğu sonucuna varıyorlar. Yani yeni sütunda "Yandex.Station Mini" böyle bir yönetim sağlar. Trendlerden ve arkadaşlardan uzak durmayın. Yani, örneğin, Instructables'ın dan_nicholson takma adı altında yazarı, hareketlerinizi kullanarak TV'nizi kontrol etmenizi sağlayan basit bir cihaz buldu. Varsayılan olarak, Sony TV'lerle çalışmak üzere programlanmıştır, ancak diğer TV'leri, müzik merkezlerini vb. Kontrol etmek için de yapılandırılabilir. KDPV'den görülebileceği gibi,
ev yapımı ürün telemetre
Arduino ve birkaç ek bileşen. Daha da kompakt hale getirilebilir:
Ve eğer breadboard'u terk ederseniz ve her şeyi kablo kullanarak lehimleyerek bağlarsanız daha da kompakttır. Master, Fritzing programında herkesin sevmediği, ancak terlik atmak için acele etmediği bir cihaz diyagramı yapar, bu diyagram çizme yöntemi de uygun olabilir. Master bir kızılötesi LED'i bir direnç üzerinden bağlar ve RGB LED'in tüm kristalleri doğrudan bağlanır. Dirençlerin burada da arzu edildiğini yazıyor, ancak aslında gerekli.
Devreyi monte ettikten sonra, master kütüphaneyi alır
burada, ve komut kodları
buradataslağı yazar ve doldurur:
/ * Kaydırmalı Uzaktan Kumanda
Bu çizim, kullanıcının hareketini belirlemek için ultrasonik bir telemetre kullanır ve verilen komuta göre bir sony TV'ye bir IR sinyali gönderir.
- Yüksek kaydırma (> 10in) = Kanal Yukarı
- Düşük kaydırma = Kanal Aşağı
- Yüksek tutma (> 10in) = Sesi Yükselt
- Düşük tutma = Sesi Kısma
- Kapak sensörü (<3in) = Aç / Kapat
Dan Nicholson tarafından hazırlanmıştır.
Bu örnek kod kamu malıdır.
Bu kod IRremote kütüphanesini kullanır (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// Kontrol fonksiyonlarını tanımlar
#define CONTROL_CH 1 // Kanal değişikliği
#define CONTROL_VOL 2 // Cilt
#define CONTROL_POW 3 // Güç
#define CONTROL_UP 1
#define CONTROL_DOWN -1
#define DIST_MAX 20 // Maksimum inç cinsinden uzaklık, yukarıdaki her şey göz ardı edilir.
#define DIST_DOWN 10 // Yukarı / aşağı komutları için eşik. Daha yüksekse, komut "yukarı" dır. Düşükse, "aşağı".
#define DIST_POW 3 // Güç komutu eşiği, daha düşük = güç açık / kapalı
// IR PIN
const int irPin = 3; // bu kütüphanede tanımlanır, bu var sadece bir hatırlatmadır. BU DEĞİŞİKLİK KÜTÜPHANEDE PIN DEĞİŞTİRMEYECEKTİR
// 2 Pinli Ping Sensörü
const int pingPin = 8;
const int echoPin = 7;
// Onay LED Pimleri
sabit int led = 13; // yukarı / aşağı hata ayıklama için dahili LED
sabit int ledR = 11;
const int ledG = 10;
sabit int ledB = 9;
// Zamanlayıcıda LED
imzasız uzun zamanlayıcı;
// IR verici nesnesi
IRsend irsend;
// Güç onay bayrağı (sinyal göndermek için iki hızlıca kaydırmaya ihtiyaç duyar)
boolean powerConfirmed = yanlış;
void setup () {
// seri iletişimi başlat ve pinleri ayarla
Serial.begin (9600);
pinMode (led, ÇIKIŞ);
pinMode (ledR, ÇIKIŞ);
pinMode (ledG, OUTPUT);
pinMode (ledB, ÇIKIŞ);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
zamanlayıcı = milis ();
}
void loop ()
{
// Seri.println (millis ());
uzun süre, inç;
int değeri;
// Okuma kontrolü
duration = doPing ();
// İşlemleri onaylamak için zamanlayıcı (şu anda yalnızca güç)
eğer (zamanlayıcı && zamanlayıcı <(milis () - 5000) && (milis ()> 5000))
{
Serial.println ("zamanlayıcı sıfırlama");
zamanlayıcı = yanlış;
}
digitalWrite (led, DÜŞÜK);
setColor (0, 0, 0); // kapalı
// zamanı mesafeye dönüştür
inç = mikrosaniyeToInç (süre);
// Maksimum inçten azsa, hareket edin
eğer (inç DIST_MAX)
{
doIR (CONTROL_CH; değer); // kaydır
}
başka
{
// hacim
int d = 500; // tek bir hacim değişikliği için ilk gecikme daha uzun
// el çıkarılana kadar tekrarla
süre (inç DIST_DOWN)
{
digitalWrite (led, YÜKSEK);
dönüş CONTROL_UP;
}
başka
{
digitalWrite (led, DÜŞÜK);
dönüş CONTROL_DOWN;
}
}
/ *
* Doğru IR kodunu kapatın
* /
void doIR (int kontrol, int val)
{
anahtar (kontrol)
{
vaka CONTROL_POW:
// güç
Serial.println ("güç açık / kapalı 0xa90");
for (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Sony TV güç kodu
gecikme (40);
}
break;
vaka CONTROL_CH:
setColor (0, 255, 0);
// val'e bağlı olarak 'kanal yukarı / aşağı' çıkışı
eğer (val == CONTROL_UP)
{
digitalWrite (led, YÜKSEK);
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
gecikme (40);
}
Serial.println ("0xD00A kanalı yukarı");
}
else // aşağı
{
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
gecikme (40);
}
Serial.println ("kanal aşağı 0x3002");
}
break;
vaka CONTROL_VOL:
setColor (0, 0, 255);
// val'e bağlı olarak 'ses artırma / azaltma' çıkışı
eğer (val == CONTROL_UP)
{
digitalWrite (led, YÜKSEK);
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
gecikme (40);
}
Serial.println ("ses düzeyi 0x490");
}
else // aşağı
{
for (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
gecikme (40);
}
Serial.println ("ses düzeyi 0xC90");
}
break;
}
}
void setColor (int kırmızı, int yeşil, int mavi)
{
analogWrite (ledR, kırmızı);
analogWrite (ledG, yeşil);
analogWrite (ledB, mavi);
}
uzun doPing ()
{
digitalWrite (pingPin, LOW);
gecikme Mikrosaniye (2);
digitalWrite (pingPin, YÜKSEK);
gecikme Mikrosaniye (5);
digitalWrite (pingPin, LOW);
dönüş pulseIn (echoPin, HIGH);
}
İnç (uzun mikrosaniye)
{
// Parallax'ın PING için veri sayfasına göre))),
// 73.746 inç başına mikrosaniye (yani, ses başına 1130 feet)
// saniye). Bu, ping ile giden mesafeyi verir, giden
// ve geri dönelim, böylece engelin mesafesini elde etmek için 2'ye böleriz.
// Bkz: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
dönüş mikrosaniye / 74/2;
}
Santimetre (uzun mikrosaniye)
{
// Ses hızı santimetre başına 340 m / s veya 29 mikrosaniyedir.
// Ping dışarı ve geri hareket eder, böylece mesafeyi bulmak için
// kat ettiğimiz mesafenin yarısını alıyoruz.
dönüş mikrosaniye / 29/2;
}
Programın bir özelliği, şu anda neler olduğuna dair hata ayıklama mesajlarının Arduino IDE seri port monitörüne gönderilmesidir. Her şeyin doğru çalıştığından emin olduktan sonra, ileride cihaza bilgisayardan değil, güç kaynağından güç sağlayabilirsiniz.
Komut gönderme sırası:1. TV'yi açın veya kapatın: avucunuzu aralık bulucunun önüne 0 ila 75 mm mesafede sallayın, RGB LED'i 5 saniye boyunca mor renkte yanar, aynı mesafede tekrar dalgalanır.
2. Kanal numarasını azaltın - 75 (dahil değil) ile 250 mm arasında bir mesafede salınım. Zoom - aynı, ancak 250 (dahil değil) ile 500 mm arasında.
3. Sesi azaltın veya artırın - kanallarla aynı, ancak el sallamayın, avucunuzu hareketsiz tutun. Kullanıcı avucunu tutarken, mesafeye bağlı olarak ses seviyesi, kanal numarasıyla aynı mantığa göre azalır veya artar.
Diğer işlevleri (EPG, teletext, bas girişi, vb.) Kullanmak için, yanınızda düzenli bir uzaktan kumanda bulundurmalısınız. Modern koşullarda, cihazın bir DVB-T2 standart set üstü kutusunu kontrol edecek şekilde programlanması tavsiye edilir. Müzik merkezi söz konusu olduğunda, her şey farklıdır: gelecekte yayıncılık DAB + veya DRM + 'ya geçiş olsa da, analog yayın şimdilik kalır.
Yapının hatalarını ayıkladıktan sonra, herhangi bir yapının gövdesine yerleştirilmelidir - imal edilen
kendin yap pleksiglas, kontrplaktan, örneğin lehimleme gibi herhangi bir uygun bitmiş kutuya. Telemetre, kablo ve her iki LED için muhafazada delikler bulunmalıdır. Mesafe bulucuyu ve RGB LED'i bir yönde ve IR diyotu ters yönde yönlendirmeniz önerilir.