{"id":1487,"date":"2019-08-19T12:35:21","date_gmt":"2019-08-19T12:35:21","guid":{"rendered":"http:\/\/mikrobotik.com\/wp2\/?p=1487"},"modified":"2022-07-06T05:17:03","modified_gmt":"2022-07-06T02:17:03","slug":"dfplayer-mp3-player-modul-kullanimi","status":"publish","type":"post","link":"https:\/\/www.mikrobotik.com\/wp2\/2019\/08\/19\/dfplayer-mp3-player-modul-kullanimi\/","title":{"rendered":"DFplayer MP3 player mod\u00fcl kullan\u0131m\u0131. (Arduino_PIC_Kablosuz (android),Raspberry pi, PC, STM)"},"content":{"rendered":"<p>Bu yaz\u0131mda DFPLAYER mini MP3 \u00e7alar mod\u00fcl\u00fcne yer verdim. Bu mod\u00fcl seri port \u00fczerinden komut ald\u0131\u011f\u0131 i\u00e7in Arduino, PIC, PC, hatta kablosuz olarak Bluetooth ve ESP8266-01 mod\u00fcl\u00fcyle bile telefonunuzdan ya da uzaktan kontrol edilebilir.<br \/>\nAyr\u0131ca hi\u00e7 bir ek donan\u0131ma ihtiya\u00e7 duymadan kendi \u00fczerindeki buton giri\u015flerini kullanarak da mod\u00fcl\u00fc kontrol edebilirsiniz.<\/p>\n<p><span style=\"color: #ff6600;\"><strong><span style=\"color: #ff0000;\">Videolarda<\/span>, Arduino ile \u00e7al\u0131\u015fmas\u0131, Android ile kablosuz \u00e7al\u0131\u015fma, SPK \u00e7\u0131k\u0131\u015f\u0131 ile kendi ba\u015f\u0131na minimal \u00e7al\u0131\u015fmas\u0131, PIC 16F1827 ile <span style=\"color: #ff0000;\">Konu\u015fan saat<\/span> yap\u0131m\u0131 ( Bunu di\u011fer mikrokontrolc\u00fcler ve arduino ile de yapabilirsiniz. ) g\u00f6sterilmi\u015ftir.<\/strong><\/span><\/p>\n<p>Mod\u00fcl 3.3V &#8211; 5V aras\u0131 \u00e7al\u0131\u015f\u0131yor. ( Her ne kadar \u00e7izimlerde arduino \u00fczerinden 5V al\u0131nm\u0131\u015f olsa da ak\u0131m harcamas\u0131 y\u00fcksek oldu\u011funda sorun olabilir. <span style=\"color: #ff6600;\">Bilginiz olsun<\/span>. <span style=\"color: #ff6600;\">Uzun s\u00fcreli \u00e7al\u0131\u015facaksa\u00a0 ayr\u0131 beslenmesi iyi olacakt\u0131r.<\/span> )<br \/>\nFakat SPK \u00e7\u0131k\u0131\u015f\u0131na hoparl\u00f6r ba\u011flamay\u0131 d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z 5V ile \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 \u00f6neririm. Hoparl\u00f6r kullanacaksan\u0131z bir \u00e7ok \u015femada SPK-1 ve SPK-2 u\u00e7lar\u0131na birlikte ba\u011flay\u0131n deniyor. Bu \u015fekilde \u00e7al\u0131\u015f\u0131yor. Fakat bende 0.5W l\u0131k hoparl\u00f6r var, belki de bundan dolay\u0131 ak\u0131m fazla \u00e7ekiyor gibi geldi. devrede sorun yaratt\u0131. Ben de SPK1 &#8211; GND olarak ba\u011flayarak ve araya da 470uF kondansat\u00f6r ba\u011flayarak sorunsuz \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flad\u0131m.<br \/>\nAyr\u0131ca internette SPK ba\u011flant\u0131lar\u0131na hoparl\u00f6r ba\u011fland\u0131\u011f\u0131nda g\u00fcr\u00fclt\u00fc olabildi\u011fi yaz\u0131yor. Ger\u00e7ekten \u00f6yle. Fakat bunu gidermek i\u00e7in baz\u0131 yollar bulunmu\u015f.<br \/>\n1-) 2 adet GND ucunun birbirine ba\u011flanm\u0131\u015f olmas\u0131,<br \/>\n2-) dfplayer ile arduinoyu farkl\u0131 kaynaklardan beslemek (Tabii ki GND leri birle\u015ftirmek)<br \/>\n3-) SPK \u00e7\u0131k\u0131\u015f\u0131n\u0131n birine 470uF kondansat\u00f6r ba\u011flamak.<br \/>\n4-) Ses giri\u015f ve \u00e7\u0131k\u0131\u015flar\u0131nda ses kablolar\u0131n\u0131n kullan\u0131lmas\u0131,<br \/>\n5-) Ses giri\u015f \u00e7\u0131k\u0131\u015flar\u0131n\u0131n birbirine yak\u0131n olarak monte edilip kablo g\u00fcr\u00fclt\u00fcs\u00fcn\u00fcn azalt\u0131lmas\u0131.<br \/>\n( Ben protoboard \u00fczerinde deneme yapt\u0131\u011f\u0131mdan, ba\u011flant\u0131 kablolar\u0131 uzun oldu\u011fundan, g\u00fcr\u00fclt\u00fcy\u00fc artt\u0131rd\u0131. )<\/p>\n<p><strong><span style=\"color: #ff0000;\">Not:<\/span> DFplayer mod\u00fcl\u00fcn\u00fcn \u00fcst\u00fcndeki LED enerji verildi\u011finde de\u011fil sd kart\u0131 okumaya ba\u015flad\u0131\u011f\u0131 anda yan\u0131yor. Enerji verdi\u011finizde neden LED yanmad\u0131 problem mi var demeyin.\u00a0<\/strong><\/p>\n<p><strong>Arduino kullananlar hemen k\u00fct\u00fcphane arayacaklard\u0131r<\/strong>. Bol miktarda k\u00fct\u00fcphane bulacaklard\u0131r. <span style=\"color: #ff6600;\">Fakat \u015funu s\u00f6ylemeliyim ki<\/span>, bu k\u00fct\u00fcphanelerin baz\u0131lar\u0131 basit komutlara yer verdi\u011finden sadece deneme olarak kullan\u0131labilir. Bundan dolay\u0131 <span style=\"color: #ff6600;\">K\u00dcT\u00dcPHANES\u0130Z<\/span> olarak \u00e7al\u0131\u015fmas\u0131n\u0131 anlataca\u011f\u0131m. Bu \u015fekilde kendiniz t\u00fcm komutlar\u0131 kullanabileceksiniz.<br \/>\n<span style=\"color: #ff6600;\"><strong>Arduino k\u00fct\u00fcphanesini kullanarak yapaca\u011f\u0131m diyenler a\u015fa\u011f\u0131daki linklere bakabilirler.<\/strong><\/span>\u00a0Fakat unutmay\u0131n mod\u00fcl geli\u015ftik\u00e7e k\u00fct\u00fcphaneniz yeni komutlar\u0131 kullanamayabilir. Ya da baz\u0131 komutlar 2 ye b\u00f6l\u00fcnm\u00fc\u015f, siz komutu yollars\u0131n\u0131z hata verebilir veya komut \u00e7al\u0131\u015fmaz. Mesela Random all komutu benim mod\u00fclde yer de\u011fi\u015ftirmi\u015f .<br \/>\n<span style=\"color: #ff6600;\">K\u00fct\u00fcphanesiz \u00e7al\u0131\u015fmay\u0131 \u00f6\u011frenip kendi komut sisteminizi kullanman\u0131z\u0131 \u00f6neririm.<\/span><\/p>\n<p>1. link :<a href=\"https:\/\/wiki.dfrobot.com\/DFPlayer_Mini_SKU_DFR0299\" target=\"_blank\" rel=\"noopener\"><strong> arduino k\u00fct\u00fcphaneli \u00e7al\u0131\u015fma.<\/strong><\/a><br \/>\n2. link : <strong><a href=\"https:\/\/github.com\/jimaobian\/DFRobotWiki\/wiki\/DFPlayer_Mini_SKU_DFR0299\" target=\"_blank\" rel=\"noopener\">Arduino k\u00fct\u00fcphaneli \u00e7al\u0131\u015fma.<\/a><\/strong><\/p>\n<p>Ayr\u0131ca verece\u011fim datasheet dosyas\u0131ndan sonra versiyonlara g\u00f6re komut seti de\u011fi\u015fmi\u015f fakat datasheet eski kalm\u0131\u015f. Bir \u00e7ok yerden toplad\u0131\u011f\u0131m verilerle a\u015fa\u011f\u0131daki tablolar\u0131 olu\u015fturdum. Sizler tablodaki verilere bakarak, kendi mod\u00fcl\u00fcn\u00fcz\u00fcn komut setini alg\u0131layabilirsiniz.<br \/>\n<a href=\"http:\/\/www.picaxe.com\/docs\/spe033.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Datasheet dosyas\u0131 burada.<\/strong><\/a><\/p>\n<p><span style=\"color: #ff6600;\">Bu mod\u00fcl kendi ba\u015f\u0131na<\/span> \u00e7al\u0131\u015facak \u015fekilde anons sistemlerinde kullan\u0131labilir. Mesela bir sens\u00f6r koydu\u011funuzda, sens\u00f6r bir ki\u015fiyi hissetti\u011finde, mp3 dosyas\u0131n\u0131 \u00e7almaya ba\u015flar ve bulundu\u011fu yeri anlatmaya ba\u015flar. (Bunu sa\u011flamak i\u00e7in Mod\u00fcl\u00fcn IO1-2\u00a0 u\u00e7lar\u0131ndan birini sens\u00f6r kontrol\u00fc ile \u015fase yapmas\u0131 yeterli. )<br \/>\nYa da mikrokontrolc\u00fc kullanarak g\u00f6rme engelliler i\u00e7in saat gibi n\u00fcmerik de\u011ferleri okuyabilir.<br \/>\nYa da anons sistemleri gibi kullan\u0131larak makine de hata varsa \u00e7evredeki ki\u015fileri sesle ikaz edebilir.<br \/>\nDaha pek \u00e7ok projede bu mod\u00fcl\u00fc rahatl\u0131kla kullanabilirsiniz.<br \/>\nAUX giri\u015fini de kablo \u00e7ekerek hallederseniz, Bluetooth ses al\u0131c\u0131s\u0131\u00a0 ya da radyo sistemi ba\u011flayabilirsiniz. Bluetooth ile telefondan da ses dosyalar\u0131n\u0131 \u00e7alabilirsiniz.<br \/>\n<span style=\"color: #ff6600;\">Tek eksi\u011fi MP3 dosyalar\u0131n\u0131n isimlerini ekranda yazd\u0131ramamak.<\/span><\/p>\n<p><strong>Mod\u00fcl ilk enerji verildi\u011finde hi\u00e7 bir ses oynatmaz.<\/strong> Bu pozisyonunu bozmak i\u00e7in <strong>Play<\/strong> komutu, <strong>Repeat<\/strong> komutu\u00a0 gibi komutlar\u0131n gelmesini bekler. \u015eayet kendi ba\u015f\u0131na \u00e7al\u0131\u015facaksa butona basman\u0131z\u0131 bekler. Otomatik \u00e7al\u0131\u015fs\u0131n derseniz, IO portlar\u0131ndan birini GND ye ba\u011flaman\u0131z yeter.<br \/>\nBelki de Busy monostable \u015feklinde \u00e7al\u0131\u015ft\u0131rarak da,( k\u0131sa s\u00fcreli\u011fine LOW yapmak i\u00e7in) IO-1 pimine ba\u011flayabilirsiniz. ( K\u0131sa s\u00fcreli\u011fine IO-1 pimi gnd ye ba\u011fland\u0131\u011f\u0131nda NEXT komutu i\u015flevi g\u00f6r\u00fcr. Uzun s\u00fcreli GND ye ba\u011fl\u0131 olursa Ses d\u00fc\u015f\u00fcr\u00fcc\u00fc g\u00f6revi g\u00f6r\u00fcr. )<br \/>\n\u015eark\u0131 ba\u015flad\u0131\u011f\u0131nda busy pimi, HIGH olur. Bitti\u011finde, LOW olarak di\u011fer \u015fark\u0131ya ge\u00e7mesini sa\u011flayabilirsiniz. Tabii ki denenmedi\u011finden t\u00fcm \u015fark\u0131lar bitince ba\u015fa d\u00f6ner mi bilemiyorum. Belki de bir de Reset butonu konulabilir.<\/p>\n<p><strong>Mod\u00fcl Repeat<\/strong> komutuyla devaml\u0131 tekrarlar. Bunu yaparken Random All komutu g\u00f6nderirseniz, kar\u0131\u015f\u0131k \u00e7alma durumunda, tekrar modunda \u00e7al\u0131\u015f\u0131r.<br \/>\n<span style=\"color: #ff6600;\">Ancak CMD 0x0D komutu kullan\u0131rsan\u0131z, mp3 dosyas\u0131n\u0131 oynatma i\u015flemi bitince durur. Ya da dizin ve \u015fark\u0131 ismi se\u00e7erseniz bu \u015fark\u0131y\u0131 oynat\u0131r ve durur.\u00a0<\/span><br \/>\n<span style=\"color: #ff6600;\">Bu \u015fekilde \u00e7al\u0131\u015fmas\u0131 durumunda arka arkaya istedi\u011finiz ses dosyalar\u0131n\u0131 oynatabilirsiniz. Bununla birlikte mp3 dosyas\u0131n\u0131 okumas\u0131 biraz gecikmeli ba\u015flad\u0131\u011f\u0131 i\u00e7in, arka arkaya tekrar edilen dosyalar\u0131n uzun bo\u015fluk vermesini istemiyorsan\u0131z, dosyan\u0131z\u0131 WAV olarak kaydedin. Daha \u00e7abuk tepki verdi\u011finden arada bo\u015fluk hissedilmeyecektir.<br \/>\n<\/span>Bununla birlikte sesin bitti\u011fini nas\u0131l anlayaca\u011f\u0131m derseniz. Mod\u00fcl sesin bitti\u011fini 2 yolla bildiriyor.<br \/>\n<strong>1-)<\/strong> Seri port \u00fczerinden 0x3C, 0x3D, 0x3E g\u00f6nderir. Neden 3 adet kod. Sebebi U-disk, SD kart, Flash i\u00e7in 3 ayr\u0131 geri bildirimdir. Hangisi \u00e7al\u0131yorsa ona g\u00f6re cevap verir. Ayr\u0131ca biten ses dosyas\u0131n\u0131n numaras\u0131n\u0131 da g\u00f6sterir.<br \/>\n<strong>2-)<\/strong> BUSY pini. Bu pin LOW ise hala ses dosyas\u0131 oynat\u0131l\u0131yor. HIGH ise ses dosyas\u0131 duruyor demektir. ( <span style=\"color: #ff6600;\">Pause komutunda denemedim sizler pause komutunda da kontrol edersiniz.<\/span> )<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Dosya sistemi:<\/strong><\/span><br \/>\nBu mod\u00fcl SDHC kart kullan\u0131yor 2GB-32GB ye kadar.<br \/>\nBu kart\u0131 FAT veya FAT32 sistemi ile formatlayarak i\u015fe ba\u015flayabilirsiniz. Ya da <a href=\"https:\/\/www.sdcard.org\/downloads\/formatter\/\" target=\"_blank\" rel=\"noopener\"><strong>SDformatter<\/strong><\/a> program\u0131n\u0131 kullanabilirsiniz. Dizin yap\u0131s\u0131 ve dosya isimlendirmesi belli \u015fartlara ba\u011flanm\u0131\u015ft\u0131r.<br \/>\n\u00d6ncelikle dizin ismi ne olursa olsun mod\u00fcl mp3 dosyas\u0131 varsa bunlar\u0131 track numaras\u0131 olarak isimlendiriyor. Bundan dolay\u0131 sadece\u00a0 repeat komutu verildi\u011finde 1. \u015fark\u0131dan ba\u015flar ve hangi dizinde olursa olsun mp3 dosyalar\u0131n\u0131 \u00e7alabiliyor. Tabii ki belli bir s\u0131n\u0131r\u0131 var.<br \/>\n<strong>Fakat sizin haz\u0131rlaman\u0131z gereken k\u0131s\u0131m \u015fudur.<\/strong><br \/>\nAna dizinde 1-99 aras\u0131 dizin yaratabilirsiniz. Bu dizinler mutlaka 2 karakterlik olmal\u0131. Yani 1 diye dizin ismi olmayacak. 01 olarak yaz\u0131lacak.<br \/>\nDizin i\u00e7indeki dosyalar ise 1-255 aras\u0131 olacak. Tabii ki burada 3 karakterlik kodlama olaca\u011f\u0131ndan <strong>1.mp3 yerine<\/strong> <span style=\"color: #ff0000;\"><strong>001.mp3 ,\u00a0\u00a0<\/strong><\/span>255.mp3 yaz\u0131lacak.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1492 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/dosyasistem.png\" alt=\"\" width=\"716\" height=\"347\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 716px; --smush-placeholder-aspect-ratio: 716\/347;\" \/><\/p>\n<p><strong>Bunlar\u0131n d\u0131\u015f\u0131nda mp3 adl\u0131 bir dizin yarat\u0131labilir.<\/strong> Bu dizin \u00f6zel bir dizindir ve i\u00e7ine ula\u015fmak i\u00e7in dizin numaras\u0131n\u0131 byte olarak veremeyece\u011finiz i\u00e7in, buna <strong>ayr\u0131 bir komut<\/strong> koymu\u015flar. Bu dizinden bir par\u00e7a \u00e7almak isterseniz.<strong> 0x12<\/strong>\u00a0komutunu kullanmal\u0131s\u0131n\u0131z. mp3 dizini i\u00e7erisindeki dosyalar ise 4 karakterlik dosya ismi olmal\u0131. mesela 0001.mp3 2999.mp3 olarak yaz\u0131l\u0131r. bu dizinin limiti 2999.mp3 t\u00fcr. bundan daha fazla dosya \u00e7al\u0131namaz.<\/p>\n<p>Peki hangi numaral\u0131 dosya hangi \u015fark\u0131y\u0131 temsil ediyor nereden bilece\u011fiz. DFplayer bunu bize g\u00f6steremiyor. yani mp3 dosyas\u0131 i\u00e7erisindeki TITLE b\u00f6l\u00fcm\u00fcn\u00fc okuyup bize g\u00f6steremiyor. Biz bunu dosya sisteminde g\u00f6rebiliriz. \u00c7\u00fcnk\u00fc t\u00fcm dosya isimlerinde ba\u015ftaki numaraya bak\u0131yor. yani bizler 001.mp3 yazmak yerine 001_sescalmasistemi1.mp3 olarak isimlendirebiliriz. Mod\u00fcl sadece ba\u015ftaki 001 k\u0131sm\u0131na bak\u0131yor ve \u00e7almaya ba\u015fl\u0131yor. A\u015fa\u011f\u0131daki SD kart\u0131m\u0131n i\u00e7eri\u011finde bunu g\u00f6rebilirsiniz.<\/p>\n<p><strong>Benim SD kart\u0131mdaki dizin yap\u0131s\u0131 :<\/strong><br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/SD_tree.png\" rel=\"lightbox[1487]\"><img decoding=\"async\" class=\"lightbox aligncenter wp-image-1502 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/SD_tree.png\" alt=\"\" width=\"385\" height=\"522\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 385px; --smush-placeholder-aspect-ratio: 385\/522;\" \/><\/a><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Not :<\/strong><\/span><br \/>\nT\u00fcm m\u00fczik listenizi dizin yap\u0131s\u0131na uygun olarak sd karta kopyalad\u0131n\u0131z, sonras\u0131nda dizin yap\u0131s\u0131na g\u00f6re 1-255 aras\u0131 m\u00fczik dosyalar\u0131na isim eklemeniz gerekiyor. Bunu yapabilmek i\u00e7in<span style=\"color: #ff0000;\"><strong> file renamer<\/strong><\/span> programlar\u0131 var. Bu programlar\u0131 kullanarak dosya ismini koruyup, ba\u015f\u0131na otomatik olarak 1-255 aras\u0131 say\u0131y\u0131 verebiliyorsunuz. Bunu yaparken 1 yerine 001 yazmas\u0131 i\u00e7in format\u0131 ayarlaman\u0131z gerekir.<\/p>\n<p>Mod\u00fcl USB disk , SD kart (TF card) , AUX, ve Flash\u00a0 sistemlerini kullanabiliyor. Fakat AUX giri\u015fleri pim olarak \u00e7\u0131kar\u0131lmad\u0131\u011f\u0131 i\u00e7in direkt kullanamazs\u0131n\u0131z. USB disk k\u0131sm\u0131n\u0131 hi\u00e7 denemedim. T\u00fcm komutlar ayn\u0131 fakat baz\u0131 komutlarda U-disk se\u00e7meniz gerekti\u011fi belirtilmi\u015ftir.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>\u00d6nce komut setini g\u00f6relim.<\/strong>\u00a0<\/span><br \/>\nKomut seti 10 byte tan olu\u015fur. A\u00e7\u0131klamalar\u0131 tablodad\u0131r. \u00d6rnek:\u00a07E FF 6 3F 1 0 0 FE BB EF gibi<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1489 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/komutseti.png\" alt=\"\" width=\"918\" height=\"283\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 918px; --smush-placeholder-aspect-ratio: 918\/283;\" \/><\/p>\n<p>Bu mod\u00fcl\u00fcn basit bir komut yap\u0131s\u0131 var. Fakat komut i\u00e7erisinde do\u011frulama kodunu (<strong>checksum<\/strong>) sizin hesaplaman\u0131z gerekiyor. Bunun i\u00e7in a\u015fa\u011f\u0131daki tablo yard\u0131mc\u0131 olacakt\u0131r. Checksum, 2 byte tan olu\u015fur. Bundan dolay\u0131 HIGHBYTE ve LOWBYTE olarak adland\u0131r\u0131lm\u0131\u015ft\u0131r.\u00a0 Bunun yan\u0131 s\u0131ra ilk hesaplamada 65535 de\u011feri hex olarak 0xFFFF say\u0131s\u0131na kar\u015f\u0131l\u0131k geliyor. Asl\u0131nda 0-65535 adet rakam vard\u0131r. Bundan dolay\u0131 16 bitlik say\u0131 65536 ediyor. 1. y\u00f6ntemde +1 bunu temsil ediyor. Bir \u00e7ok yerde s\u0131f\u0131rdan \u00e7\u0131karma yani 2. y\u00f6ntem kullan\u0131lm\u0131\u015ft\u0131r. \u00c7\u0131kan sonucun, sa\u011fdaki 2 byte olan\u0131 checksum de\u011feridir. . Hangisi kolay\u0131n\u0131za gelirse.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1490 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/checksum.png\" alt=\"\" width=\"955\" height=\"398\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 955px; --smush-placeholder-aspect-ratio: 955\/398;\" \/><\/p>\n<p>BYTE 3 ile belirtilen s\u0131radaki CMD komutlar\u0131 a\u015fa\u011f\u0131daki tabloda yer almaktad\u0131r. Komutlar\u0131n hepsini denemedim. Baz\u0131lar\u0131n\u0131 deneyerek sistemi anlamaya \u00e7al\u0131\u015ft\u0131m. Dok\u00fcmanlardaki bilgilerden komut setini olu\u015fturdum. <strong><span style=\"color: #ff6600;\">Bu arada datasheetteki komut setinden farkl\u0131l\u0131klar vard\u0131r buna dikkat edin.<\/span><\/strong><br \/>\nA\u015fa\u011f\u0131daki komut sistemleri <strong>ilk etapta kar\u0131\u015f\u0131k gelebilir<\/strong> fakat inceledi\u011finizde <span style=\"color: #ff6600;\"><strong>\u00e7ok kolay adapte olabilece\u011finizi g\u00f6rebileceksiniz.<\/strong><\/span><\/p>\n<table width=\"959\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\" colspan=\"3\" width=\"959\">\n<h3><span style=\"color: #ff0000;\"><strong>CMD komutlar\u0131 ve a\u00e7\u0131klamalar\u0131<\/strong><\/span><\/h3>\n<\/td>\n<\/tr>\n<tr>\n<td>0x01<\/td>\n<td>NEXT<\/td>\n<td>sonraki \u015fark\u0131ya ge\u00e7<\/td>\n<\/tr>\n<tr>\n<td>0x02<\/td>\n<td>PREVIOUS<\/td>\n<td>\u00f6nceki \u015fark\u0131ya ge\u00e7<\/td>\n<\/tr>\n<tr>\n<td>0x03<\/td>\n<td>Specify tracking(NUM) 0-2999<\/td>\n<td><strong>\u00f6zel \u015fark\u0131 se\u00e7imi 0-2999<\/strong><\/td>\n<\/tr>\n<tr>\n<td>0x04<\/td>\n<td>Increase volume<\/td>\n<td>ses artt\u0131r.<strong> (Bak CMD\u00a0 0x10)<\/strong><\/td>\n<\/tr>\n<tr>\n<td>0x05<\/td>\n<td>Decrease volume<\/td>\n<td>ses azalt. <strong>(Bak CMD\u00a0 0x10)<\/strong><\/td>\n<\/tr>\n<tr>\n<td>0x06<\/td>\n<td>Specify volume 0-30<\/td>\n<td>ses seviyesi desimal<strong> 0-30<\/strong> aras\u0131 ayarla<\/td>\n<\/tr>\n<tr>\n<td>0x07<\/td>\n<td width=\"630\">Specify EQ(0\/1\/2\/3\/4\/5)<br \/>\nNormal\/Pop\/Rock\/Jazz\/Classic\/Base<\/td>\n<td>Ekolayz\u0131r se\u00e7imi<\/td>\n<\/tr>\n<tr>\n<td>0x08<\/td>\n<td width=\"630\">Specify playback mode<br \/>\n(0\/1) Repeat\/folder repeat<\/td>\n<td width=\"265\">Tekrar se\u00e7imi yap\u0131l\u0131r. T\u00fcm par\u00e7alar<br \/>\nveya sadece belirtilen dizin i\u00e7indeki par\u00e7alar. Dizin numaras\u0131 0-15 aras\u0131 parametre low byte olarak yaz\u0131l\u0131r.<br \/>\nDatasheet 0\/1\/2\/3 yazsa da sonradan de\u011fi\u015fikli\u011fe u\u011fram\u0131\u015f ve sadece 0\/1 \u00e7al\u0131\u015f\u0131yor di\u011fer ikisi ba\u015fka komut olarak yap\u0131lm\u0131\u015f.\u00a0 Benim mod\u00fcl\u00fcmde.<\/td>\n<\/tr>\n<tr>\n<td>0x09<\/td>\n<td width=\"630\">Specify playback source(0\/1\/2\/3\/4)<br \/>\nU\/TF\/AUX\/SLEEP\/FLASH<\/td>\n<td>kaynak se\u00e7imi. USB\/TF\/AUX\/SLEEP\/FLASH<\/td>\n<\/tr>\n<tr>\n<td>0x0A<\/td>\n<td>Enter into standby \u2013 low power<\/td>\n<td>standby durumuna ge\u00e7er d\u00fc\u015f\u00fck enerji modu<\/td>\n<\/tr>\n<tr>\n<td>0x0B<\/td>\n<td>Normal working<\/td>\n<td>Normal \u00e7al\u0131\u015fma. ne oldu\u011fu anla\u015f\u0131lmad\u0131<\/td>\n<\/tr>\n<tr>\n<td>0x0C<\/td>\n<td>RESET Module<\/td>\n<td width=\"265\">reset mod\u00fcl. T\u00fcm de\u011ferler s\u0131f\u0131rlan\u0131r.<br \/>\nEn ba\u015ftaki \u015fark\u0131dan ba\u015flar . Ses de\u011feri 30 olur.<\/td>\n<\/tr>\n<tr>\n<td>0x0D<\/td>\n<td>Playback<\/td>\n<td width=\"265\">\u00c7almaya ba\u015fla. Bu \u015fekilde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rsa\u00a0\u015fark\u0131 sonunda durur. \u015eayet repeat komutu \u00f6nceden kullan\u0131ld\u0131ysa durmadan bir sonraki par\u00e7aya ba\u015flar.<\/td>\n<\/tr>\n<tr>\n<td>0x0E<\/td>\n<td>Pause<\/td>\n<td>Ge\u00e7ici durdurma.<\/td>\n<\/tr>\n<tr>\n<td>0x0F<\/td>\n<td width=\"630\">Specify folder and file to playback * [DH]=Folder, [DL]=File<br \/>\nImportant: Folders must be named 01~99, files must be named 001~255<\/td>\n<td width=\"265\">Dizin ve \u015fark\u0131 se\u00e7imi. Dizin ad\u0131 olarak 01-99 aras\u0131 ve \u015fark\u0131 i\u00e7in ise 1-255 aras\u0131 se\u00e7im yap\u0131l\u0131r.<br \/>\nAyr\u0131ca DH parametre1 =dizin numaras\u0131\u00a0 DL parametre2 =\u015fark\u0131 numaras\u0131 olacak. \u015eark\u0131lar 001-255 aras\u0131 yaz\u0131lm\u0131\u015f olmal\u0131 dizin i\u00e7erisinde. Dikkat: 1 nolu \u015fark\u0131 i\u00e7in dosya ismi 001.mp3 olmal\u0131. 1 nolu dizin i\u00e7in dizin numaras\u0131 01 olacak.<\/td>\n<\/tr>\n<tr>\n<td>0x10<\/td>\n<td width=\"630\">\u00a0Volume adjust set<br \/>\n{DH\uff1d1:Open volume adjust }{DL: set volume gain 0~31}<\/td>\n<td width=\"265\">Ses ayar se\u00e7imi<br \/>\nDH=1 ise ses artt\u0131r azalt \u00f6zelli\u011fi a\u00e7\u0131l\u0131r. DL=ses kazanc\u0131 0-30 se\u00e7ilir. <span style=\"color: #ff6600;\">0x04 ve 0x05 \u00f6zelli\u011fi i\u00e7in 1 olmal\u0131 diye d\u00fc\u015f\u00fcnd\u00fcr\u00fcyor. Fakat denenmedi.<\/span><\/td>\n<\/tr>\n<tr>\n<td>0x11<\/td>\n<td>Loop play * [DH]=X, [DL]=(0x01:play, 0x00:stop play)<\/td>\n<td width=\"265\">tekrar modu a\u00e7\u0131l\u0131r Veya kapat\u0131l\u0131r.<\/td>\n<\/tr>\n<tr>\n<td>0x12<\/td>\n<td width=\"630\">Play mp3 file [NUM] in mp3 folder *<br \/>\n[DH]=highByte(NUM), [DL]=lowByte(NUM)<br \/>\nPlay mp3 file in folder named mp3 in your TF-card. File format exact 4-digit number (0001~2999) e.g. 0235.mp3<\/td>\n<td width=\"265\">Root dizininde mp3 dizini i\u00e7erisindeki dosyalar\u0131 0001-2999 aras\u0131 isimlendirin. Ve \u00e7a\u011f\u0131rmak istedi\u011finizde sadece mp3 dizini i\u00e7indekileri DH ve DL ye yazarak \u00e7a\u011f\u0131r\u0131n. \u00f6rnek: 2999 hex olarak 0x0BB7 dir. DH=0x0B\u00a0 DL=0xB7 olacak.<\/td>\n<\/tr>\n<tr>\n<td>0x13<\/td>\n<td>Unknown ? Unknown: Returns error code 0x07<\/td>\n<td width=\"265\">bilinmeyen komut hata kodu 7 bildirir<\/td>\n<\/tr>\n<tr>\n<td>0x14<\/td>\n<td>\u00a0Unknown ? Unknown: Returns error code 0x06<\/td>\n<td width=\"265\">bilinmeyen komut hata kodu 6 bildirir<\/td>\n<\/tr>\n<tr>\n<td>0x15<\/td>\n<td>\u00a0Unknown ? Unknown: Returns no error code, but no function found<\/td>\n<td width=\"265\">bilinmeyen komut hi\u00e7 hata d\u00f6nd\u00fcrmez.<\/td>\n<\/tr>\n<tr>\n<td>0x16<\/td>\n<td>Stop * [DH]=X, [DL]=X, Stop playing current track<\/td>\n<td width=\"265\">\u015fark\u0131y\u0131 durdurur.<\/td>\n<\/tr>\n<tr>\n<td>0x17<\/td>\n<td>\u00a0Loop Folder &#8220;01&#8221; * [DH]=x, [DL]=1~255, Loops all files in folder named &#8220;01&#8221;<\/td>\n<td width=\"265\">dizin tekrar\u0131. Belirtilen Dizin i\u00e7erisindeki 001-255 \u015fark\u0131y\u0131 tekrar eder. DL =dizin numaras\u0131.<\/td>\n<\/tr>\n<tr>\n<td>0x18<\/td>\n<td>\u00a0Random play * [DH]=X, [DL]=X Random all tracks, always starts at track 1<\/td>\n<td width=\"265\">Kar\u0131\u015f\u0131k tekrar etme moduna girer. 1. \u015fark\u0131dan ba\u015flar.<\/td>\n<\/tr>\n<tr>\n<td>0x19<\/td>\n<td>Single loop * [DH]=0, [DL]=0 Loops the track that is playing<\/td>\n<td width=\"265\">tek bir \u015fark\u0131y\u0131 tekrar eder. \u015eark\u0131 \u00e7alarken bu komut g\u00f6nderilir. \u00c7alan \u015fark\u0131 tekrar eder. Durdurulas\u0131ya kadar.<\/td>\n<\/tr>\n<tr>\n<td>0x1A<\/td>\n<td>\u00a0Pause * [DH]=X, [DL]=(0x01:pause, 0x00:stop pause)<\/td>\n<td width=\"265\">Bu t\u00fcm sistemi ge\u00e7ici olarak durdurur. DL=1 durdurur. DL=0 tekrar ba\u015flat\u0131r.<br \/>\n<span style=\"color: #ff0000;\"><strong>Bu \u00f6nemlidir. Ba\u015fka hi\u00e7bir komut sistemi tekrar ba\u015flatmaz. RESET atsan\u0131z bile ayn\u0131 durumda kal\u0131r.<\/strong><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"height: 2276px;\" width=\"793\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\" colspan=\"3\" width=\"959\">\n<h3><span style=\"color: #ff0000;\"><strong>CMD fonksiyon ve a\u00e7\u0131klamalar\u0131<\/strong><\/span><\/h3>\n<\/td>\n<\/tr>\n<tr>\n<td>0x3A<\/td>\n<td>Medium inserted * [DH]=0, [DL]=(1:U-disk, 2:TF-card)<\/td>\n<td width=\"265\">ortam tak\u0131ld\u0131 ortam: U-disk , TF kart<\/td>\n<\/tr>\n<tr>\n<td>0x3B<\/td>\n<td>\u00a0Medium ejected * [DH]=0, [DL]=(1:U-disk, 2:TF-card)<\/td>\n<td width=\"265\">ortam \u00e7\u0131kar\u0131ld\u0131 ortam: U-disk , TF kart<\/td>\n<\/tr>\n<tr>\n<td>0x3C<\/td>\n<td width=\"630\">Finished track on U-disk * [DH]=highByte(NUM), [DL]=lowByte(NUM)<br \/>\nNot validated. Returns track number when song is finished on U-Disk<\/td>\n<td width=\"265\">USB disk \u015fark\u0131 bitti<\/td>\n<\/tr>\n<tr>\n<td>0x3D<\/td>\n<td width=\"630\">\u00a0Finished track on TF-card * [DH]=highByte(NUM), [DL]=lowByte(NUM)<br \/>\nReturns track number when song is finished on TF<\/td>\n<td width=\"265\">TF kart \u015fark\u0131 bitti<\/td>\n<\/tr>\n<tr>\n<td>0x3E<\/td>\n<td width=\"630\">Finished track on Flash * [DH]=highByte(NUM), [DL]=lowByte(NUM)<br \/>\nNot validated. Returns track number when song is finished on Flash<\/td>\n<td width=\"265\">Flash \u015fark\u0131 bitti<\/td>\n<\/tr>\n<tr>\n<td>0x3F<\/td>\n<td width=\"630\">\u00a0Initialization parameters * [DH]=0, [DL]= 0 ~ 0x0F. Returned code when Reset (0x12) is used. (each bit represent one device of the low-four bits)<br \/>\nSee Datasheet. 0x02 is TF-card. Error 0x01 when no medium is inserted.<\/td>\n<td width=\"265\">S\u0131f\u0131rlama komutu.<br \/>\n7E FF 06 3F 00 00 01 xx xx EF\u00a0 U-disk<br \/>\n7E FF 06 3F 00 00 02 xx xx EF\u00a0 TF kart<br \/>\n7E FF 06 3F 00 00 04 xx xx EF\u00a0 PC<br \/>\n7E FF 06 3F 00 00 08 xx xx EF\u00a0 FLASH<br \/>\n7E FF 06 3F 00 00 03 xx xx EF TF kart U-disk<\/td>\n<\/tr>\n<tr>\n<td>0x40<\/td>\n<td width=\"630\">Error ? [DH]=0, [DL]= 0~7 Error code(Returned codes not yet analyzed)<br \/>\nError-1 : Card not found<br \/>\nError-2 : Sleeping<br \/>\nError-3 : Get Wrong Stack<br \/>\nError-4 : Check Sum Not Match<br \/>\nError-5 : File Index Out of Bound<br \/>\nError-6 : Cannot Find File<br \/>\nError-7 : In Advertise<\/td>\n<td>Bu error kodlar\u0131ndan tam emin de\u011filim baz\u0131 kodlar ile kar\u015f\u0131la\u015f\u0131nca internetten ara\u015ft\u0131r\u0131p bunu buldum. Datasheet i\u00e7erisinde sadece 3 adet error\u00a0 kodu var fakat modul error code 6 diyor. san\u0131r\u0131m o da zaman i\u00e7erisinde geli\u015fti.<\/td>\n<\/tr>\n<tr>\n<td>0x41<\/td>\n<td width=\"630\">\u00a0Reply ? [DH]=0, [DL]= 0~? Return code when command feedback is high<br \/>\nACK byte is high =feedback ON<\/td>\n<td width=\"265\">ACK byte 0x01 ise \u015fark\u0131 \u00e7alarken verilen komuttan sonra bilgi verir.<br \/>\n\u015eayet ACK byte 0x00 ise bilgi vermez. Repeat yapt\u0131\u011f\u0131nda.<\/td>\n<\/tr>\n<tr>\n<td>0x42<\/td>\n<td>The current status * [DH] = Device number [DL] = 0 no play, 1 play<\/td>\n<td width=\"265\">Anl\u0131k durum \u00f6\u011frenilir. DH ve DL bilgileri g\u00f6sterir.<\/td>\n<\/tr>\n<tr>\n<td>0x43<\/td>\n<td>The current volume * [DH]=0, [DL]= Volume (0x00-0x30)<\/td>\n<td width=\"265\">anl\u0131k ses durumunu g\u00f6sterir.\u00a0 Gelen say\u0131 HEX olarak gelir.<\/td>\n<\/tr>\n<tr>\n<td>0x44<\/td>\n<td>The current EQ * [DH]=0, [DL]= EQ(0\/1\/2\/3\/4\/5) [Normal\/Pop\/Rock\/Jazz\/Classic\/Base]<\/td>\n<td width=\"265\">Ekolayz\u0131r durumunu \u00f6\u011fren<\/td>\n<\/tr>\n<tr>\n<td>0x45<\/td>\n<td>The current playback mode * [DH]=0, [DL]= (0x00: no CMD 0x08 used, 0x02: CMD 0x08 used, not usefull)<\/td>\n<td width=\"265\">\u00c7alma durumunu \u00f6\u011fren.<\/td>\n<\/tr>\n<tr>\n<td>0x46<\/td>\n<td>\u00a0The current software version * [DH]=0, [DL]= Software version. (My version is 5)<\/td>\n<td width=\"265\">yaz\u0131l\u0131m versiyonunu \u00f6\u011fren.<\/td>\n<\/tr>\n<tr>\n<td>0x47<\/td>\n<td>The total number of U-disk files * [DH]=highByte(NUM), [DL]=lowByte(NUM). Not validated<\/td>\n<td width=\"265\">toplam \u015fark\u0131 say\u0131s\u0131n\u0131 g\u00f6sterir. U-disk i\u00e7in<\/td>\n<\/tr>\n<tr>\n<td>0x48<\/td>\n<td>The total number of TF-card files * [DH]=highByte(NUM), [DL]=lowByte(NUM)<\/td>\n<td width=\"265\">toplam \u015fark\u0131 say\u0131s\u0131n\u0131 g\u00f6sterir. TF kart i\u00e7in<\/td>\n<\/tr>\n<tr>\n<td>0x49<\/td>\n<td>\u00a0The total number of flash files * [DH]=highByte(NUM), [DL]=lowByte(NUM). Not validated<\/td>\n<td width=\"265\">toplam \u015fark\u0131 say\u0131s\u0131n\u0131 g\u00f6sterir. Flash i\u00e7in<\/td>\n<\/tr>\n<tr>\n<td>0x4A<\/td>\n<td>Keep on (Datasheet) ? Unknown. No returned parameter<\/td>\n<td width=\"265\">Bilinmiyor. Datasheet a\u00e7\u0131klama yapm\u0131yor.<\/td>\n<\/tr>\n<tr>\n<td>0x4B<\/td>\n<td>The current track of U-Disk * [DH]=highByte(NUM), [DL]=lowByte(NUM), Current track on all media<\/td>\n<td width=\"265\">Ka\u00e7\u0131nc\u0131 \u015fark\u0131 \u00e7ald\u0131\u011f\u0131n\u0131 g\u00f6sterir.\u00a0 U-disk ( <span style=\"color: #ff6600;\">benim mod\u00fclde TF karta kar\u015f\u0131l\u0131k geliyor.<\/span>) sizler di\u011fer kodlar\u0131 deneyebilirsiniz.<\/td>\n<\/tr>\n<tr>\n<td>0x4C<\/td>\n<td>The current track of TF card * [DH]=highByte(NUM), [DL]=lowByte(NUM), Current track on all media<\/td>\n<td width=\"265\">Ka\u00e7\u0131nc\u0131 \u015fark\u0131 \u00e7ald\u0131\u011f\u0131n\u0131 g\u00f6sterir.\u00a0 TF kart<\/td>\n<\/tr>\n<tr>\n<td>0x4D<\/td>\n<td>\u00a0The current track of Flash * [DH]=highByte(NUM), [DL]=lowByte(NUM), Current track on all media<\/td>\n<td width=\"265\">Ka\u00e7\u0131nc\u0131 \u015fark\u0131 \u00e7ald\u0131\u011f\u0131n\u0131 g\u00f6sterir.\u00a0 FLASH<\/td>\n<\/tr>\n<tr>\n<td>0x4E<\/td>\n<td width=\"630\">Folder &#8220;01&#8221; [DH]=x, [DL]=1 * [DH]=0, [DL]=(NUM) Change to first track in folder &#8220;01&#8221;\u00a0 Returns number of files in folder &#8220;01&#8221;<\/td>\n<td width=\"265\">Dizin se\u00e7ilir. Dizin numaras\u0131 DL ye yaz\u0131l\u0131r. Ve 01.mp3 ten ba\u015flar.<\/td>\n<\/tr>\n<tr>\n<td>0x4F<\/td>\n<td>The total number of folders * [DH]=0, [DL]=(NUM), Total number of folders, including root directory<\/td>\n<td width=\"265\">Toplam dizin say\u0131s\u0131n\u0131 g\u00f6sterir. Root dizini dahil. DL dizin say\u0131s\u0131n\u0131 g\u00f6sterir. 255 adetten fazla olamaz<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><strong>Mod\u00fcl\u00fcn hi\u00e7 bir i\u015flemci yada ba\u015fka mod\u00fcl kullan\u0131lmadan \u00e7al\u0131\u015fabildi\u011fini s\u00f6yledik.<\/strong><br \/>\n\u00dczerindeki Analog giri\u015f ve IO giri\u015f u\u00e7lar\u0131 2 farkl\u0131 \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayacaklard\u0131r.<br \/>\n\u015eunu hat\u0131rlatmal\u0131y\u0131m. Analog giri\u015fler \u00e7evre etkilerinden etkilenebilirlermi\u015f.<br \/>\n<span style=\"color: #ff6600;\">Birinci devre sadece analog giri\u015fler kullan\u0131larak yap\u0131lm\u0131\u015f olan devredir.<\/span><br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/analog_button.png\" rel=\"lightbox[1487]\"><img decoding=\"async\" class=\"lightbox aligncenter wp-image-1494 size-full lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/analog_button.png\" alt=\"\" width=\"1174\" height=\"532\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1174px; --smush-placeholder-aspect-ratio: 1174\/532;\" \/><\/a>\u0130kinci devre ise IO butonlar\u0131yla yap\u0131lm\u0131\u015f devredir. Burada butonlara uzun ve k\u0131sa bas\u0131lmas\u0131na g\u00f6re ikili fonksiyon olarak kullan\u0131lm\u0131\u015ft\u0131r.\u00a0 segment 1 ve segment 5 = 1. ve 5. \u015fark\u0131 i\u00e7in direkt \u00e7al\u0131\u015ft\u0131rma butonlar\u0131 i\u00e7indir.<\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/IO_button.png\" rel=\"lightbox[1487]\"><img decoding=\"async\" class=\"lightbox aligncenter wp-image-1495 size-full lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/IO_button.png\" alt=\"\" width=\"1129\" height=\"599\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1129px; --smush-placeholder-aspect-ratio: 1129\/599;\" \/><\/a><\/p>\n<p><span style=\"color: #ff0000;\"><strong>\u00d6ncelikle nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak i\u00e7in videoda g\u00f6sterilen arduino devresiyle ba\u015flayal\u0131m.<\/strong><\/span>\u00a0 Arduino seri monit\u00f6rde giden komutlar\u0131 ve gelen cevaplar\u0131 g\u00f6rebiliriz. K\u00dcT\u00dcPHANES\u0130Z oldu\u011fundan daha k\u00fc\u00e7\u00fck bir yere de s\u0131\u011fabilece\u011fi i\u00e7in atmega168 i\u015flemcili nano ile kontrol ettim. \u00c7izimlerde ise UNO g\u00f6sterilmi\u015ftir bacak sistemleri ayn\u0131 oldu\u011fundan sorun yaratmayacakt\u0131r.<\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/devre.png\" rel=\"lightbox[1487]\"><br \/>\n<img decoding=\"async\" class=\"lightbox aligncenter wp-image-1496 size-full lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/devre.png\" alt=\"\" width=\"814\" height=\"661\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 814px; --smush-placeholder-aspect-ratio: 814\/661;\" \/><\/a><\/p>\n<p>A\u015fa\u011f\u0131daki devre ise <strong>Bluetooth<\/strong> \u00fczerinden \u00e7al\u0131\u015fmas\u0131n\u0131 g\u00f6stermektedir.<br \/>\n<span style=\"color: #ff0000;\"><strong>Burada dikkat edilecek k\u0131s\u0131m<\/strong> <\/span>3.3V ile \u00e7al\u0131\u015fan bluetooth mod\u00fcl\u00fc i\u00e7in sinyal seviye d\u00f6n\u00fc\u015f\u00fcm yap\u0131lmal\u0131. 2 diren\u00e7le burada yap\u0131lm\u0131\u015ft\u0131r. Bluetooth Rx giri\u015fine 5V luk gelen sinyalin 3.3V seviyesine d\u00fc\u015f\u00fcr\u00fclerek verilmesi ama\u00e7lanm\u0131\u015ft\u0131r. diren\u00e7ler 1K ve 2K d\u0131r.<br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/devre_bluetooth.png\" rel=\"lightbox[1487]\"><img decoding=\"async\" class=\"lightbox aligncenter wp-image-1497 size-full lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/devre_bluetooth.png\" alt=\"\" width=\"948\" height=\"718\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 948px; --smush-placeholder-aspect-ratio: 948\/718;\" \/><\/a><\/p>\n<p>Bu devre ise <strong>DAC<\/strong> \u00e7\u0131k\u0131\u015flar\u0131n\u0131 kullanarak kulakl\u0131k veya amfiye ba\u011flanmas\u0131n\u0131 g\u00f6stermektedir.<br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/devre_dac.png\" rel=\"lightbox[1487]\"><img decoding=\"async\" class=\"lightbox aligncenter wp-image-1498 size-full lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/devre_dac.png\" alt=\"\" width=\"948\" height=\"760\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 948px; --smush-placeholder-aspect-ratio: 948\/760;\" \/><\/a><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Not:<\/strong> <\/span><strong>Devreler Fritzing de \u00e7izilmi\u015ftir. DFplayer mod\u00fcl\u00fc k\u00fct\u00fcphanesi yoktu. Bu k\u00fct\u00fcphaneyi ekledim. Ekledi\u011fim k\u00fct\u00fcphaneyi ise T\u00fcm dosyalar\u0131n payla\u015f\u0131ld\u0131\u011f\u0131 yerden alabilirsiniz.\u00a0<\/strong><\/p>\n<p>Bluetooth \u00fczerinden kontrol edilen devre i\u00e7in basit\u00e7e Android program yazd\u0131m. T\u00fcm fonksiyonlar olmasa da \u00f6rnek olmas\u0131 a\u00e7\u0131s\u0131ndan kullanabilirsiniz. Bu program\u0131n dosyalar\u0131 da t\u00fcm dosyalar aras\u0131nda yer almaktad\u0131r. <strong>MIT app inventor 2 ile yap\u0131lm\u0131\u015ft\u0131r.<\/strong><a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/apk_program.png\" rel=\"lightbox[1487]\"><img decoding=\"async\" class=\"lightbox aligncenter wp-image-1500 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/apk_program.png\" alt=\"\" width=\"215\" height=\"356\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 215px; --smush-placeholder-aspect-ratio: 215\/356;\" \/><\/a><\/p>\n<pre class=\"height-set:true height:300 lang:arduino decode:true\" title=\"DFplayer kontrol program\">\/\/\/              MP3 PLAYER PROJECT\r\n\/\/\/ http:\/\/educ8s.tv\/arduino-mp3-player\/\r\n\/\/\/ softserialden gelirse serial k\u0131sma aktar. \r\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n#include \"SoftwareSerial.h\"\r\nSoftwareSerial mySerial(10, 11);\r\n# define Start_Byte 0x7E\r\n# define Version_Byte 0xFF\r\n# define Command_Length 0x06\r\n# define End_Byte 0xEF\r\n# define Acknowledge 0x00 \/\/Returns info with command 0x41 [0x01: info, 0x00: no info]\r\n# define ACTIVATED LOW\r\nint say=0;\r\nint buttonNext = 2;\r\nint buttonPause = 3;\r\nint buttonPrevious = 4;\r\nboolean isPlaying = false;\r\nvoid setup () {\r\npinMode(buttonPause, INPUT);\r\ndigitalWrite(buttonPause,HIGH);\r\npinMode(buttonNext, INPUT);\r\ndigitalWrite(buttonNext,HIGH);\r\npinMode(buttonPrevious, INPUT);\r\ndigitalWrite(buttonPrevious,HIGH);\r\nmySerial.begin (9600);\r\nSerial.begin (9600);\r\nSerial.print(\" basladi\");\r\ndelay(1000);\r\nplayFirst();\r\nisPlaying = true;\r\n}\r\nvoid loop () { \r\n  \r\n \/\/ \u00d6rnek serial read komutu. 10 byte bekle. while (mySerial.available()&lt;10); \/\/ Wait until initialization parameters are received (10 bytes) \r\n \r\n  if (mySerial.available()) { \/\/ dfplayer dan gelen bilgileri yazd\u0131r. ****\r\n    say=1;\r\n    Serial.print(mySerial.read(),HEX);\r\n  }\r\n  if (say==1){\r\n    Serial.println(\"   gelen\");\r\n    say=0;\r\n  }\r\n \/\/ if (Serial.available()) {\r\n \/\/   mySerial.write(Serial.read());\r\n \/\/ }\r\n  \r\n if (digitalRead(buttonPause) == ACTIVATED)\r\n  {\r\n    if(isPlaying)\r\n    {\r\n      pause();\r\n      isPlaying = false;\r\n    }else\r\n    {\r\n      isPlaying = true;\r\n      play();\r\n    }\r\n  }\r\n if (digitalRead(buttonNext) == ACTIVATED)\r\n  {\r\n    if(isPlaying)\r\n    {\r\n      playNext();\r\n    }\r\n  }\r\n   if (digitalRead(buttonPrevious) == ACTIVATED)\r\n  {\r\n    if(isPlaying)\r\n    {\r\n      playPrevious();\r\n    }\r\n  }\r\n}\r\nvoid playFirst()\r\n{\r\n \/\/execute_CMD(0x0C,0,0); \/\/ Reset module\r\n  \/\/delay(500);\r\n execute_CMD(0x3F, 0, 0);\r\ndelay(500);\r\n  setVolume(20);\r\n  delay(500);\r\n  \/\/ execute_CMD(0x11,0,1); \/\/ repeat play =0 1 repeat stop play 0 0\r\n  \/\/execute_CMD(0x0B,0,0);  \/\/ normal \u00e7al\u0131\u015fma bir de\u011fi\u015fiklik yaratm\u0131yor. \r\n  \/\/ execute_CMD(0x0D,0,0);\r\n  \r\n  \/\/delay(500);\r\n  \/\/execute_CMD(0x4B,0,0); \/\/ hangi par\u00e7ay\u0131 \u00e7ald\u0131\u011f\u0131n\u0131 g\u00f6sterir. \r\n  \/\/ execute_CMD(0x0D,0,0);\r\n \/\/ execute_CMD(0x18,0,0); \/\/ random all\r\n \/\/ delay(500);\r\n  execute_CMD(0x4B,0,0); \/\/ hangi par\u00e7ay\u0131 \u00e7ald\u0131\u011f\u0131n\u0131 g\u00f6sterir.\r\n  \/\/execute_CMD(0x18,0,0); \/\/ random all\r\n  delay(500);\r\n  \r\n  \/\/execute_CMD(0x17,0,14); \/\/ loop folder  \r\n   \/\/execute_CMD(0x0B,0,0); \/\/ Normal \u00c7al\u0131\u015fma \r\n    \r\n  \/\/delay(500);\r\n}\r\nvoid pause()\r\n{\r\n  execute_CMD(0x0E,0,0);\r\n  delay(500);\r\n}\r\nvoid play()\r\n{\r\n  execute_CMD(0x0D,0,1); \r\n  delay(500);\r\n}\r\nvoid playNext()\r\n{\r\n  \/\/execute_CMD(0x0D,0,0);\r\n   execute_CMD(0x01,0,0); \/\/ next \r\n  delay(5500);\r\n  \/\/execute_CMD(0x08,0,155); \/\/ 155 \u015fark\u0131 numaras\u0131 devaml\u0131 ayn\u0131 \u015fark\u0131y\u0131 \u00e7alar. 155. \u015fark\u0131 yokken hata vermiyor bir \u015fark\u0131 se\u00e7iyor. \r\n \/\/ execute_CMD(0x07,0,0); \/\/ EQU se\u00e7me 0-5 aras\u0131\r\n \/\/ execute_CMD(0x03,0,3);\/\/ 3. \u015fark\u0131y\u0131 \u00e7alar ve durur. dizin belirtilmez. \r\n \/\/execute_CMD(0x0E,0,0); \/\/ pause \r\n\/\/ execute_CMD(0x1A,0,1); \/\/ special pause mode  ancak 01A 0 0 ile eski haline d\u00f6ner yada reset ile. ***\r\n \/\/  delay(4500);\r\n\/\/ execute_CMD(0x1A,0,0);\/\/ special no pause mode. ***  0E gibi de\u011fil 0E ile duran \u015fark\u0131 0D ile \u00e7al\u0131\u015ft\u0131r\u0131labilir. \r\n\/\/   delay(2500);  \r\n  \r\n   \/\/ execute_CMD(0x16,0,0);\/\/ stop track fakat 3D durdu bilgisi gelmez. \r\n   \/\/delay(5500); \r\n   \/\/ execute_CMD(0x11,0,0);\/\/ repeat play=0 1   repeat stop = 0 0\r\n   \/\/delay(2500); \r\n  \/\/execute_CMD(0x48,0,0);  \/\/ toplam par\u00e7a say\u0131s\u0131n\u0131 g\u00f6sterir. TF i\u00e7in\r\n  \/\/delay(500);\r\n  execute_CMD(0x4B,0,0); \/\/ hangi par\u00e7ay\u0131 \u00e7ald\u0131\u011f\u0131n\u0131 g\u00f6sterir. \r\n  delay(500);\r\n  \r\n\/\/execute_CMD(0x43,0,0); \/\/ valume seviyesini goster\r\n\/\/ delay(500);\r\n  \/\/execute_CMD(0x42,0,0);  \/\/ play durumunu g\u00f6sterir. ayr\u0131ca hangi ayg\u0131t \u00e7al\u0131yor onu g\u00f6sterir. tf usb gibi. \r\n \/\/ execute_CMD(0x12,0,3);  \/\/ mp3 dizinindeki \u015fark\u0131lardan 3. s\u00fcn\u00fc \u00e7al. bu komut sadece mp3 dizinindekilerden se\u00e7ti\u011finizi direkt olarak \u00e7alar ve bitiminde durur. \r\n \/\/ delay(500);\r\n}\r\n\r\nvoid playPrevious()\r\n{\r\n  execute_CMD(0x02,0,1);\r\n  delay(500);\r\n}\r\nvoid setVolume(int volume)\r\n{\r\n  execute_CMD(0x06, 0, volume); \/\/ Set the volume (0x00~0x30)\r\n  delay(2000);\r\n}\r\nvoid execute_CMD(byte CMD, byte Par1, byte Par2)\r\n\/\/ Excecute the command and parameters\r\n{\r\n\/\/ Calculate the checksum (2 bytes)\r\nword checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);\r\n\/\/ Build the command line\r\nbyte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,\r\nPar1, Par2, highByte(checksum), lowByte(checksum), End_Byte};\r\n\/\/Send the command line to the module\r\nfor (byte k=0; k&lt;10; k++)\r\n{\r\nmySerial.write( Command_line[k]);\r\nSerial.print( Command_line[k],HEX);\r\n}\r\nSerial.println();\r\n}\r\n<\/pre>\n<p>Bu program\u0131, en tepesinde yazan siteden ald\u0131m. Kendim ihtiyac\u0131ma g\u00f6re d\u00fczenledim.<br \/>\nVerilen komutlardan baz\u0131lar\u0131n\u0131n a\u00e7\u0131klamas\u0131 yan\u0131nda yazmaktad\u0131r. bu komutlar denenmek \u00fczere o b\u00f6l\u00fcmlere yaz\u0131ld\u0131.\u00a0 Ayr\u0131ca orijinal programda olmayan myserial k\u0131sm\u0131ndan gelenleri seri monit\u00f6re yazan k\u0131s\u0131m eklendi. Bu \u015fekilde mod\u00fcl\u00fcn g\u00f6nderdi\u011fi bilgileri de seri monit\u00f6rde g\u00f6rebilirsiniz.<br \/>\nBu bilgiler \u00f6nemlidir. Hangi par\u00e7a numaras\u0131 \u00e7al\u0131yor. Par\u00e7a bitti mi tekrar ediyor mu bu tip bilgiler \u00f6nemli ayr\u0131ca ka\u00e7 dizin var, ka\u00e7 dosya var, Ka\u00e7\u0131nc\u0131 \u015fark\u0131 oynat\u0131l\u0131yor. Bu tip bilgileri de alabilirsiniz. Bunlara bakarak mikrokontrolc\u00fc karar verebilir.<\/p>\n<p><strong>Orjinal dosya ise\u00a0 Payla\u015ft\u0131\u011f\u0131m T\u00fcm dosyalar aras\u0131nda <span style=\"color: #ff6600;\">mp3.zip<\/span> dosyas\u0131d\u0131r.\u00a0<\/strong><\/p>\n<p><strong>DFplayer devre \u015femas\u0131, t\u00fcm dosyalar aras\u0131ndad\u0131r. <\/strong>Bu devreye bakarak AUX giri\u015flerini g\u00f6rebilirsiniz.<\/p>\n<p><strong><span style=\"color: #ff0000;\">Ses dosyas\u0131 formatlar\u0131n\u0131<\/span><\/strong>, <strong><a href=\"https:\/\/online-audio-converter.com\/tr\/\" target=\"_blank\" rel=\"noopener\">bu sitede online<\/a><\/strong> olarak \u00e7evirebilirsiniz. Kullan\u0131m\u0131 gayet kolay ve h\u0131zl\u0131.<\/p>\n<h3><span style=\"color: #ff0000;\"><strong>DFplayer ile KONU\u015eAN SAAT program\u0131 (PIC 16F1827 kullan\u0131lm\u0131\u015ft\u0131r.)<\/strong><\/span><\/h3>\n<p>Bu program her ne kadar PICbasic ile yap\u0131ld\u0131ysa da seslendirme k\u0131sm\u0131 program sonundad\u0131r ve kolayl\u0131kla programlama dilinize \u00e7evirebilirsiniz. <span style=\"color: #ff6600;\">PICBASIC 3.0 ve yukar\u0131s\u0131 derleyici kullan\u0131n ya da config sat\u0131r\u0131n\u0131 derleyicinize g\u00f6re d\u00fczeltin.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/konusan_saat_sema.png\" rel=\"lightbox[1487]\"><img decoding=\"async\" class=\"lightbox aligncenter wp-image-1514 size-full lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/08\/konusan_saat_sema.png\" alt=\"\" width=\"872\" height=\"853\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 872px; --smush-placeholder-aspect-ratio: 872\/853;\" \/><\/a><\/p>\n<p>Yukar\u0131daki devre, DS1307 li RTC mod\u00fcl\u00fcnden, okunan saat bilgisinde, dakika k\u0131sm\u0131n\u0131n her\u00a0 de\u011fi\u015fti\u011finde, DFplayer&#8217;a dijitlerdeki numaraya g\u00f6re, dosya ismi se\u00e7ilerek komut g\u00f6nderilir.<br \/>\nDFplayer daki komutlardan biri, hem ana dizin i\u00e7erisinde bulunan dizin numaras\u0131n\u0131, hem de dosya numaras\u0131n\u0131 vermeye imkan tan\u0131d\u0131\u011f\u0131ndan, dosya numaralar\u0131n\u0131 se\u00e7ebiliyoruz.<br \/>\nKomut dizilimi bu \u015fekildedir.\u00a0<span style=\"color: #ff0000;\"><strong>$7E,$FF,$06,$0F,$00,$02,degeryaz,ch,cl,$EF<\/strong><\/span>\u00a0 burada degeryaz de\u011fi\u015fkeni dosya numaras\u0131d\u0131r. hemen solundaki $02 ise ana dizin i\u00e7erisindeki 2 numaral\u0131 dizini i\u015faret eder.<br \/>\nDosyalar wav ve mp3 olarak kay\u0131t edildi.<br \/>\n1 rakam\u0131 seslendirilecek ise, 001.wav dosyas\u0131 i\u015faret edilir. 10 rakam\u0131 seslendirilecek ise 010.wav dosyas\u0131 i\u015faret edilir.<br \/>\n<span style=\"color: #ff6600;\">Her komuttan sonra \u00e7alma s\u00fcresi kadar bekleme verilir.<\/span> Ben wav dosyalar\u0131m\u0131 700ms yetecek \u015fekilde d\u00fczenledi\u011fim i\u00e7in pause 700 koydum. Sizin kay\u0131t edece\u011finiz dosyalardaki sesler daha uzunsa, sizler bu s\u00fcreyi ayarlayabilirsiniz.<br \/>\nAyr\u0131ca birler basama\u011f\u0131nda 0 rakam\u0131 varsa 10 dedikten sonra <strong>s\u0131f\u0131r s\u00f6ylenmemesi i\u00e7in dosya numaras\u0131 056.wav<\/strong> i\u015faret edildi.<br \/>\nNormalde bu dosya olmad\u0131\u011f\u0131 i\u00e7in hata verecek ve dosyay\u0131 oynatamayacakt\u0131r. \u015eayet onlar basama\u011f\u0131nda 0 rakam\u0131 varsa bunu s\u0131f\u0131r olarak okuyacakt\u0131r. Mesela 08 gibi.\u00a0 Hata seri port \u00fczerinden geri bildirim olarak g\u00f6nderilir. CMD kodu 40 d\u0131r. Fakat ben devrede geri bildirim istemedi\u011fim i\u00e7in sorun olmuyor. (<span style=\"color: #ff6600;\">Kulland\u0131\u011f\u0131m hoparl\u00f6r 8ohm 0.5W bundan dolay\u0131 ses az \u00e7\u0131k\u0131yor. 3W hoparl\u00f6re kadar kullanabilirsiniz.<\/span> )<\/p>\n<p>Devrede <strong>EASYLCD LCD display mod\u00fcl\u00fc kullan\u0131ld\u0131<\/strong>. Bu mod\u00fcl i\u00e7in <a href=\"https:\/\/www.mikrobotik.com\/wp2\/2018\/06\/27\/easylcd-hd44780-uyumlu-karakter-lcd-seri-modul\/\" target=\"_blank\" rel=\"noopener\"><strong>ayr\u0131nt\u0131lar\u0131 buradan okuyabilirsiniz.\u00a0<\/strong><\/a><\/p>\n<p><span style=\"color: #ff6600;\">PICBASIC program\u0131 a\u015fa\u011f\u0131dad\u0131r.<\/span><\/p>\n<pre class=\"height-set:true height:300 lang:mel decode:true\" title=\"Konusan saat pic16f1827\">'****************************************************************\r\n'*  Name    : UNTITLED.BAS                                      *\r\n'*  Author  : [select VIEW...EDITOR OPTIONS]                    *\r\n'*  Notice  : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *\r\n'*          : All Rights Reserved                               *\r\n'*  Date    : 29.07.2013                                        *\r\n'*  Version : 1.0                                               *\r\n'*  Notes   :                                                   *\r\n'*          :                                                   *\r\n'****************************************************************\r\n\r\n#config\r\n  __config _CONFIG1, _FOSC_INTOSC &amp; _WDTE_OFF &amp; _PWRTE_ON &amp; _MCLRE_OFF &amp; _CP_ON &amp; _CPD_ON &amp; _BOREN_OFF &amp; _CLKOUTEN_OFF &amp; _IESO_OFF &amp; _FCMEN_OFF\r\n  __config _CONFIG2, _WRT_ALL &amp; _PLLEN_OFF &amp; _STVREN_OFF &amp; _LVP_OFF &amp; _BORV_LO &amp; _LVP_OFF\r\n#ENDCONFIG\r\n\r\n\r\n; 8mhz OSC  _________________________\r\nDEFINE OSC 8\r\nOSCCON= %01110000 \r\n;_______________________________________\r\n\r\n\r\nANSELA=0\r\nANSELB=0\r\nAPFCON1=%00000000    \r\n APFCON0=%00000000\r\nWPUB=255\r\nWPUA=255\r\n\r\nadcon0=0\r\nadcon1=0\r\nOPTION_REG.7=0\r\n\r\n TRISA=%00000000\r\nTRISB=%11011000     \r\n \r\n ; orjinal\r\n; ********  8 mhz de   9600 baud 8 N 1 ****************\r\nDEFINE HSER_RCSTA 90h ; Enable serial port &amp; continuous receive\r\nDEFINE HSER_TXSTA 20h ;' Enable transmit, BRGH = 0\r\nDEFINE HSER_CLROERR 1 ;' Clear overflow automatically\r\nDEFINE HSER_SPBRGH 0\r\nDEFINE HSER_SPBRG 51         ;++++++++++++  SPBRG  L olmal\u0131 +++++++++++++++++++++\r\n\r\nBAUDCON= %01001000         ' Enable 16 bit baudrate generator\r\n\r\n \r\n'________________________________saat de\u011fi\u015fkenleri________________________________________________ \r\nSCL var PORTB.1\r\nSDA var PORTB.0\r\ngossaat var byte\r\ngosdak var byte\r\n\r\nsaatbak var byte\r\ndakbak var byte\r\nsaat1d  var byte\r\nsaat2d  var byte\r\ndak1d   var byte\r\ndak2d   var byte\r\nchecktopla  var word\r\nch      var     byte\r\ncl      var     byte\r\ndegeryaz    var byte\r\n bakchk    var byte\r\n\r\ngosgun var byte\r\ngosay var byte\r\nGOSYIL VAR BYTE\r\n\r\nTEMP VAR BYTE\r\n\r\nsaat var byte\r\ndak var byte\r\nsn var byte \r\nGUN VAR BYTE\r\nAY VAR BYTE\r\nYIL VAR BYTE\r\nHAFGUN VAR BYTE\r\n\r\n\r\nyon var byte\r\nden var byte  \r\nyer var byte\r\ngosden var byte\r\nyilarti var byte\r\nhesap var byte\r\nk var byte\r\n\r\nbos var byte\r\nSENSSAY VAR BYTE\r\ndatesay var byte\r\n\r\n;clear \r\n   bakchk=1:degeryaz=0   ; bir kereye mahsus dfplayer'a reset atar\r\n   if bakchk=1 then\r\nchecktopla=(65535-($FF+$06+$0C+$00+$00+degeryaz)+1)\r\n CH=checktopla.highbyte\r\nCL=checktopla.lowbyte\r\n hserout [$7E,$FF,$06,$0C,$00,$00,degeryaz,ch,cl,$EF]\r\n \r\n  bakchk=0\r\n pause 500\r\nendif\r\n \r\npause 100\r\nSEROUT2 PORTB.5,84,[\"LCDDD\"]\r\n pause 100\r\n SEROUT2 PORTB.5,84,[\"LCDDD\"]\r\n pause 100\r\n SEROUT2 PORTB.5,84,[\"LCDBO\"]\r\n pause 25\r\n SEROUT2 PORTB.5,84,[\"LCDBL 6\"]\r\n pause 250\r\n;hserout [$7E,$FF,$06,$06,$01,$0,$14,$FE,$E0,$EF]\r\n; PAUSE 200\r\n; hserout [$7E,$FF,$06,$06,$01,$0,$14,$FE,$E0,$EF]\r\n; PAUSE 200\r\n; hserout [$7E,$FF,$06,$11,$01,$0,$01,$FE,$E8,$EF] ;7EFF611101FEE8EF\r\n; PAUSE 200\r\n; hserout [$7E,$FF,$06,$18,$01,$0,$0,$FE,$E2,$EF]  ; 7EFF618100FEE2EF\r\n;  PAUSE 200\r\n'--------------------------ANA PROGRAM--------------------------------------\r\n I2CWrite SDA,SCL,$D0,$07,[%00010000]\r\n\r\nAYAR:\r\n  SEROUT2 PORTB.5,84,[\"LCDCH\"]\r\n  pause 25\r\n  while PORTB.6=0\r\nwend\r\nAYAR1:   \r\n\r\n \r\n    GOSUB saatoku\r\n    \r\n\r\n  IF PORTB.6 =0 THEN \r\n  goto SAATAYAR1\r\nendif   \r\n\r\n     PAUSE 100\r\n '   i=0  :  Q=0\r\n    GOTO AYAR1\r\n'-------------------------G\u00d6STERGE AYAR KODLARI---------------------------------\r\nSAATAYAR1 :\r\nSEROUT2 PORTB.5,84,[\"LCDCB\"]\r\n\r\npause 25\r\n SEROUT2 PORTB.5,84,[\"LCDWR 1,7-\"]\r\nWhile PORTB.6=0\r\nwend\r\npause 25\r\n\r\n\r\nsaatayar:\r\ntemp=saat\r\n\r\nyer=1\r\n\r\nbak:  \r\nif PORTB.6=0 then goto dakayar\r\nif PORTB.3=0 then yon=1:goto saatayar2\r\nif PORTB.4=0 then yon=2:goto saatayar2\r\ngoto bak\r\n\r\nsaatayar2:\r\nif yon=2 then goto asagi\r\nif temp&gt;22 then \r\ntemp=0\r\ngoto yazdir\r\nelse\r\ntemp=temp+1\r\ngoto yazdir\r\nendif\r\ngoto bak \r\n\r\nasagi:\r\nif temp=0 then temp=23:goto yazdir\r\n\r\nif temp&lt;2 then \r\ntemp=0\r\ngoto yazdir\r\nelse \r\ntemp=temp-1\r\ngoto yazdir\r\nendif\r\nGOTO BAK\r\n'_______________________ saat ayar\u0131 sonu _______________\r\n\r\nyazdir:\r\nselect case yer\r\ncase 1\r\nden=7   ;$86\r\nsaat=temp\r\ncase 2\r\nden=10  ;$89\r\ndak=temp\r\ncase 3\r\nden=7   ;$c6                  ; burada 2. sat\u0131r i\u00e7in d\u00fczenleme yap c6 dedi\u011fi yer 2. sat\u0131r olacak.*****************\r\ngun=temp\r\ncase 4\r\nden=10  ;$c9\r\nay=temp\r\ncase 5\r\nden=15  ;$Ce\r\nyil=temp\r\nend select\r\n\r\n\r\nif yer&lt;3 then \r\nSEROUT2 PORTB.5,84,[\"LCDWR 1,\",dec2 DEN,\"-\",DEC2 TEMP]\r\npause 100\r\nSEROUT2 PORTB.5,84,[\"LCDWR 1,\",dec2 DEN,\"-\"]\r\npause 100    ;200\r\nendif\r\n\r\n\r\n\r\nif yer&gt;2 then \r\nSEROUT2 PORTB.5,84,[\"LCDWR 2,\",dec2 DEN,\"-\",DEC2 TEMP]\r\npause 100\r\nSEROUT2 PORTB.5,84,[\"LCDWR 2,\",dec2 DEN,\"-\"]\r\npause 100    ;200\r\nendif\r\n\r\nif yer=1 then goto bak\r\nif yer=2 then goto bakdak\r\nif yer=3 then goto gundak\r\nif yer=4 then goto aydak\r\nif yer=5 then goto yildak\r\n\r\n\r\n'------------------- dakika ayar -----------------\r\n\r\ndakayar:\r\nyer=2\r\ntemp=dak\r\n\r\nSEROUT2 PORTB.5,84,[\"LCDWR 1,10-\"]\r\npause 25\r\nWhile PORTB.6=0\r\nwend\r\n\r\n\r\nbakdak:\r\nif PORTB.6=0 then goto yilayar\r\nif PORTB.3=0 then yon=1:goto dakayar2\r\nif PORTB.4=0 then yon=2:goto dakayar2\r\ngoto bakdak\r\n\r\ndakayar2:\r\nif yon=2 then goto dakasa\r\nif temp&gt;58 then \r\ntemp=0\r\ngoto yazdir\r\nelse\r\ntemp=temp+1\r\ngoto yazdir\r\nendif\r\n \r\n\r\ndakasa:\r\nif temp=0 then temp=59:goto yazdir\r\nif temp&lt;2 then \r\ntemp=0\r\ngoto yazdir\r\nelse \r\ntemp=temp-1\r\ngoto yazdir\r\nendif\r\n\r\n\r\n'----------------------- dakika ayar sonu __________________\r\n\r\n'------------------- GUN ayar ba\u015flang\u0131c\u0131-----------------\r\ngunayar:\r\nyer=3\r\ntemp=gun\r\n                \r\nSEROUT2 PORTB.5,84,[\"LCDWR 2,7-\"] \r\n               \r\nWhile PORTB.6=0\r\nwend\r\n\r\n gundak:\r\nif PORTB.6=0 then \r\ngosub zaman_yaz\r\n\r\ngoto ayar\r\nendif \r\n\r\nif PORTB.3=0 then yon=1:goto gunayar2\r\nif PORTB.4=0 then yon=2:goto gunayar2\r\ngoto gundak\r\n\r\ngunayar2:\r\nif ay=1 or ay=3 or ay=5 or ay=7 or ay=8 or ay=10 or ay=12 then \r\ngosden=31\r\nelse\r\ngosden=30\r\nendif\r\nif yon=2 then goto gunasa\r\nif temp&gt;gosden-1  then \r\ntemp=1\r\ngoto yazdir\r\nelse\r\ntemp=temp+1\r\ngoto yazdir\r\nendif\r\n\r\ngunasa:\r\nif temp&lt;2 then \r\ntemp=gosden\r\ngoto yazdir\r\nelse \r\ntemp=temp-1\r\ngoto yazdir\r\nendif\r\n\r\n\r\n'----------------------- GUN ayar sonu __________________\r\n'------------------- AY ayar Ba\u015flang\u0131c\u0131-----------------\r\nayayar:\r\nyer=4\r\ntemp=ay\r\n                  \r\nSEROUT2 PORTB.5,84,[\"LCDWR 2,10-\"]                    \r\npause 25\r\nwhile PORTB.6=0\r\nwend\r\n\r\n\r\n\r\naydak:\r\nif PORTB.6=0 then goto gunayar\r\nif PORTB.3=0 then yon=1:goto ayayar2\r\nif PORTB.4=0 then yon=2:goto ayayar2\r\ngoto aydak\r\n\r\nayayar2:\r\nif yon=2 then goto ayasa\r\nif temp&gt;11  then \r\ntemp=1\r\ngoto yazdir\r\nelse\r\ntemp=temp+1\r\ngoto yazdir\r\nendif\r\n\r\nayasa:\r\nif temp&lt;2 then \r\ntemp=12\r\ngoto yazdir\r\nelse \r\ntemp=temp-1\r\ngoto yazdir\r\nendif\r\n\r\n\r\n'----------------------- AY ayar sonu __________________\r\n'------------------- YIL ayar Ba\u015flang\u0131c\u0131-----------------\r\nyilayar:\r\nyer=5\r\ntemp=yil\r\n                                ;lcdout $fe,$ce\r\nSEROUT2 PORTB.5,84,[\"LCDWR 2,15-\"] \r\npause 25\r\nwhile PORTB.6=0\r\nwend\r\n                               \r\n\r\n yildak:\r\n\r\nif PORTB.6=0 then goto ayayar\r\nif PORTB.3=0 then yon=1:goto yilayar2\r\nif PORTB.4=0 then yon=2:goto yilayar2\r\ngoto yildak\r\n\r\nyilayar2:\r\nif yon=2 then goto yilasa\r\nif temp&gt;98  then \r\ntemp=0\r\nyilarti=30\r\n                        ;lcdout $fe,$cb,dec2 yilarti\r\ngoto yazdir\r\nelse\r\ntemp=temp+1\r\ngoto yazdir\r\nendif\r\n\r\n\r\nyilasa:\r\nif yilarti=30 and temp=0 then \r\nyilarti=20\r\ntemp=99\r\n                        ;lcdout $fe,$cb,dec2 yilarti\r\ngoto yazdir\r\nendif\r\nif temp&lt;2 then \r\ntemp=0\r\ngoto yazdir\r\nelse \r\ntemp=temp-1\r\ngoto yazdir\r\nendif\r\n\r\n\r\n\r\n'---------------------------------SAAT OKU--------------------------------------\r\nSAATOKU:\r\n\r\n    I2CRead SDA, SCL,$D1,$00,[SN,DAK,SAAT,HAFGUN,GUN,AY,YIL,TEMP]\r\n         BOS=((sn&gt;&gt;4) &amp; $0F)*10+(SN &amp; $0F):sn=BOS\r\n         BOS=((DAK&gt;&gt;4) &amp; $0F)*10+(DAK &amp; $0F):DAK=BOS\r\n         BOS=((SAAT&gt;&gt;4) &amp; $0F)*10+(Saat &amp; $0F):SAAT=BOS\r\n         BOS=((GUN&gt;&gt;4) &amp; $0F)*10+(GUN &amp; $0F):GUN=BOS\r\n         BOS=((AY&gt;&gt;4) &amp; $0F)*10+(AY &amp; $0F)  :AY=BOS\r\n         BOS=((YIL&gt;&gt;4) &amp; $0F)*10+(YIL &amp; $0F):YIL=BOS\r\n\r\nif bakchk=dak then \r\nelse\r\ncall seslendir\r\nbakchk=dak\r\nendif\r\n\r\n\r\n\r\n atlaoku:\r\nSEROUT2 PORTB.5,84,[\"LCDWR 1,1-\",\"Hour:\",\" \",DEC2 saat,\":\",DEC2 dak,\":\",DEC2 sn ]\r\n\r\nPAUSE 25\r\ndatesay=datesay+1:if datesay&gt;5 then \r\ndatesay=0\r\n\r\nSEROUT2 PORTB.5,84,[\"LCDWR 2,1-\",\"Date:\",\" \",DEC2 gun,\".\",DEC2 ay,\".20\",DEC2 YIL ]\r\n\r\nPAUSE 25\r\nendif\r\n  RETURN\r\n\r\nZAMAN_YAZ:\r\nhesap=YIL\/4\r\nk=status.0\r\nif k=1 AND AY=2 AND GUN&gt;28 then\r\nGUN=28\r\nELSE\r\n\r\n if k=0 and ay=2 and gun&gt;28 then \r\n    gun=29\r\n    else\r\n    endif\r\nendif\r\n;baslayaz: sn=00:dak=10:saat=13:gun=25:ay=6:YIL=17\r\n        TEMP=(SN DIG 1)&lt;&lt;4+SN DIG 0:SN=TEMP\r\n        TEMP=(DAK DIG 1)&lt;&lt;4+DAK DIG 0:DAK=TEMP\r\n        TEMP=(SAAT DIG 1)&lt;&lt;4+SAAT DIG 0:SAAT=TEMP\r\n        TEMP=(GUN DIG 1)&lt;&lt;4+GUN DIG 0:GUN=TEMP\r\n        TEMP=(AY DIG 1)&lt;&lt;4+AY DIG 0:AY=TEMP\r\n        TEMP=(YIL DIG 1)&lt;&lt;4+YIL DIG 0:YIL=TEMP\r\n\r\n        I2CWrite SDA, SCL,$D1,$00,[SN,DAK,SAAT,HAFGUN,GUN,AY,YIL]\r\n        PAUSE 10 \r\n\r\n        return \r\n        \r\nsaatayir:\r\n\r\nseslendir:\r\n \r\n    saat1d=51:goto atlases\r\n\r\n atlases:\r\ndegeryaz=saat1d \r\ncall checksum\r\npause 1000\r\nsaatbak=saat : temp=saat mod 10:saat2d=temp:temp=saat-temp:saat1d=temp\r\n\r\ndakbak= dak  : temp=dak mod 10:dak2d=temp:temp=dak-temp:dak1d=temp\r\n\r\nif saat1d=0 then \r\n    saat1d=53:goto atlases1\r\nelse \r\n    goto atlases1\r\nendif\r\n atlases1:\r\ndegeryaz=saat1d \r\ncall checksum\r\npause 700\r\n\r\n\r\n\r\n\r\nif saat2d=0 then \r\n    saat2d=56:goto atlases2\r\nelse \r\n    goto atlases2\r\nendif\r\n atlases2:\r\ndegeryaz=saat2d \r\ncall checksum\r\npause 700\r\n\r\n\r\n\r\nif dak1d=0 then \r\n    dak1d=53:goto atlases3\r\nelse\r\n    goto atlases3\r\nendif\r\n\r\natlases3:\r\ndegeryaz=dak1d \r\ncall checksum\r\npause 700\r\n\r\n\r\nif dak2d=0 then \r\n    dak2d=56:goto atlases4\r\nelse \r\n    goto atlases4 \r\nendif\r\n\r\natlases4:\r\ndegeryaz=dak2d \r\ncall checksum\r\npause 700\r\ndegeryaz=56\r\n\r\n\r\nreturn\r\n\r\nchecksum:\r\nchecktopla=(65535-($FF+$06+$0F+$00+$02+degeryaz)+1)\r\n\r\nCH=checktopla.highbyte\r\nCL=checktopla.lowbyte\r\n hserout [$7E,$FF,$06,$0F,$00,$02,degeryaz,ch,cl,$EF]\r\n\r\nreturn\r\n\r\nend\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #ff6600;\">T\u00fcm dosyalar\u0131<\/span>\u00a0<strong><a href=\"https:\/\/drive.google.com\/open?id=1vbxJh42J2NbZBMQ7iNi_wKSUTKTDbxtC\" target=\"_blank\" rel=\"noopener\">buradan alabilirsiniz.\u00a0<\/a><\/strong><\/h3>\n<p><strong><span style=\"color: #ff0000;\">Arduino ile \u00e7al\u0131\u015fmas\u0131 :<\/span><\/strong><\/p>\n<p><iframe data-src=\"https:\/\/www.youtube.com\/embed\/KMOm9OCY-xA\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Android ile bluetooth \u00e7al\u0131\u015fma :<\/strong><\/span><\/p>\n<p><iframe data-src=\"https:\/\/www.youtube.com\/embed\/hGRmqVYBibo\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<p><span style=\"color: #ff0000;\"><strong>DFPLAYER\u00a0 SPK ile minimum donan\u0131m ile \u00e7al\u0131\u015fmas\u0131 :<\/strong><\/span><\/p>\n<p><iframe data-src=\"https:\/\/www.youtube.com\/embed\/x2KujSceinQ\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Konu\u015fan saat +16F1827+DFplayer \u00e7al\u0131\u015fmas\u0131. ( Dikkat video sonuna ikinci video eklenmi\u015ftir. )<\/strong><\/span><\/p>\n<p><iframe data-src=\"https:\/\/www.youtube.com\/embed\/0lXJeiQD2mY\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><br \/>\n&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda DFPLAYER mini MP3 \u00e7alar mod\u00fcl\u00fcne yer verdim. Bu mod\u00fcl seri port \u00fczerinden komut ald\u0131\u011f\u0131 i\u00e7in Arduino, PIC, PC, hatta kablosuz olarak Bluetooth ve ESP8266-01 mod\u00fcl\u00fcyle bile telefonunuzdan ya&#8230; <\/p>\n","protected":false},"author":1,"featured_media":1509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,15,3,5],"tags":[],"class_list":["post-1487","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-mblock","category-pic","category-raspi"],"_links":{"self":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/1487","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/comments?post=1487"}],"version-history":[{"count":3,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/1487\/revisions"}],"predecessor-version":[{"id":2364,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/1487\/revisions\/2364"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media\/1509"}],"wp:attachment":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media?parent=1487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/categories?post=1487"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/tags?post=1487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}