ماژول DY-SV17F با کد کالای 3011017050 و لینک

این ماژول با چندین روش راه اندازی میشه اما روش one line میتونه خیلی محبوب باشه چون فقط یک پایه از میکرو را درگیر میکنه و پورت UART درگیر نمیکنه، چندین ماژول مشابه هم از همین روش پشتیبانی میکنند ، پس این روش فقط خاص این ماژول میتونه نباشه
در این روش فقط با 0 و 1 کردن پایه و ایجاد تاخیر مناسب پیام ارسال میشود پس به راحتی میتونید کد را به هر زبانی تبدیل کنید و هیچ چیز پیچیده ای نداره
مطابق دیتاشیت اتصال سه پایه زیر باید بصورت جدول زیر تنظیم شود تا ماژول در حالت one line قرار بگیره ، دقت داشته باشید در لحظه روشن شدن ماژول باید وضعیت پایه ها به شکل زیر باشه و در زمان روشن بودن اگر این حالت انتخاب شود ماژول به این مد نمیرود
مهمترین بخش ارسال دیتا به ماژول هست که فانشن زیر این کار رو میکنه و پایه شماره 14 از میکرو برای ارسال دیتا انتخاب شده
حالا راحت میتونیم هر درخواستی را به ماژول ارسال کنیم
تنظیم صدا روی 20 به ترتیب اول 2 بعد 0 را ارسال میکنیم و در آخر مطابق دیتاشیت برای ست شدن صدا رو عددی که ارسال کردیم کد 0x0C را ارسال میکنیم
تنظیم صدا روی حداکثر که مقدار اون 30 هستف ابتدا 3 بعد 0 و در اخر 0x0C را ارسال میکنیم
پخش فایل 00001.mp3
روش نام گذاری در این ماژول با 5 رقم عدد هست و هنگام پخش اهنگ نیازی نیست صفرهای قبل را ارسال کنیم
عدد 0x01 را ارسال میکنیم به عنوان شماره یا نام فایل بعد مقدار 0x0B به عنوان انتخاب شدن این فایل ، حالا هر زمانی 0x11 را ارسال کنیم اهنگ شروع به پخش شدن میکند
ارسال 0x11 به تنهایی کلید play و آخرین آهنگ انتخاب شده را پخش میکند
ارسال 0x12 باعث pause شدن آهنگ میشه
ارسال 0x13 باعت stop شدن پخش میشه
ارسال 0x0E باعث میشه هنگامی که با 0x11 دستور play شدن را ارسال کردید همه آهنگها در یک حلقه بی نهایت تکرار و پخش شوند
ارسال 0x02 و بعد 0x0E باعث مشود از حلقه تکرار خارج شود
برای تکرار شدن یک آهنگ روش زیر
این روش باعث مشود آهنگ شماره 2 تکرار شود
اگر به دیتاشیت این ماژول مراجعه کنید متوجه میشید در مورد ارتباط تک سیم ناقص هست ، هوش مصنوعی هم نتونست کمک کنه و با سعی و خطا و حدس زدن من روش صحیح ارسال رو پیدا کردم ، امیدوارم مفید بوده باشه

این ماژول با چندین روش راه اندازی میشه اما روش one line میتونه خیلی محبوب باشه چون فقط یک پایه از میکرو را درگیر میکنه و پورت UART درگیر نمیکنه، چندین ماژول مشابه هم از همین روش پشتیبانی میکنند ، پس این روش فقط خاص این ماژول میتونه نباشه
در این روش فقط با 0 و 1 کردن پایه و ایجاد تاخیر مناسب پیام ارسال میشود پس به راحتی میتونید کد را به هر زبانی تبدیل کنید و هیچ چیز پیچیده ای نداره
مطابق دیتاشیت اتصال سه پایه زیر باید بصورت جدول زیر تنظیم شود تا ماژول در حالت one line قرار بگیره ، دقت داشته باشید در لحظه روشن شدن ماژول باید وضعیت پایه ها به شکل زیر باشه و در زمان روشن بودن اگر این حالت انتخاب شود ماژول به این مد نمیرود
| Con1 | Con2 | Con3 |
| 0 | 0 | 3.3V |
[HASHTAG="t25971"]define[/HASHTAG] ONE_LINE_PIN 14
void sendCmd(uint8_t cmd)
{
digitalWrite(ONE_LINE_PIN, LOW);
delayMicroseconds(3000);
for (uint8_t i = 0; i < 8; i++)
{
if (cmd & (1 << i)){
digitalWrite(ONE_LINE_PIN, HIGH);
delayMicroseconds(1200);
digitalWrite(ONE_LINE_PIN, LOW);
delayMicroseconds(400);
}else{
digitalWrite(ONE_LINE_PIN, HIGH);
delayMicroseconds(400);
digitalWrite(ONE_LINE_PIN, LOW);
delayMicroseconds(1200);
}
}
digitalWrite(ONE_LINE_PIN, HIGH);
delayMicroseconds(3000);
}
حالا راحت میتونیم هر درخواستی را به ماژول ارسال کنیم
تنظیم صدا روی 20 به ترتیب اول 2 بعد 0 را ارسال میکنیم و در آخر مطابق دیتاشیت برای ست شدن صدا رو عددی که ارسال کردیم کد 0x0C را ارسال میکنیم
sendCmd(0x02);
sendCmd(0x00);
sendCmd(0x0C); // تنظیم صدا روی 20
تنظیم صدا روی حداکثر که مقدار اون 30 هستف ابتدا 3 بعد 0 و در اخر 0x0C را ارسال میکنیم
sendCmd(0x03);
sendCmd(0x00);
sendCmd(0x0C); // تنظیم صدا روی 30
پخش فایل 00001.mp3
روش نام گذاری در این ماژول با 5 رقم عدد هست و هنگام پخش اهنگ نیازی نیست صفرهای قبل را ارسال کنیم
عدد 0x01 را ارسال میکنیم به عنوان شماره یا نام فایل بعد مقدار 0x0B به عنوان انتخاب شدن این فایل ، حالا هر زمانی 0x11 را ارسال کنیم اهنگ شروع به پخش شدن میکند
sendCmd(0x01);
sendCmd(0x0B);
sendCmd(0x11);
ارسال 0x11 به تنهایی کلید play و آخرین آهنگ انتخاب شده را پخش میکند
ارسال 0x12 باعث pause شدن آهنگ میشه
ارسال 0x13 باعت stop شدن پخش میشه
ارسال 0x0E باعث میشه هنگامی که با 0x11 دستور play شدن را ارسال کردید همه آهنگها در یک حلقه بی نهایت تکرار و پخش شوند
ارسال 0x02 و بعد 0x0E باعث مشود از حلقه تکرار خارج شود
برای تکرار شدن یک آهنگ روش زیر
این روش باعث مشود آهنگ شماره 2 تکرار شود
sendCmd(0x01); // انتخاب حالت تکرار تکآهنگ
sendCmd(0x0E); // ثبت حالت تکرار
sendCmd(0x02); // انتخاب آهنگ شماره 2
sendCmd(0x0B); // تأیید انتخاب
sendCmd(0x11); // پخش
اگر به دیتاشیت این ماژول مراجعه کنید متوجه میشید در مورد ارتباط تک سیم ناقص هست ، هوش مصنوعی هم نتونست کمک کنه و با سعی و خطا و حدس زدن من روش صحیح ارسال رو پیدا کردم ، امیدوارم مفید بوده باشه
