ผู้ผลิตอุปกรณ์อิเล็กทรอนิกส์กำลังค่อยๆสรุปว่าการควบคุมระยะไกลที่ดีที่สุดคือฝ่ามือของผู้ใช้ ดังนั้นในคอลัมน์ใหม่ "Yandex.Station Mini" ให้การจัดการดังกล่าว อย่ายืนห่างจากเทรนด์และเพื่อน ตัวอย่างเช่นผู้แต่ง Instructables ภายใต้ชื่อเล่น dan_nicholson มาพร้อมกับอุปกรณ์ง่ายๆที่ให้คุณควบคุมทีวีของคุณด้วยท่าทางสัมผัส โดยค่าเริ่มต้นจะได้รับการตั้งโปรแกรมให้ทำงานกับทีวี Sony แต่ยังสามารถกำหนดค่าเพื่อควบคุมทีวีศูนย์เพลงอื่น ๆ ได้ ที่สามารถเห็นได้จาก KDPV ประกอบด้วย
สินค้าทำที่บ้าน จากตัวค้นหาช่วง
Arduino และส่วนประกอบเพิ่มเติมหลายประการ สามารถทำให้กะทัดรัดยิ่งขึ้น:
และยิ่งกระชับยิ่งขึ้นถ้าคุณละทิ้ง breadboard และเชื่อมต่อทุกอย่างด้วยการบัดกรีโดยใช้สายไฟ ต้นแบบสร้างไดอะแกรมของอุปกรณ์ในโปรแกรม Fritzing ที่ทุกคนไม่ชอบ แต่ไม่ต้องรีบใส่รองเท้าแตะวิธีการวาดไดอะแกรมนี้ยังสะดวก ต้นแบบเชื่อมต่อ LED อินฟราเรดผ่านตัวต้านทานและผลึกทั้งหมดของ LED RGB เชื่อมต่อโดยตรง เขาเขียนว่าตัวต้านทานนั้นเป็นที่ต้องการเช่นกัน แต่ที่จริงแล้วพวกเขาต้องการ
เมื่อประกอบวงจรแล้วอาจารย์ก็เข้าห้องสมุด
ที่นี่และรหัสคำสั่งคือ
ที่นี่เขียนและเติมร่าง:
/ * รูดการควบคุมระยะไกล
ร่างนี้ใช้เครื่องวัดระยะทางอัลตราโซนิกเพื่อกำหนดท่าทางของผู้ใช้และส่งสัญญาณ IR ไปยังทีวี sony ตามคำสั่งที่กำหนด
- กวาดนิ้วสูง (> 10in) = เพิ่มช่อง
- การปัดต่ำ = Channel Down
- ค้างไว้สูง (> 10in) = เพิ่มระดับเสียง
- Low hold = ลดระดับเสียง
- ฝาปิดเซ็นเซอร์ (<3in) = เปิด / ปิด
สร้างโดย Dan Nicholson
รหัสตัวอย่างนี้เป็นสาธารณสมบัติ
รหัสนี้ใช้ไลบรารี IRremote (https://github.com/shirriff/Arduino-IRremote)
* /
#include
// กำหนดฟังก์ชั่นการควบคุม
#define CONTROL_CH 1 // การเปลี่ยนแปลงช่อง
#define CONTROL_VOL 2 // ปริมาณ
#define CONTROL_POW 3 // Power
#define CONTROL_UP 1
#define CONTROL_DOWN -1
#define DIST_MAX 20 // ระยะทางสูงสุดเป็นนิ้วสิ่งใด ๆ ที่ถูกข้ามไป
#define DIST_DOWN 10 // เกณฑ์สำหรับคำสั่งขึ้น / ลง หากสูงกว่าคำสั่งคือ "up" ถ้าต่ำกว่า "ลง"
#define DIST_POW 3 // เกณฑ์สำหรับคำสั่งพลังงานต่ำกว่า = เปิด / ปิดเครื่อง
// IR PIN
const int irPin = 3; // นี่ถูกกำหนดไว้ในไลบรารี var นี้เป็นเพียงการเตือน การเปลี่ยนสิ่งนี้จะไม่เปลี่ยน PIN ในห้องสมุด
// 2 เซ็นเซอร์ Ping Pin
const int pingPin = 8;
const int echoPin = 7;
// LED Pins การยืนยัน
const int นำ = 13; // LED ภายในสำหรับการดีบักขึ้น / ลง
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
// LED บนตัวจับเวลา
จับเวลาไม่ได้ลงนาม;
// วัตถุส่งสัญญาณ IR
irendend irsend;
// ธงยืนยันการใช้พลังงาน (ต้องใช้สอง swipes ในการส่งสัญญาณ)
บูลีน powerConfirmed = false;
การตั้งค่าเป็นโมฆะ () {
// เริ่มต้นการสื่อสารแบบอนุกรมและตั้งพิน
Serial.begin (9600);
pinMode (LED, OUTPUT);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
จับเวลา = มิลลิวินาที ();
}
เป็นโมฆะห่วง ()
{
// Serial.println (millis ());
ระยะเวลานานนิ้ว;
ค่า int;
// ตรวจสอบการอ่าน
ระยะเวลา = doPing ();
// ตัวจับเวลาเพื่อยืนยันการกระทำ (ใช้พลังงานในปัจจุบันเท่านั้น)
if (ตัวจับเวลา && ตัวจับเวลา <(มิลลิวินาที () - 5,000) && (มิลลิวินาที ()> 5,000))
{
Serial.println ("รีเซ็ตตัวจับเวลา");
จับเวลา = เท็จ;
}
digitalWrite (LED, LOW);
setColor (0, 0, 0); // ปิด
// แปลงเวลาเป็นระยะทาง
นิ้ว = microsecondsToInches (ระยะเวลา)
// ถ้าน้อยกว่านิ้วสูงสุดออกไป
ถ้า (นิ้ว DIST_MAX)
{
doIR (CONTROL_CH, ค่า); // กวาดนิ้ว
}
อื่น
{
// ปริมาณ
int d = 500; // การหน่วงเวลาแรกนานกว่าสำหรับการเปลี่ยนแปลงโวลุ่มเดียว
// ทำซ้ำจนกว่ามือจะถูกลบ
ในขณะที่ (นิ้ว DIST_DOWN)
{
digitalWrite (LED, สูง);
ส่งกลับ CONTROL_UP;
}
อื่น
{
digitalWrite (LED, LOW);
ส่งกลับ CONTROL_DOWN;
}
}
/ *
* ดับรหัส IR ที่ถูกต้อง
* /
โมฆะ doIR (การควบคุม int, int val)
{
สวิทช์ (ควบคุม)
{
กรณี CONTROL_POW:
// พลังงาน
Serial.println ("เปิด / ปิด 0xa90");
สำหรับ (int i = 0; i <3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); // รหัสพลังงานของ Sony TV
ล่าช้า (40);
}
ทำลาย;
กรณี CONTROL_CH:
setColor (0, 255, 0);
// เอาท์พุท 'ช่องขึ้น / ลง' ขึ้นอยู่กับวาล
if (val == CONTROL_UP)
{
digitalWrite (LED, สูง);
สำหรับ (int i = 0; i <3; i ++)
{
irsend.sendSony (0x90, 12);
ล่าช้า (40);
}
Serial.println ("แชแนลขึ้น 0xD00A");
}
อื่น // ลง
{
สำหรับ (int i = 0; i <3; i ++)
{
irsend.sendSony (0x890, 12);
ล่าช้า (40);
}
Serial.println ("ช่องสัญญาณลดลง 0x3002");
}
ทำลาย;
กรณี CONTROL_VOL:
setColor (0, 0, 255);
// เอาต์พุต 'ระดับเสียงขึ้น / ลง' ขึ้นอยู่กับวาล
if (val == CONTROL_UP)
{
digitalWrite (LED, สูง);
สำหรับ (int i = 0; i <3; i ++)
{
irsend.sendSony (0x490, 12);
ล่าช้า (40);
}
Serial.println ("เพิ่มระดับเสียงขึ้น 0x490");
}
อื่น // ลง
{
สำหรับ (int i = 0; i <3; i ++)
{
irsend.sendSony (0xC90, 12);
ล่าช้า (40);
}
Serial.println ("ลดระดับเสียง 0xC90");
}
ทำลาย;
}
}
เป็นโมฆะ setColor (int สีแดง, สีเขียว int, int สีน้ำเงิน)
{
analogWrite (ledR, สีแดง);
analogWrite (ledG, สีเขียว);
analogWrite (ledB, สีน้ำเงิน);
}
doPing ยาว ()
{
digitalWrite (pingPin, LOW);
delayMicroseconds (2);
digitalWrite (pingPin, HIGH);
delayMicroseconds (5);
digitalWrite (pingPin, LOW);
return pulseIn (echoPin, HIGH);
}
microseconds ยาวถึงนิ้ว (microseconds ยาว)
{
// จากแผ่นข้อมูลของ Parallax สำหรับ PING))) มี
// 73.746 microseconds ต่อนิ้ว (เช่นเสียงเดินทางที่ 1,130 ฟุตต่อ
// วินาที) สิ่งนี้จะช่วยให้ระยะทางที่เดินทางโดยปิงออกไป
// และกลับมาเราจึงหารด้วย 2 เพื่อให้ได้ระยะทางของสิ่งกีดขวาง
// ดู: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
ส่งคืนไมโครวินาที / 74/2;
}
ไมโครวินาทียาวถึงเซนติเมตร (ไมโครวินาทียาว)
{
// ความเร็วของเสียงคือ 340 m / s หรือ 29 microseconds ต่อเซนติเมตร
// ปิงเดินทางไปและกลับเพื่อหาระยะทางของ
// ออบเจ็กต์ที่เราใช้เวลาเดินทางไปครึ่งหนึ่ง
ไมโครวินาทีส่งคืน / 29/2;
}
คุณสมบัติของโปรแกรมส่งไปยัง Arduino IDE พอร์ตตรวจสอบข้อความการแก้จุดบกพร่องเกี่ยวกับสิ่งที่เกิดขึ้นในขณะนี้ หลังจากตรวจสอบให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้องในอนาคตคุณสามารถจ่ายพลังงานให้กับอุปกรณ์ไม่ใช่จากคอมพิวเตอร์
ลำดับของการส่งคำสั่ง:1. เปิดหรือปิดทีวี: โบกมือของคุณที่ด้านหน้าของเครื่องวัดระยะทางที่ 0 ถึง 75 มม. ไฟ LED RGB จะสว่างเป็นสีม่วงเป็นเวลา 5 วินาทีในขณะที่สว่างขึ้น
2. ลดหมายเลขช่องสัญญาณ - แกว่งที่ระยะห่างจาก 75 (ไม่รวม) ถึง 250 มม. ซูม - เท่ากัน แต่อยู่ที่ระยะ 250 (ไม่รวม) ถึง 500 มม.
3. ลดหรือเพิ่มระดับเสียง - เช่นเดียวกับช่องสัญญาณ แต่อย่าโบกมือ แต่ถือฝ่ามือของคุณ ในขณะที่ผู้ใช้ถือปาล์มปริมาณขึ้นอยู่กับระยะทางลดลงหรือเพิ่มขึ้นตามตรรกะเดียวกับหมายเลขช่อง
ในการใช้ฟังก์ชั่นที่เหลือ (EPG, เทเลเท็กซ์, อินพุตเบส ฯลฯ ) คุณควรใช้รีโมทคอนโทรลปกติอยู่ข้างๆคุณ ในสภาวะที่ทันสมัยแนะนำให้ตั้งโปรแกรมอุปกรณ์เพื่อควบคุมกล่องรับสัญญาณมาตรฐาน DVB-T2 ในกรณีของศูนย์ดนตรีทุกอย่างแตกต่างกัน: การออกอากาศแบบอะนาล็อกยังคงอยู่ในขณะนี้แม้ว่าในอนาคตจะมีการเปลี่ยนไปใช้ DAB + หรือ DRM + เริ่มต้น
มีการดีบั๊กโครงสร้างมันควรจะอยู่ในร่างกายของโครงสร้างใด ๆ - จากการผลิต
ทำมันเอง จากลูกแก้ว, ไม้อัด, กล่องสำเร็จรูปที่เหมาะสมใด ๆ เช่นการบัดกรี ควรจัดให้มีรูในตัวเรือนสำหรับเรนจ์ไฟเออร์เคเบิลและไฟ LED ทั้งคู่ ขอแนะนำให้นำทางตัวค้นหาระยะและไฟ LED RGB ในทิศทางเดียวและ IR ไดโอดในทิศทางตรงกันข้าม