مرحبًا Geektimes! هل تساءلت يومًا كيف تبدو "الإشارة الكهربائية" على طول مسارات لوحات الدوائر المطبوعة بين الدوائر الدقيقة والترانزستورات والثنائيات والمقاومات والمكثفات؟ أحد المتغيرات لهذه الإشارة في الإلكترونيات الحديثة هو ناقل رقمي ، وواحدة من الواجهات الشائعة لتبادل البيانات عبر الناقل هي UART. وغالبًا ما يتم استخدامه في وحدات التحكم الدقيقة للتواصل مع جهاز كمبيوتر أو نوع من الأطراف. للحصول على صوت في الحافلة ، ليس من الضروري على الإطلاق توصيل مكبر صوت بمضخم إلى ناقل حقيقي باستخدام
UART أوم ، لأنه يمكن محاكاته في البرنامج. هل أنت مهتم بالأصوات التي انتهيت بها ، أم تحتاج إلى برنامج لتجربة نفسك؟ ثم أطلب القط.
نستمع إلى الملفات في الحافلة مع UART
ما الصوت الذي سينتج إذا قمت بنقل الملفات عبر
UART ؟ فيما يلي بعض الأمثلة التي تم الحصول عليها باستخدام معلمات
UART التالية:
- 115200 معدل الباود
- بت 8 بت
- بت التكافؤ: بلا
- طول بت التوقف: 1
صوت لعبة Stalker Shadow of Chernobyl (ملف XR_3DA.exe ، في نهاية المسار ، بدءًا من 2:36 ، هناك لحن).
صوت نص ورمز المقالة حول مُركِّب الكلام (المقالة نفسها
هنا ).
كيف تبدو صورة لينا؟

كانت النتيجة مجرد
ضجيج .
صوت كتاب "الانتروبيا وتوقع السلاسل الزمنية في نظرية النظم الديناميكية" بتنسيق pdf.صوت البرامج الثابتة لسلسلة متحكم سلسلة Atmega لمشغل wav.ما يمكن استخدامه؟
نظريًا ، يمكن أن يكون هناك مثل هذه المعلومات في شكل نص ، أو صورة ، أو فيديو ، أو في شكل برنامج لن يكون له معنى وظيفي أو أهمية جمالية فحسب ، بل أيضًا الصوت "الجميل" للحافلة الرقمية ، ثم يتحول إلى نوع من الشعر "الرقمي" .
يمكنك أيضًا تنويع عينات dubstep بشكل عام ، في رأيي ، فإن الاستماع إلى أصوات الحافلة الرقمية أمر مثير للاهتمام مثل الاستماع إلى ضجيج الموجات الراديوية في الموجات القصيرة ، بشكل عام ، للهواة.
كيف يعمل أو قليلا عن UART
ما هو
UART يمكن قراءته على
ويكيبيديا .
من السهل جدًا محاكاة
UART في البرنامج. في الواقع ، ما عليك سوى أن تكون قادرًا على إنشاء فرق إشارة من 0 إلى 1 والعكس صحيح (في حالة ملف
WAV بسعة بت 16 بت ، هذه قيم من -
A إلى +
A ، حيث
A هي سعة الإشارة) وتسجيلها في ملف صوتي. تعمل واجهة
UART بشيء من هذا القبيل: بعد بت البداية ، وهو "صفر" منطقي ، تحتاج إلى تعيين المستوى اعتمادًا على البيانات المقدمة ، من الأدنى إلى الأعلى. يأتي بعد ذلك جزء من التكافؤ لا يمكنك استخدامه. يوجد في نهاية الرسالة بت توقف ("وحدة" منطقية) ، يمكن أن يختلف طولها. يمكن العثور على مثال من التعليمات البرمجية في التعليمات البرمجية المصدر الموجودة في نهاية المقالة. يمكن العثور على مزيد من المعلومات حول UART على الشبكة ، والكثير من المواد. يمكن استخدام UART لأغراض أخرى ، على سبيل المثال PWM ، ولكن في حالتنا ، هذا يعني أنه من الممكن نظريًا نقل إشارة صوتية كاملة مباشرة إلى السماعة ، كما هو الحال في مشغلات wav على وحدة التحكم الدقيقة. ومع ذلك ، أود أن أقترح استخدامه كمولد متعرج. يمكن توفير تردد النغمة وطور الإشارة في شكل بتات البيانات ، على سبيل المثال ، سوف يخلق
00001111 متعرجًا تكون فترته مساوية لـ 10 فترات من وقت الإرسال بتة واحدة (حيث يوجد في هذه الحالة أيضًا بت بدء تشغيل يساوي 0 وتوقف توقف يساوي 1). نظرًا لبتات البداية والتوقف ، لا يمكن نقل جميع فترات التعرج ، على سبيل المثال ، في هذه الحالة
01100110 ، حيث سنستمع في الأساس إلى مثل هذا التسلسل في الحافلة
0011001101 . إذا كنت تستخدم معدل نقل بيانات عاليًا ، على سبيل المثال 115200 بود ، فمن المنطقي إنشاء ترددات صوتية مسموعة عن طريق تمديد فترات meadras بعدة بايت.
...
باستخدام هذا
الرابط يمكنك تنزيل البرنامج لتحويل الملف إلى صوت ناقل
UART . هناك أيضًا إصدار يستخدم OpenAL لتشغيل الصوت أثناء تشغيل البرنامج ، وهنا
الرابط .
يتم توفير رمز البرنامج المصدر أدناه:
ملف الرأس SoundsDigitalBus.h#ifndef SOUNDS_DIGITAL_BUS_H_INCLUDED #define SOUNDS_DIGITAL_BUS_H_INCLUDED #define SDB_WAV_FILE_NAME "sdb_output.wav" #define SDB_UART_BIT 8 #define SDB_UART_PARITY 0 #define SDB_UART_STOP_BIT 1 #define SDB_UART_BAUDRATE 9600 #define SDB_UART_BAUDRATE_MAX 921600
كود المصدر لملف SoundsDigitalBus.cpp #include "SoundsDigitalBus.h" #if SDB_WITH_OPENAL == 1
الملف main.h #ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED #define LINUX 0x00 #define WINDOWS 0x01 #define RU 0x00 #define EN 0x01
ملف main.cpp #include "main.h" sdb soundsDigitalBus; int main() { static FILE *fp = NULL;
ملاحظة لاحظت خطأ في شفرة المصدر أن بت البداية هو المنطقي 1 ، وليس 0 ، وأن بت التوقف هي 0 ، وليس 1. من يحتاج إلى تطابق أساسي لإشارة صوت الواقع يمكنه إصلاح الخطأ نفسه.