Các nhà sản xuất điện tử đang dần đi đến kết luận rằng điều khiển từ xa tốt nhất là lòng bàn tay của người dùng. Vì vậy, trong cột mới "Yandex.Station Mini" cung cấp quản lý như vậy. Đừng đứng ngoài xu hướng và bạn bè. Vì vậy, ví dụ, tác giả của Instructables dưới biệt danh dan_nicholson đã đưa ra một thiết bị đơn giản cho phép bạn điều khiển TV bằng cử chỉ. Theo mặc định, nó được lập trình để hoạt động với TV Sony, nhưng cũng có thể được cấu hình để điều khiển mọi TV, trung tâm âm nhạc khác, v.v. Như có thể thấy từ KDPV, bao gồm
tự làm từ công cụ tìm phạm vi
Arduino và một số thành phần bổ sung. Có thể được thực hiện thậm chí còn nhỏ gọn hơn:
Và thậm chí còn nhỏ gọn hơn nếu bạn từ bỏ bảng mạch và kết nối mọi thứ bằng cách hàn bằng dây. Bậc thầy tạo ra một sơ đồ thiết bị trong chương trình Fritzing, điều mà không phải ai cũng thích, nhưng đừng vội vứt dép, phương pháp vẽ sơ đồ này cũng có thể thuận tiện. Bậc thầy kết nối một đèn LED hồng ngoại thông qua một điện trở và tất cả các tinh thể của đèn LED RGB được kết nối trực tiếp. Ông viết rằng điện trở cũng được mong muốn ở đây, nhưng trên thực tế chúng là bắt buộc.
Sau khi lắp ráp mạch, chủ lấy thư viện
ở đâyvà mã lệnh là
ở đâyviết và điền vào bản phác thảo:
/ * Vuốt điều khiển từ xa
Phác thảo này sử dụng máy đo khoảng cách siêu âm để xác định cử chỉ của người dùng và xuất tín hiệu IR sang TV sony dựa trên lệnh được đưa ra.
- Vuốt cao (> 10in) = Lên kênh
- Vuốt thấp = Xuống kênh
- Giữ cao (> 10in) = Tăng âm lượng
- Giữ thấp = Giảm âm lượng
- Cảm biến nắp (<3in) = Bật / Tắt
Được tạo bởi Dan Nicholson.
Mã ví dụ này là trong phạm vi công cộng.
Mã này sử dụng thư viện IRremote (https://github.com/shirriff/Arduino-IRremote)
* /
#inc loại
// Xác định cho các chức năng điều khiển
#define CONTROL_CH 1 // Thay đổi kênh
#define CONTROL_VOL 2 // Khối lượng
#define CONTROL_POW 3 // Nguồn
#define CONTROL_UP 1
#define CONTROL_DOWN -1
#define DIST_MAX 20 // Khoảng cách tối đa tính bằng inch, mọi thứ ở trên đều bị bỏ qua.
#define DIST_DOWN 10 // Ngưỡng cho các lệnh lên / xuống. Nếu cao hơn, lệnh là "lên". Nếu thấp hơn, "xuống".
#define DIST_POW 3 // Ngưỡng cho lệnh nguồn, thấp hơn = bật / tắt nguồn
// Mã PIN
const int irPin = 3; // cái này được định nghĩa trong thư viện, var này chỉ là một lời nhắc nhở. THAY ĐỔI NÀY S NOT KHÔNG THAY ĐỔI PIN TRONG THƯ VIỆN
// Cảm biến 2 pin Ping
const int pingPin = 8;
const int echoPin = 7;
// Chân LED xác nhận
const int led = 13; // đèn LED bên trong để gỡ lỗi lên / xuống
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// Đèn LED hẹn giờ
hẹn giờ dài không dấu;
// Đối tượng truyền IR
IRsend irsend;
// Cờ xác nhận nguồn (cần hai lần vuốt để gửi tín hiệu)
boolean powerConfirmed = false;
void setup () {
// khởi tạo giao tiếp nối tiếp và đặt chân
Nối tiếp.begin (9600);
pinMode (đã dẫn, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
bộ đếm thời gian = millis ();
}
vòng lặp void ()
{
// Nối tiếp.println (millis ());
thời gian dài, inch;
giá trị int;
// Kiểm tra đọc
thời lượng = doPing ();
// Hẹn giờ để xác nhận hành động (hiện chỉ có nguồn)
if (hẹn giờ && hẹn giờ <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("thiết lập lại bộ đếm thời gian");
hẹn giờ = sai;
}
kỹ thuật sốWrite (đã dẫn, THẤP);
setColor (0, 0, 0); // tắt
// chuyển thời gian thành khoảng cách
inch = microsecondsToInches (thời lượng);
// Nếu nhỏ hơn max inch, hãy hành động
if (inch DIST_MAX)
{
doIR (CONTROL_CH, giá trị); // vuốt
}
khác
{
// khối lượng
int d = 500; // độ trễ đầu tiên dài hơn đối với thay đổi âm lượng đơn
// lặp lại cho đến khi bỏ tay
trong khi (inch DIST_DOWN)
{
kỹ thuật sốWrite (đã dẫn, CAO);
trả về CONTROL_UP;
}
khác
{
kỹ thuật sốWrite (đã dẫn, THẤP);
trả về CONTROL_DOWN;
}
}
/ *
* Tắt mã IR chính xác
* /
void doIR (int control, int val)
{
chuyển đổi (kiểm soát)
{
trường hợp KIỂM SOÁT:
// sức mạnh
Serial.println ("bật / tắt nguồn 0xa90");
cho (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // Mã nguồn TV Sony
trì hoãn (40);
}
phá vỡ;
trường hợp KIỂM SOÁT:
setColor (0, 255, 0);
// đầu ra 'kênh lên / xuống' tùy theo val
if (val == CONTROL_UP)
{
kỹ thuật sốWrite (đã dẫn, CAO);
cho (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
trì hoãn (40);
}
Serial.println ("kênh lên 0xD00A");
}
khác // xuống
{
cho (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
trì hoãn (40);
}
Serial.println ("kênh xuống 0x3002");
}
phá vỡ;
trường hợp CONTROL_VOL:
setColor (0, 0, 255);
// đầu ra 'tăng / giảm âm lượng' tùy theo val
if (val == CONTROL_UP)
{
kỹ thuật sốWrite (đã dẫn, CAO);
cho (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
trì hoãn (40);
}
Serial.println ("tăng âm lượng 0x490");
}
khác // xuống
{
cho (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
trì hoãn (40);
}
Serial.println ("giảm âm lượng 0xC90");
}
phá vỡ;
}
}
void setColor (int red, int green, int blue)
{
analogWrite (ledR, đỏ);
analogWrite (ledG, màu xanh lá cây);
analogWrite (ledB, màu xanh);
}
doPing dài ()
{
kỹ thuật sốWrite (pingPin, THẤP);
delayMicroseconds (2);
kỹ thuật sốWrite (pingPin, CAO);
delayMicroseconds (5);
kỹ thuật sốWrite (pingPin, THẤP);
trở lại xungIn (echoPin, CAO);
}
microsecondsToInches dài (micro giây)
{
// Theo bảng dữ liệu của Parallax cho PING))), có
// 73,746 micro giây trên mỗi inch (tức là âm thanh truyền đi ở mức 1130 feet mỗi
// giây). Điều này cho khoảng cách di chuyển của ping, hướng ra ngoài
// và quay trở lại, vì vậy chúng tôi chia cho 2 để có được khoảng cách của chướng ngại vật.
// Xem: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
trả về micro giây / 74/2;
}
micro giây giây ToCentimét (micro giây dài)
{
// Tốc độ của âm thanh là 340 m / s hoặc 29 micro giây trên mỗi cm.
// ping di chuyển ra ngoài và quay lại, vì vậy để tìm khoảng cách của
// đối tượng chúng ta lấy một nửa quãng đường đã đi.
trả lại micro giây / 29/2;
}
Một tính năng của chương trình đang gửi đến trình giám sát cổng nối tiếp Arduino IDE thông báo gỡ lỗi về những gì đang xảy ra tại thời điểm này. Sau khi đảm bảo rằng mọi thứ hoạt động chính xác, trong tương lai bạn có thể cấp nguồn cho thiết bị không phải từ máy tính mà từ nguồn điện.
Trình tự gửi lệnh:1. Bật hoặc tắt TV: vẫy lòng bàn tay trước công cụ tìm phạm vi ở khoảng cách từ 0 đến 75 mm, đèn LED RGB sẽ sáng màu tím trong 5 giây, trong khi đèn sáng, sóng lại ở cùng khoảng cách.
2. Giảm số kênh - xoay ở khoảng cách từ 75 (không bao gồm) xuống 250 mm. Thu phóng - giống nhau, nhưng ở khoảng cách 250 (không bao gồm) đến 500 mm.
3. Giảm hoặc tăng âm lượng - giống như với các kênh, nhưng không vẫy, nhưng giữ lòng bàn tay của bạn bất động. Trong khi người dùng đang giữ lòng bàn tay của mình, âm lượng, tùy thuộc vào khoảng cách, giảm hoặc tăng theo cùng logic với số kênh.
Để sử dụng phần còn lại của các chức năng (EPG, teletext, đầu vào bass, v.v.), bạn nên giữ một điều khiển từ xa thường xuyên bên cạnh bạn. Trong điều kiện hiện đại, nên lập trình cho thiết bị điều khiển hộp set-top tiêu chuẩn DVB-T2. Trong trường hợp của trung tâm âm nhạc, mọi thứ đều khác: hiện tại vẫn phát sóng tương tự, mặc dù trong tương lai sẽ có một sự chuyển đổi sang DAB + hoặc DRM + khởi động.
Sau khi gỡ lỗi cấu trúc, nó nên được đặt trong thân của bất kỳ cấu trúc nào - từ sản xuất
tự làm từ plexiglass, ván ép, đến bất kỳ hộp hoàn thành phù hợp, ví dụ, hàn. Các lỗ nên được cung cấp trong vỏ cho máy đo khoảng cách, cáp và cả hai đèn LED. Nên điều khiển công cụ tìm phạm vi và đèn LED RGB theo một hướng và diode IR theo hướng ngược lại.