Dfplayer ve WTV020-sd-mını sd kart modülünün pic ile kontrolü

Başlatan F®T, 01 Mart 2013, 20:30:45

gogoce

Alıntı yapılan: F.T - 25 Mart 2013, 22:37:31
ilk yapmış olduğum kayıt videosudur.ses gayet güzel.ileri geri butonları ile parçaları tek tek çaldırabiliyoruz.


http://youtu.be/idfXcvXzeGk


süper ferit abi eline sağlık
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

erdalozenc

kararsız çalışmasının nedeni modül için 3.3v luk beslemenin yetersiz olması. 5 volta 2 diyotu seri bağlayarak beslemesini 3.6v yaparsanız sorunun çözüleceğini düşünüyorum.

efehurkan

Pic ile yapmış olduğunuz haberleşmeyi örnek vererek açıklayabilirmisiz? örneğin 1. butona basıldığında 1.dosyayı oynat. 2. butona basıldığında 2. dosyayı oynat gibi...

fofo

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14.02.2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@__config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF

DEFINE LOADER_USED 1

' ** Setup the Resonator Frequency, in Mhz **
Define OSC 4

Baud con 84 ' 9600 baud rate

' ** Port configurations **
TX VAR PORTB.5
RX VAR PORTB.2
CLK VAR PORTA.4
DI Var PORTA.0
RESET VAR PORTB.6
PIEZO VAR PORTB.7

DAT VAR WORD
Idx VAR BYTE

counter var byte
volume var word

volume = 65527

'---------------------------------------------------------------------------

Init:
'Configure all pins to digital operation since not using ADC
CMCON = 7 ' disable comparators

begin:
low piezo

dat = $FFF7
serout2 tx,baud,["Voice Volume - 1st Data = ",bin16 dat,13,10]
GOSUB SendDat

dat = $4
' set counter to file no. 4
counter = 4
serout2 tx,baud,["Address 4 of voice file - 2nd Data = ",bin16 dat,13,10]
GOSUB SendDat

playaddr:
dat = $fffe
serout2 tx,baud,["Play/Pause - 3rd Data = ",bin16 dat,13,10]
' GOSUB SendDat
GOSUB Playdata

' --------------------------------------------------------------------------
switch:

'if porta.2=0 then
' counter = counter - 1
' if counter<=1 then counter = 2
' dat = counter
'
' serout2 tx,baud,["Address of voice file - 2nd Data = ",bin16 dat,13,10]
' GOSUB SendDat
' goto playaddr
'endif

if porta.1=0 then
counter = counter + 1
if counter>=7 then counter = 6
dat = counter

serout2 tx,baud,["Address of voice file - 2nd Data = ",bin16 dat,13,10]
GOSUB SendDat
goto playaddr
endif

' Reduce Volume
if porta.2=0 then
volume = volume - 1
if volume<=65520 then volume = 65527
dat = volume

serout2 tx,baud,["Address of voice volume = ",bin16 dat,13,10]
GOSUB SendDat
'goto playaddr
endif

goto switch

STOP

'---------------------------------------------------------------------------

SendDAT:
LOW RESET ; 5ms reset pulse
PAUSE 5
INPUT RESET
PAUSE 300 ; 300ms before data

For Idx = 15 to 0 STEP -1 ; loop thru the bits
LOW CLK ; set CLK LOW
IF dat.0(Idx) THEN
INPUT DI ; if bit = 1 then INPUT, not HIGH
ELSE
LOW DI ; if bit = 0 then LOW
ENDIF
PAUSE 1 ; data settle time
INPUT CLK ; clks data on rising edge
PAUSE 1 ; data read time
NEXT Idx ; do rest of the bits
INPUT DI ; leave data line tri-stated
RETURN


' --------------------------------------------------------------------------

Playdata:

LOW RESET ; 5ms reset pulse
PAUSE 5
INPUT RESET
PAUSE 1250 ; 300ms before data


For Idx = 15 to 0 STEP -1 ; loop thru the bits
LOW CLK ; set CLK LOW
IF dat.0(Idx) THEN
INPUT DI ; if bit = 1 then INPUT, not HIGH
ELSE
LOW DI ; if bit = 0 then LOW
ENDIF
PAUSE 1 ; data settle time
INPUT CLK ; clks data on rising edge
PAUSE 1 ; data read time
NEXT Idx ; do rest of the bits
INPUT DI ; leave data line tri-stated
RETURN


Bu programla modül 2-3 sn çalışıyor  sonra susuyor. Bu sorunla karşılaşan oldu mu?

erdalozenc

yabancı bir sitede datasheet in hatalı olduğunu okumuştum. tam hatırlamıyorum ama playdata etikrtindeki pause 1250 değeri süresince ses çıkıyordu. pause değerini artırırsan çalma süresini arttırabilirsin heralde. bi dene

fofo

Bu modülü Protonla çalıştıran var mı?  SHOUT komutuyla çalıştıramadım.

grkm33

Bn o modülü for döngüleri ile çalıştırmıştım seri iletişimle değil ve stabil çalışıyordu protonda

fofo


grkm33

ekledim transistörler le tetiklersin rahatlıkla çalışır

fofo


grkm33

Evet sıkıntısız çalışıyordu öyle seri haberleşmeyle uğraşcağına bu daha kolay ve stabil modülün datasheet inde tam açıklama yok seri iletişimle ilgili birde

fofo

Senin yöntem çok sayıda ses dosyasını çalmak için pratik değil.

grkm33

Eksik datasheetle bu yapılabiliyor ancak yeni datasheet çıkarsa seri iletişim olabilir sanırım

fofo

Merhaba ETE hocam , aşağıdaki programda
    For Idx = 15 to 0 STEP -1 ; loop thru the bits
       LOW CLK ; set CLK LOW
         IF dat.0(Idx) THEN
          INPUT DI ; if bit = 1 then INPUT, not HIGH

bu kısmı tam olarak anlayamadım. Bu kısmı Protona göre çevirmek istiyorum sanırım bit bazında işlem yapılmış Protonda bit bazlı işlem yok nasıl bir yöntem kullanabilirim.

SendDAT:
     LOW RESET ; 5ms reset pulse
      PAUSE 5
         INPUT RESET
         PAUSE 300 ; 300ms before data
        For Idx = 15 to 0 STEP -1 ; loop thru the bits
       LOW CLK ; set CLK LOW
         IF dat.0(Idx) THEN
          INPUT DI ; if bit = 1 then INPUT, not HIGH
             ELSE
        LOW DI ; if bit = 0 then LOW
      ENDIF
    PAUSE 1 ; data settle time
          INPUT CLK ; clks data on rising edge
          PAUSE 1 ; data read time
             NEXT Idx ; do rest of the bits
       INPUT DI ; leave data line tri-stated
        RETURN

ete

Burada karşıya bilgi yollanıyor. Yollanan bilgi ise dat isimli değişken değeri. Bu değişkenin bitleri tek tek test edilerek karşıya yollanmaya çalışılıyor. Dat değişkeninin bir biti 1 ise bilgi çıkan pin giriş yspılıyor ve muhtemelen pullup direnci bağlı ve otomatikman pin high olmuş oluyor. Bit sıfır ise çıkışa low basılıyor. Neden böyle bir yöntem kullanmışlar bilemem ama yöntem bu.

Ete

Powered by EzPortal