F

18F452 ile konuşan termometre

Başlatan feyz21, 12 Aralık 2011, 15:35:06

feyz21

Arkadaşlar! SmartMP3 kartı ve DS1820 ile konuşan termometre yapmaya çalışıyorum.Termometre programındaki sıcaklık değerinin tutulduğu değişkeni tesbit edemiyorum.if...then veya select case ile karşılaştırmak istiyorum.Termometre programını aşağıya veriyorum:
program termoMikroB
dim i, j1, j2 as byte
    text      as string[6]
    tmp_sign  as byte

main:

   text   = "Temp:"
   adcon1 = 255                     ' configure RA5 pin as digital I/O
   PORTA  = 255                     ' initialize porte to 255
   PORTB  =   0                     ' initialize portb to 255
   TRISA  = 255                     ' designate porte as input
   TRISB  =   0                     ' designate portb as output
   Lcd_Init(PORTB)
   lcd_cmd(LCD_CURSOR_OFF)
   lcd_out(1, 1, text)
   lcd_chr(2, 12, 223)              ' 'degree' character
   lcd_chr(2, 13, "C")

   while TRUE
     ow_reset(PORTA, 5)             ' onewire reset signal
     ow_write(PORTA, 5, $CC)        ' issue command to DS1820
     ow_write(PORTA, 5, $44)        ' issue command to DS1820
     delay_us(120)
     i = ow_reset(PORTA, 5)
     ow_write(PORTA, 5, $CC)        ' issue command to DS1820
     ow_write(PORTA, 5, $BE)        ' issue command to DS1820

     j1 = ow_read(PORTA, 5)         ' get result
     j2 = ow_read(PORTA, 5)         ' get result (assuming the temperature is positive)

     if j2 = $FF then
       tmp_sign = "-"               ' temperature sign
       j1= j1 or $FF                ' complement of two
       j1= j1 + $01
     else
       tmp_sign = "+"
     end if
     j2 = (j1 and $01) * 5          ' Get decimal value
     j1 = j1 >> 1                   ' Get temp value

     ByteToStr(j1, text)            ' whole number
     lcd_chr(2, 7, tmp_sign)
     lcd_chr(2, 8, text[1])
     lcd_chr(2, 9, text[2])
     lcd_chr(2, 10, 46)             ''.'

     ByteToStr(j2, text)            ' decimal
     lcd_chr(2, 11, text[2])

     Delay_ms(500)
   wend                             'endless loop
end.

est32

#1
Alıntı yapılan: feyz21 - 12 Aralık 2011, 15:35:06
Termometre programındaki sıcaklık değerinin tutulduğu değişkeni tesbit edemiyorum
sadece bu lazımsa ;
j1 = ow_read(PORTA, 5)         ' get result
j2 = ow_read(PORTA, 5)         ' get result (assuming the temperature is positive)
işte sadece bu kısım olsa gerek
j1 ve j2 değişkenleri
Yalnız aklıma takılan bişey var,bunlar byte tipi değişkenler ve iki adet değişken kullanılmış yani birisi highbyte,diğeri de lowbyte olarak mı kullanıldı acaba?
DÜZELTME;
j1 ve j2 değerleri ham değerler yani sensörden alınan hesaplanmamış değerlerdir.
Hesaplanıp ekrana verilen ısı değeri ise;
lcd_chr(2, 8, text[1])
lcd_chr(2, 9, text[2])

kısmı olsa gerek. yani text değişkeni diye düşünüyorum mikrobasic bilmediğim için.

feyz21

Alıntı yapılan: est32 - 12 Aralık 2011, 18:48:08
sadece bu lazımsa ;
j1 = ow_read(PORTA, 5)         ' get result
j2 = ow_read(PORTA, 5)         ' get result (assuming the temperature is positive)
işte sadece bu kısım olsa gerek
j1 ve j2 değişkenleri
Yalnız aklıma takılan bişey var,bunlar byte tipi değişkenler ve iki adet değişken kullanılmış yani birisi highbyte,diğeri de lowbyte olarak mı kullanıldı acaba?
DÜZELTME;
j1 ve j2 değerleri ham değerler yani sensörden alınan hesaplanmamış değerlerdir.
Hesaplanıp ekrana verilen ısı değeri ise;
lcd_chr(2, 8, text[1])
lcd_chr(2, 9, text[2])

kısmı olsa gerek. yani text değişkeni diye düşünüyorum mikrobasic bilmediğim için.
text[1] ve text[2] değişkenlerini de denedim.Olmadı.Program,dereceyi 23.5,24.5 gibi LCD'de gösteriyor.Karşılaştırmada buçuklu değerler,acaba problem çıkarıyor mu?

est32

Bunu şuradan anlarız,Sıcaklık bilgisi ekranın tam olarak neresine yazılıyor?
lcd_chr(2, 7, tmp_sign)>>>>>>burada anladığım kadarı ile ekranın 2.satır 7. sütununa işaret bilgisi +veya - yerleştirilmiş
lcd_chr(2, 8, text[1])>>>>>>>burada da 2.satır 8. sütununa sıcaklığın ondalık kısmı girilmiş
lcd_chr(2, 9, text[2])>>>>>>>burada da 2.satır 9. sütununa
lcd_chr(2, 10, 46)             ''.'  >>>burada ise 46 yani ascii tabloda nokta konmuş,ekranın bu kısmında da nokta var,zaten işaretini de yazmış açıklama kısmına

TAVSİYEM İSE BU ALT SATIRA İNMEDEN HEMEN BU SATIRDA ISI BİLGİSİNİ BAŞKA BİR DEĞİŞKENE ATIP SAKLAMAK,Örneğin tam buraya sicaklik1=text[1]
sicaklik2=text[2] gibi bişey,çünkü yanlış yorumlamadıysam aşağıdaki hesapta text değişkeni üzerinde tekrar oynama8hesaplama) yapılıuyor ve değeri de değişiyor.

ByteToStr(j2, text)            ' decimal >>>>>sanırım burada noktadan sonraki kısım hesaplanıyor
lcd_chr(2, 11, text[2])>>>>>>bu da noktadan sonraki kısım.

feyz21

#4
Alıntı yapılan: est32 - 12 Aralık 2011, 22:47:35
Bunu şuradan anlarız,Sıcaklık bilgisi ekranın tam olarak neresine yazılıyor?
lcd_chr(2, 7, tmp_sign)>>>>>>burada anladığım kadarı ile ekranın 2.satır 7. sütununa işaret bilgisi +veya - yerleştirilmiş
lcd_chr(2, 8, text[1])>>>>>>>burada da 2.satır 8. sütununa sıcaklığın ondalık kısmı girilmiş
lcd_chr(2, 9, text[2])>>>>>>>burada da 2.satır 9. sütununa
lcd_chr(2, 10, 46)             ''.'  >>>burada ise 46 yani ascii tabloda nokta konmuş,ekranın bu kısmında da nokta var,zaten işaretini de yazmış açıklama kısmına

TAVSİYEM İSE BU ALT SATIRA İNMEDEN HEMEN BU SATIRDA ISI BİLGİSİNİ BAŞKA BİR DEĞİŞKENE ATIP SAKLAMAK,Örneğin tam buraya sicaklik1=text[1]
sicaklik2=text[2] gibi bişey,çünkü yanlış yorumlamadıysam aşağıdaki hesapta text değişkeni üzerinde tekrar oynama8hesaplama) yapılıuyor ve değeri de değişiyor.

ByteToStr(j2, text)            ' decimal >>>>>sanırım burada noktadan sonraki kısım hesaplanıyor
lcd_chr(2, 11, text[2])>>>>>>bu da noktadan sonraki kısım.
Yaptığın tesbitler doğru.Karşılaştırma kısmını aşağıya veriyorum.Program,şu anda doğrudan ELK1.MP3 parçasını çalıyor.Sıcaklık değerlerini henüz söylemiyor..
  sc=0
     sc= text[1]

     if sc>22 then

      select case  sc
  case 23
    filename = "23.MP3"
    case 24
    filename = "24.MP3"
      case 25
          filename = "25.MP3"
          case else
        filename = "ELK1.MP3"
end select
  end if

est32

#5
dikkatimi çeken kısım ise basic de normalde segment bilgisi için lcd de dec1/dec2 7 segmentte ise dig1/dig2 gibi bilgiler konur.
ama burada öyle bieşy göremedim demek ki adam segment bilgisini text[1] ve text[2] şeklinde girmiş.
peki 23 derece bilgisi için şöyle bişey dener misin,bakalım sonuç ne olacak?
if text[1]=2 and text[2]=3 then filename = "23.MP3"

DÜZELTME;
vaya hemen hızlıca denemek için daha basiti;
sc= text[1]*10 + text[2]

feyz21

Son verdiğin "sc= text[1]*10 + text[2]" kodu denedim.Yine, doğrudan "ELK1.MP3" çalıyor.

est32

ekranın kullanılmayan bir yerine sc= text[1]*10 + text[2] işleminin sonucunu yazdırabilir misin?
belki de bizim hesaplamamız yanlıştır veya sıcaklık istenen değerde değildir.En azından lcd'ye bunu yazdırıp sıcaklığı biz doğrı hesaplamış mıyız onu doğrulamış oluruz.
Görünüşe göre sıcaklık belirlenen değerlerde olmadığından "ELK1.MP3" çalıyor.

feyz21

Kardeş ALLAH nasib etti,Bilgisayar öğretmeni bir arkadaşın da yardımlarıyla en sonunda çalıştı.Yardımın için teşekkürler.Konuşan termometre kodlarını veriyorum:
program ayh

' Declarations section
dim BtnLeftDown            as sbit at RB7_bit
dim BtnLeftUp              as sbit at RB6_bit
dim BtnRightDown           as sbit at RB5_bit
dim BtnRightUp             as sbit at RB4_bit
dim BtnLeftDown_Direction  as sbit at TRISB7_bit
dim BtnLeftUp_Direction    as sbit at TRISB6_bit
dim BtnRightDown_Direction as sbit at TRISB5_bit
dim BtnRightUp_Direction   as sbit at TRISB4_bit


' Smart MP3 board connections
dim Mmc_Chip_Select           as sbit at RC0_bit
dim MP3_CS                    as sbit at RC1_bit
dim MP3_RST                   as sbit at RC2_bit
dim DREQ                      as sbit at RD0_bit
dim BSYNC                     as sbit at RD1_bit
dim DCLK                      as sbit at RD2_bit
dim SDATA                     as sbit at RD3_bit
dim Mmc_Chip_Select_Direction as sbit at TRISC0_bit
dim MP3_CS_Direction          as sbit at TRISC1_bit
dim MP3_RST_Direction         as sbit at TRISC2_bit
dim DREQ_Direction            as sbit at TRISD0_bit
dim BSYNC_Direction           as sbit at TRISD1_bit
dim DCLK_Direction            as sbit at TRISD2_bit
dim SDATA_Direction           as sbit at TRISD3_bit

' VS1011E constants
const WRITE_CODE  as byte = 0x02
const READ_CODE   as byte = 0x03
const MODE_ADDR   as byte = 0x00
const CLOCKF_ADDR as byte = 0x03
const VOL_ADDR    as byte = 0x0B

' global variables
const BUFFER_SIZE = 512
dim filename as string[13]
   j1,j2, i, file_size as longword
   dim j as byte
    data_buffer_32 as byte[32]
    BufferLarge as byte[BUFFER_SIZE]
    volume_left, volume_right as byte
    const TEMP_RESOLUTION as byte = 9
dim sc as integer
dim text as char[6]
    temp as word

sub procedure Display_Temperature( dim temp2write as word )
const RES_SHIFT = TEMP_RESOLUTION - 8

dim temp_whole as byte
    temp_fraction as word

    text = "000"
    ' Check if temperature is negative
    if (temp2write and 0x8000) then
        text[0] = "-"
        temp2write = not temp2write + 1
    end if

    ' Extract temp_whole
    temp_whole = word(temp2write >> RES_SHIFT)

    ' Convert temp_whole to characters
    if ( temp_whole div 100 ) then
      text[0] = temp_whole div 100  + 48
    else
      text[0] = "0"
    end if

    text[1] = (temp_whole div 10)mod 10 + 48               ' Extract tens digit
    text[2] =  temp_whole mod 10        + 48               ' Extract ones digit

    ' Extract temp_fraction and convert it to unsigned int
    temp_fraction  =  word(temp2write << (4-RES_SHIFT))
    temp_fraction  = temp_fraction and 0x000F
    temp_fraction  = temp_fraction * 625

    ' Convert temp_fraction to characters
    text[4] = word(temp_fraction div 1000)    + 48         ' Extract thousands digit
    text[5] = word((temp_fraction div 100)mod 10 + 48)     ' Extract hundreds digit
    text[6] = word((temp_fraction div 10)mod 10  + 48)     ' Extract tens digit
  '  text[7] = word(temp_fraction mod 10)      + 48         ' Extract ones digit

    ' Print temperature on Lcd
    'Lcd_Out(2, 5, text)
end sub

' Write text and goto new line CR and LF
sub procedure UART1_Write_Line(dim byref text as string[50])
  UART1_Write_Text(text)
  UART1_Write(13)
  UART1_Write(10)
end sub

' Writes one byte to MP3 SDI
sub procedure SW_SPI_Write(dim data_ as byte)

  BSYNC = 1                              ' Set BSYNC before sending the first bit

  DCLK = 0
  SDATA = data_.0                        ' bitorder is LSB first
  DCLK = 1

  DCLK = 0
  SDATA = data_.1
  DCLK = 1

  BSYNC = 0                              ' Clear BSYNC after sending the second bit

  DCLK = 0
  SDATA = data_.2
  DCLK = 1

  DCLK = 0
  SDATA = data_.3
  DCLK = 1

  DCLK = 0
  SDATA = data_.4
  DCLK = 1

  DCLK = 0
  SDATA = data_.5
  DCLK = 1

  DCLK = 0
  SDATA = data_.6
  DCLK = 1

  DCLK = 0
  SDATA = data_.7
  DCLK = 1

  DCLK = 0
end sub

' Writes one word to MP3 SCI
sub procedure MP3_SCI_Write(dim address as byte, dim data_in as word)
  MP3_CS = 0                              ' select MP3 SCI
  SPI1_Write(WRITE_CODE)
  SPI1_Write(address)
  SPI1_Write(Hi(data_in))                  ' high byte
  SPI1_Write(Lo(data_in))                  ' low byte
  MP3_CS = 1                              ' deselect MP3 SCI
  while (DREQ = 0) nop wend               ' wait until DREQ becomes 1, see MP3 codec datasheet, Serial Protocol for SCI
end sub

' Reads words_count words from MP3 SCI
sub procedure MP3_SCI_Read(dim start_address, words_count as byte, dim data_buffer as ^byte)
dim i as byte
  MP3_CS = 0                              ' select MP3 SCI
  SPI1_Write(READ_CODE)                    ' Read command
  SPI1_Write(start_address)

  for i = 1 to (2*words_count)            ' read words_count words byte per byte
    data_buffer^ = SPI1_Read(0)            ' read and store a byte
    Inc(data_buffer)                      ' point to next byte
  next i
  MP3_CS = 1                              ' deselect MP3 SCI
  while (DREQ = 0) nop wend               ' wait until DREQ becomes 1, see MP3 codec datasheet, Serial Protocol for SCI
end sub

' Write one byte to MP3 SDI
sub procedure MP3_SDI_Write(dim data_ as byte)
  while (DREQ = 0) nop wend               ' wait until DREQ becomes 1, see MP3 codec datasheet, Serial Protocol for SCI

  SW_SPI_Write(data_)
end sub

' Write 32 bytes to MP3 SDI
sub procedure MP3_SDI_Write_32(dim data_ as ^byte)
  dim i as byte

  while (DREQ = 0) nop wend               ' wait until DREQ becomes 1, see MP3 codec datasheet, Serial Protocol for SCI

  for i = 1 to 32
    SW_SPI_Write(data_^)                  ' Write byte pointed by data
    Inc(data_)
  next i
end sub

' Set clock
sub procedure Set_Clock(dim clock_khz_ as word, dim doubler as byte)
  clock_khz_ = clock_khz_ / 2             ' calculate value
  if (doubler > 0) then
    clock_khz_ = clock_khz_ or 0x40000
  end if

  MP3_SCI_Write(CLOCKF_ADDR, clock_khz_)  ' Write value to CLOCKF register
end sub

' Set volume
sub procedure Set_Volume(dim left_, right_ as byte)
dim volume as word
  volume = (left_ << 8) + right_          ' calculate value
  MP3_SCI_Write(VOL_ADDR, volume)         ' Write value to VOL register
end sub

' If volume Buttons are pressed update volume
sub procedure Check_Volume()
  dim old_volume_left, old_volume_right as byte

  old_volume_left  = volume_left          ' save volume values
  old_volume_right = volume_right

  if (BtnLeftDown) then                   ' RB7 pressed = LEFT VOLUME DOWN command
    if (volume_left < 255) then
      Inc(volume_left)
    end if
  end if

  if (BtnLeftUp) then                     ' RB6 pressed = LEFT VOLUME UP command
    if (volume_left > 0) then
      Dec(volume_left)
    end if
  end if

  if (BtnRightDown) then                  ' RB5 pressed = RIGHT VOLUME DOWN command
    if (volume_right < 255) then
      Inc(volume_right)
    end if
  end if

  if (BtnRightUp) then                    ' RB4 pressed = RIGHT VOLUME UP command
    if (volume_right > 0) then
      Dec(volume_right)
    end if
  end if

  ' if volume values are changed, set volume to new values
  if  (volume_left <> old_volume_left) or (volume_right <> old_volume_right) then
    Set_Volume(volume_left,volume_right)
  end if
end sub

' Software Reset
sub procedure Soft_Reset(dim fill_zeros as byte)
  dim i as byte

  MP3_SCI_Write(MODE_ADDR,0x0204)         ' Write to MODE register
                                          '   set SM_RESET bit and SM_BITORD bit(bitorder is LSB first)
  Delay_us(2)                             ' Required, see MP3 codec datasheet -> Software Reset
  while (DREQ = 0) nop wend               ' wait until DREQ becomes 1, see MP3 codec datasheet, Serial Protocol for SCI

  if (fill_zeros > 0) then                ' feed 2048 zeros to the MP3 SDI bus:
    for i = 0 to 31                       ' clear 32byte buffer
      data_buffer_32 = 0
    next i

    for i = 0 to 2048/32 - 1              ' use 32byte buffer to clear MP3 buffer
      MP3_SDI_Write_32(@data_buffer_32)
    next i
  else
    MP3_SDI_Write(0)                      ' write zero once
  end if

end sub


' Initialize VS1011E
sub procedure MP3_init()
  Soft_Reset(0)                           ' SW Reset, do not feed zeros

  Set_Clock(25000,0)                      ' Set clock to 25MHz, do not use clock doubler

  volume_left  = 25                       ' Set volume to initial value
  volume_right = 25
  Set_Volume(volume_left,volume_right)
end sub

sub procedure Init()
  ADCON1 = ADCON1 or 0x0F                 ' Configure AN pins as digital
  'CMCON  = CMCON  or 7                    ' Disable comparators

       j=0
  trisa.0=1
  trisa.1=1
  trisa.2=1
  trisa.3=1
  trisa.4=1
  trisa.5=1
  BtnLeftDown_Direction  = 1              ' set pin direction as input
  BtnLeftUp_Direction    = 1
  BtnRightDown_Direction = 1
  BtnRightUp_Direction   = 1
  BtnLeftDown  = 0                        ' set pin value to zero
  BtnLeftUp    = 0
  BtnRightDown = 0
  BtnRightUp   = 0

  DCLK_Direction  = 0                     ' Set SW SPI pin directions to output
  SDATA_Direction = 0
  DCLK  = 0                               ' Clear SW SPI SCK
  SDATA = 0                               ' Clear SW SPI SDO

  MP3_CS_Direction  = 0                   ' Configure MP3_CS as output
  MP3_CS            = 1                   ' Deselect MP3_CS
  MP3_RST_Direction = 0                   ' Configure MP3_RST as output
  MP3_RST           = 1                   ' Set MP3_RST pin

  DREQ_Direction  = 1                     ' Configure DREQ as input
  BSYNC_Direction = 0                     ' Configure BSYNC as output
  BSYNC           = 0                     ' Clear BSYNC
end sub

main:
  while TRUE
sc=strtoInt(text)
select case sc
case 18
filename="18.MP3"
case 19
filename="19.MP3"
case 20
filename="20.MP3"
case 21
filename="21.MP3"
case 22
filename="22.MP3"
  case 23
filename="23.MP3"
end select
Init()

   ' Initialize USART for signaling
     UART1_Init(9600)
     Delay_100ms()

     UART1_Write_Line("Initializing SPI")
     SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH)

     UART1_Write_Line("Initializing VS1011E decoder interface")
     MP3_init()

     UART1_Write_Line("Initializing MMC_FAT")

      text = "000.0000"

       ow_reset(PORTA,5)              ' onewire hattına reset signali gönder
       ow_write(PORTA,5,$CC)          ' DS1820  komutu  (pdf dosyaya bakın )
       ow_write(PORTA,5,$44)          ' DS1820  komutu  (pdf dosyaya bakın )
       delay_us(120)
       i = ow_reset(PORTA,5)
       ow_write(PORTA,5,$CC)          ' DS1820  komutu  (pdf dosyaya bakın )
       ow_write(PORTA,5,$BE)          ' DS1820  komutu  (pdf dosyaya bakın )

       j1 = ow_read(PORTA,5)          ' sonucu al
       j2 = ow_read(PORTA,5)          ' sonucu al (varsayılan sıcaklık +)

       if j2 = $FF then
          'isaret = "-"                ' sıcaklık işareti
          j1 = j1 or $FF              ' 2 nin komplementi
          j1 = j1 + $01
       else
       'isaret = "+"
       end if

       j2 = (j1 and $01) * 5          ' onluk değerin elde edilmesi
       j1 = j1 >> 1                   ' sıcaklık değerinin elde edilmesi
       ByteToStr(j1, text)            ' tüm sayı


     if (Mmc_Fat_Init() = 0) then
      if (Mmc_Fat_Assign(filename, 0) <> 0) then
       UART1_Write_Line("File Assigned")
       Mmc_Fat_Reset(file_size)            ' Call Reset before file reading,
                                          '   procedure returns size of the file
      ' send file blocks to MP3 SDI
       while (file_size > BUFFER_SIZE)

        for i = 0 to BUFFER_SIZE - 1
          Mmc_Fat_Read(BufferLarge)
        next i

        for i = 0 to BUFFER_SIZE/32 - 1
          MP3_SDI_Write_32(@BufferLarge + i*32)
        next i

        file_size = file_size - BUFFER_SIZE

        Check_Volume()
       wend

      ' send the rest of the file to MP3 SDI
       for i = 0 to file_size - 1
        Mmc_Fat_Read(BufferLarge)
       next i

       for i = 0 to file_size - 1
        MP3_SDI_Write(BufferLarge)
       next i
      else
       UART1_Write_Line("File not assigned")
      end if
     else
      UART1_Write_Line("MMC FAT not initialized")
     end if
   wend

end.

est32

tebrik ederim güle güle kullan,güzel bi proje,en azından mp3 çalmaya çok güzel bir örnek.
peki yazılım sadece bu kadar mı? MP3 çalmak için dekoder gibi,kütüphane dosyaları gibi başka düzenekler de mutlaka gerekiyordur,eğer devre ticari değilse bunları da ekleyebilir misin?

Gerçi şimdi fark ettim uart bağlantı görüyorum kodlarda,sanırım mp3'ler pc'de ve onları çalıyor.Dediğim gibi ticari bir değeri yoksa pc  yazılımını da paylaşır mısın?
Kolay gelsin...

feyz21

#10
Alıntı yapılan: est32 - 14 Aralık 2011, 11:39:46
tebrik ederim güle güle kullan,güzel bi proje,en azından mp3 çalmaya çok güzel bir örnek.
peki yazılım sadece bu kadar mı? MP3 çalmak için dekoder gibi,kütüphane dosyaları gibi başka düzenekler de mutlaka gerekiyordur,eğer devre ticari değilse bunları da ekleyebilir misin?

Gerçi şimdi fark ettim uart bağlantı görüyorum kodlarda,sanırım mp3'ler pc'de ve onları çalıyor.Dediğim gibi ticari bir değeri yoksa pc  yazılımını da paylaşır mısın?
Kolay gelsin...
Kardeşim est32! Tüm program sadece gördüğün gibi.İlave,eklenti yok.Mp3 parçaları,mikro sd kartın içinde.MP3 kartın üzerinde sd kart yuvası var.18F452 UART kanalıyla SmartMP3 kartıyla haberleşiyor.SmartMP3 kartını http://www.elektrovadi.com/SmartMP3-BOARD,PR-76.html inceleyebilirsin.Zaten örnek mp3 programlarını üç dilde (Mikrobasic,mikroC,MikroPascal) vermişler.Mikrobasıc yardım içinde, Termometre programını da vermişler.Biz sadece iki programı dikkatlice (değişkenlere ve algoritmaya bakarak) birleştirdik.Konuşan sistemler dizayn için güzel bir örnek.Ben deneyi, EasyPic3 deney setine Mp3 kartını takarak yaptım.Fakat şimdi daha pratik olanları da piyasaya çıktı.Buradan inceleyebilirsin.http://www.elektrovadi.com/PIC32-MikroMMB,PR-968.html

est32

güzel düşünce,bir nevi navigasyon programının farklı iş için düşünülmüş en temel hali diyebiliriz.
Benim isteğim ise vs1001 entegresini bulup bu işi harici modülsüz yapmaktı ama bu işte çok fazla bilgi eksiğim var.
tekrar kutlarım,güzel düşünülmüş bişey,ellerine sağlık güle güle kullan...

Hattuşa

slm ete hocam;
konuşan saat, terazi devresi yapmak istesek acaba belirli peryodlarda saati nasıl sesli olarak çıkış verebiliriz, buna örnek teşkil edecek bir uygulama, şema, entegre vs varsa paylaşırsanız sevinirim.

ete

Bir ses entegresine önceden konuşacak sesleri adresli olarak kayıt edip sonra konuşma saatlerinde bunları sırası ile çalıştırmak gerekir.
Herhangi bir kon şema vs veremiyorum. Çünki böyle bir şey yapmadım.

Ete

F®T

Ete hocanın dediği gibi ses modüllerine 0 dan 59 a kadar konuşarak 60 adet kayıt yapılıp o anki saat ile konuşma eşleştirilebilir.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal