توصل مصنعو الإلكترونيات تدريجياً إلى استنتاج مفاده أن أفضل جهاز تحكم عن بعد هو راحة المستخدم. لذلك في العمود الجديد "Yandex.Station Mini" يوفر مثل هذه الإدارة. لا تقف بعيدًا عن الاتجاهات والأصدقاء. لذلك ، على سبيل المثال ، توصل مؤلف كتاب Instructables تحت الاسم المستعار dan_nicholson إلى جهاز بسيط يتيح لك التحكم في التلفزيون باستخدام الإيماءات. بشكل افتراضي ، تمت برمجته للعمل مع تلفزيونات سوني ، ولكن يمكن تكوينه أيضًا للتحكم في أي تلفزيونات أخرى ، ومراكز موسيقى ، وما إلى ذلك. كما يتبين من KDPV ، يتكون
محلية الصنع من مكتشف النطاق
اردوينو وعدة مكونات إضافية. يمكن جعله أكثر إحكاما:
وحتى أكثر إحكاما إذا تركت لوحة التوصيل وقمت بتوصيل كل شيء عن طريق اللحام باستخدام الأسلاك. يقوم السيد بعمل رسم تخطيطي للجهاز في برنامج Fritzing ، والذي لا يحبه الجميع ، ولكن لا يتسرع في إلقاء النعال ، يمكن أن تكون هذه الطريقة في رسم المخططات ملائمة أيضًا. يقوم المعلم بتوصيل LED بالأشعة تحت الحمراء من خلال المقاوم ، ويتم توصيل جميع بلورات LED RGB مباشرة. يكتب أن المقاومات مطلوبة أيضًا هنا ، ولكنها في الواقع مطلوبة.
بعد تجميع الدائرة ، يأخذ السيد المكتبة
هنا، ورموز الأوامر هي
هنايكتب ويملأ الرسم:
/ * مرر جهاز التحكم عن بعد
يستخدم هذا الرسم جهاز تحديد المدى بالموجات فوق الصوتية لتحديد إيماءة المستخدم وإخراج إشارة الأشعة تحت الحمراء لجهاز تلفزيون سوني بناءً على الأمر المعطى.
- انتقاد عالية (> 10in) = قناة لأعلى
- انتقاد منخفض = قناة لأسفل
- الضغط العالي (> 10 بوصة) = رفع الصوت
- تعليق منخفض = خفض مستوى الصوت
- مستشعر الغطاء (<3 بوصة) = تشغيل / إيقاف
تم إنشاؤها بواسطة دان نيكولسون.
رمز المثال هذا في المجال العام.
يستخدم هذا الرمز مكتبة IRremote (https://github.com/shirriff/Arduino-IRremote)
* /
# تتضمن
// يحدد وظائف التحكم
#define CONTROL_CH 1 // تغيير القناة
#define CONTROL_VOL 2 // المجلد
#define CONTROL_POW 3 // الطاقة
# تعريف CONTROL_UP 1
# تعريف CONTROL_DOWN -1
#define DIST_MAX 20 // أقصى مسافة بالبوصة ، يتم تجاهل أي شيء أعلاه.
#define DIST_DOWN 10 // Threshold لأوامر لأعلى / لأسفل. إذا كان أعلى ، الأمر "أعلى". إذا كان أقل ، "أسفل".
#define DIST_POW 3 // Threshold لأمر الطاقة ، أقل من = تشغيل / إيقاف
// IR PIN
const int irPin = 3 ؛ // تم تعريف هذا في المكتبة ، وهذا فار مجرد تذكير. لن يؤدي تغيير هذا إلى تغيير رقم التعريف الشخصي في المكتبة
// 2 Pin Ping Sensor
const int pingPin = 8 ؛
const int echoPin = 7 ؛
// دبابيس تأكيد LED
const int led = 13 ؛ // LED داخلي للتصحيح لأعلى / لأسفل
const int ledR = 11 ؛
const int ledG = 10 ؛
const int ledB = 9 ؛
// LED على جهاز ضبط الوقت
توقيت طويل غير موقع
// كائن مرسل IR
IRsend irsend ؛
// إشارة تأكيد الطاقة (تحتاج إلى مررين تمرير سريع لإرسال إشارة)
تأكيد القيمة المنطقية = خطأ ؛
إعداد باطل () {
// تهيئة الاتصال التسلسلي وضبط الدبابيس
Serial.begin (9600) ؛
pinMode (الصمام ، الإخراج) ؛
pinMode (ledR ، OUTPUT) ؛
pinMode (ledG ، OUTPUT) ؛
pinMode (ledB ، OUTPUT) ؛
pinMode (pingPin ، OUTPUT) ؛
pinMode (echoPin ، INPUT) ؛
توقيت = مللي () ؛
}}
حلقة فارغة ()
{
// Serial.println (millis ()) ؛
مدة طويلة ، بوصة ؛
قيمة int
// تحقق من القراءة
المدة = doPing () ؛
// مؤقت لتأكيد الإجراءات (الطاقة حاليًا فقط)
if (timer && timer <(millis () - 5000) && (millis ()> 5000))
{
Serial.println ("إعادة ضبط المؤقت") ؛
مؤقت = خطأ ؛
}}
الكتابة الرقمية (LED ، LOW) ؛
setColor (0 ، 0 ، 0) ؛ // off
// تحويل الوقت إلى مسافة
بوصة = ميكروثانية إلى بوصة (المدة) ؛
// إذا كانت المسافة أقل من بوصة ، تصرف
إذا (بوصات DIST_MAX)
{
doIR (CONTROL_CH ، القيمة) ؛ // انتقاد
}}
آخر
{
// الحجم
int d = 500 ؛ // يعد التأخير الأول أطول لتغيير وحدة التخزين الفردية
// كرر حتى تتم إزالة اليد
بينما (بوصات DIST_DOWN)
{
الكتابة الرقمية (LED ، عالية) ؛
إرجاع CONTROL_UP ؛
}}
آخر
{
الكتابة الرقمية (LED ، LOW) ؛
إرجاع CONTROL_DOWN ؛
}}
}}
/ *
* النار قبالة رمز الأشعة تحت الحمراء الصحيح
* /
doIR باطل (int int ، int val)
{
التبديل (التحكم)
{
حالة CONTROL_POW:
// السلطة
Serial.println ("تشغيل / إيقاف تشغيل الطاقة 0xa90") ؛
for (int i = 0؛ i <3؛ i ++)
{
setColor (255 ، 0 ، 0) ؛
irsend.sendSony (0xa90، 12) ؛ // Sony Power power code
تأخير (40) ؛
}}
استراحة
حالة CONTROL_CH:
setColor (0 ، 255 ، 0) ؛
// output 'channel up / down' حسب القيمة
إذا (val == CONTROL_UP)
{
الكتابة الرقمية (LED ، عالية) ؛
for (int i = 0؛ i <3؛ i ++)
{
irsend.sendSony (0x90، 12) ؛
تأخير (40) ؛
}}
Serial.println ("قناة تصل إلى 0xD00A") ؛
}}
آخر // أسفل
{
for (int i = 0؛ i <3؛ i ++)
{
irsend.sendSony (0x890، 12) ؛
تأخير (40) ؛
}}
Serial.println ("القناة لأسفل 0x3002") ؛
}}
استراحة
حالة CONTROL_VOL:
setColor (0 ، 0 ، 255) ؛
// الإخراج "مستوى الصوت أعلى / أسفل" اعتمادًا على فال
إذا (val == CONTROL_UP)
{
الكتابة الرقمية (LED ، عالية) ؛
for (int i = 0؛ i <3؛ i ++)
{
irsend.sendSony (0x490، 12) ؛
تأخير (40) ؛
}}
Serial.println ("وحدة التخزين حتى 0x490") ؛
}}
آخر // أسفل
{
for (int i = 0؛ i <3؛ i ++)
{
irsend.sendSony (0xC90، 12) ؛
تأخير (40) ؛
}}
Serial.println ("خفض الصوت بمقدار 0xC90") ؛
}}
استراحة
}}
}}
لون الفراغ (أحمر ، أخضر دولي ، أزرق)
{
analogWrite (ledR ، أحمر) ؛
analogWrite (ledG ، أخضر) ؛
analogWrite (ledB ، أزرق) ؛
}}
doPing طويلة ()
{
الكتابة الرقمية (pingPin، LOW) ؛
تأخير ميكروثانية (2) ؛
الكتابة الرقمية (pingPin، HIGH) ؛
تأخير ميكروثانية (5) ؛
الكتابة الرقمية (pingPin، LOW) ؛
نبض العودة (echoPin ، HIGH) ؛
}}
ميكروثانية طويلة إلى بوصات (ميكروثانية طويلة)
{
// وفقًا لورقة بيانات Parallax لـ PING))) ، هناك
// 73.746 ميكروثانية في البوصة (أي ينتقل الصوت بسرعة 1130 قدمًا لكل بوصة
// الثانية). هذا يعطي المسافة التي تقطعها بينغ ، الصادرة
// والعودة ، لذلك نقسم على 2 للحصول على مسافة العائق.
// انظر: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
عودة ميكروثانية / 74/2 ؛
}}
ميكروثانية طويلة (ميكروثانية طويلة)
{
// سرعة الصوت 340 م / ث أو 29 ميكروثانية في السنتيمتر.
// ping يسافر للخارج والعودة ، وذلك لإيجاد مسافة
// كائن نأخذ نصف المسافة المقطوعة.
عودة ميكروثانية / 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 في الاتجاه المعاكس.