Ardunio ile Ses Dosyası Çalma

Serdar

Üye
Katılım
28 Aralık 2020
Mesajlar
26
Merhaba arkadaşlar. Form da yeniyim tavsiye üzerine geldim.

2-3 saniyelik bir ses dosyasını ardunioya elektirik gelir gelmez sürekli tekrarlamasını istiyorum. Uno versiyonu kart okuyucu ve amfi hazır sadece kablo bağlantıları ve kodlaması kısmında takıldım. Açıkçası hiç bir bilgim yok. YouTube da biraz izledim ama beceremedim. Normalde ABB, kuka gibi robot kodlamasını yapıyorum bunu da yaparım dedim ama olmadı
Yardımlarınız için şimdiden teşekkürler.
 
Merhaba arkadaşlar. Form da yeniyim tavsiye üzerine geldim.

2-3 saniyelik bir ses dosyasını ardunioya elektirik gelir gelmez sürekli tekrarlamasını istiyorum. Uno versiyonu kart okuyucu ve amfi hazır sadece kablo bağlantıları ve kodlaması kısmında takıldım. Açıkçası hiç bir bilgim yok. YouTube da biraz izledim ama beceremedim. Normalde ABB, kuka gibi robot kodlamasını yapıyorum bunu da yaparım dedim ama olmadı
Yardımlarınız için şimdiden teşekkürler.
Elindeki malzemelerin resmini koyar mısın? Bakalım neler var elinde.
 
mp3 şart değilse, yüksek ses kalitesi aramazsanız sadece 8khz wav dosyası yeterse ve sd kart olmadan çözeyim derseniz eğer;

google araması: how to play a wav files in arduino without an sd card





mp3 şart değilse, yüksek ses kalitesi aramazsanız sadece 8khz wav dosyası yeterse ve sd kart olmadan çözeyim derseniz eğer;

google araması: how to play a wav files in arduino without an sd card





MP3 şart değil wav da olabilir. Yerli bir kaynak olsa daha iyi olur. 1-2 kaynak buldum ama olmadı.
 
Evet yerli kaynak olsa iyi olur ama bu işlerde ingilizce sitelere karşı önyargılı olmamak lazım. Biraz google translate yardımıyla hallolabilir.
 
Elindeki malzemelerin resmini koyar mısın? Bakalım neler var elinde.

2F1E48FE-DEC7-46B5-9FF6-59112F10AD3F.jpeg
F9B5E336-0112-4D18-B6FC-86959734D380.jpeg
 
Last edited by a moderator:
1) Resimdeki gibi bağlantıları yap.
2) Sonra ekteki kütüphaneyi Belgeler -->Arduino klasörü içine at.
3) Aşağıdaki kodları kullan.
4) SD kart içine waw dosyası yükle.
5) Önce sistemi bu şekilde çalışır hale getir. Sonra kodlara müdahale ederek sürekli çalışmasını sağlayacağız. Bu haliyle ses dosyası 1 kere çalıp duruyor.

DP2VVZ.png


C:
#include <SimpleSDAudio.h>

#define hoparlor 9

void setup()
{

SdPlay.setSDCSPin(4);

if (!SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO | SSDA_MODE_AUTOWORKER))
{
while(1);
}

if(!SdPlay.setFile("deneme.wav"))
{
while(1);
}
}

void loop(void) {

SdPlay.play(hoparlor);

while(!SdPlay.isStopped()) {
;
}
}
 

Ekler

  • SimpleSDAudio.zip
    2.7 MB · Görüntüleme: 146
Son düzenleme:
Kodu yazan vatandaş ses çıkış pinini belirtmemiş. Şimdi vaktim kalmadı. İşe gidicem. 1-2 saat içinde kodu düzelticem.
 
Düzelttim kodu. Bu şekilde çalışması lazım.
 
Kaynak kodda çıkışın PWM1 olduğu belirtilmiş.
 
SimpleSDAudio.h dosyasının başında bir açıklama bölümü var orada

C++:
/*
  Audio connection options
 =================================================================================
 For mode SSDA_MODE_MONO:
   - Very very simple (but dangerous due DC-offset voltage and too loud)
     - Connect GND to GND of active speakers
     - Connect PWM1 to L or R input of active speakers

   - Very very simple for loudspeaker (also not good due DC-offset voltage)
     - GND --[100R to 500R]--- Speaker --- PWM1

   - Better (for active speakers)
     - PWM1 ---||----[10k]---+----[1k]--- GND
              100nF          |
                             Line in of active speaker
                            
 For mode SSDA_MODE_STEREO: 
   - Use same circuits like for SSDA_MODE_MONO, but build it two times,
     PWM1 for left, PWM2 for right channel
 
 For mode SSDA_MODE_MONO_BRIDGE: (only usefull for direct speaker drive, louder)
   - Very very simple for loudspeaker (also not good due DC-offset voltage)
     - PWM1 --[100R to 500R]--- Speaker --- PWM2

   - Better for loudspeaker
     - PWM1 --[100R]--||----- Speaker --- PWM2
                     10uF   
*/
 
Anladım. Kütüphane dosyası içinde. Peki diyelim ki ben 1 nolu pini başka bir iş için kullanmıştım daha önceden. O zaman benim düzenlediğim gibi 9 nolu pinden alabilir miyiz çıkışı?
 
Alınır tabi, kodda bir yerde belirleniyordur. Ben ayrıntılı incelemedim.

Ses kalitesi açısından kullanılan PWM frekansı kritik. Eğer yeterince yüksek değilse ses kalitesi berbat olur. Deneyip mevcut durumu görmek lazım. Ben de bir ara fırsatım olursa denerim.
 
Alınır tabi, kodda bir yerde belirleniyordur. Ben ayrıntılı incelemedim.

Ses kalitesi açısından kullanılan PWM frekansı kritik. Eğer yeterince yüksek değilse ses kalitesi berbat olur. Deneyip mevcut durumu görmek lazım. Ben de bir ara fırsatım olursa denerim.
Anladım abi. Ben de bi eve geçince bakayım. Sanki bir ara sd kart modülü almıştım lazım olur diye. Olmazsa bende kurar denerim devreyi.
 
Konunun tamamını okumadın. Arduinonun tüm pwm pinleri aynı hizda çalışmıyor. Bazı pinler yaklaşık 500hz bazı pinler yaklaşık 1khz. Aklınızda olsun.
 
Konunun tamamını okumadın. Arduinonun tüm pwm pinleri aynı hizda çalışmıyor. Bazı pinler yaklaşık 500hz bazı pinler yaklaşık 1khz. Aklınızda olsun.

Muhtemelen o kütüphane arttırıyordur PWM hızını. MCU çok daha yüksek hızlara çıkabiliyor.
 
Bu gün biraz uğraştım bu işle. Bir sonuca ulaşamadım. Ses dosyasını çalmak mümkün olmadı.
Kütüphanenin web sitesine gidip araştırma yaparak örnek uygulamayı yükledim. Serial Monitörden aşağıdaki çıktıyı aldım.

Kod:
Initializing SD card...initialization failed. Things to check:
* is a card is inserted?
* Is your wiring correct?
* maybe you need to change the chipSelect pin to match your shield or module?
Error code: 48

Bu duruma göre
* Kartı taktınız mı? Evet taktım.
* Kablo bağlantıları doğrumu? Evet bir kaç kez kontrol ettim ve temassızlık testide yaptım.
* Belki chipSelect pinini kalkanınıza veya modülünüze uyacak şekilde değiştirmeniz gerekiyor? Bu durumda da sanırım aşağıdaki tabloya göz atmamız gerekiyor.

Kod:
Pin-Mappings:
=================================================================================
PLATTFORM                             SD_CS MOSI MISO SCK SS  PWM1 PWM2 Ocx1 Ocx2
mega368P         (standard Arduinos)  4     11   12   13  10  9    10** 1A   1B
mega1280, mega2560 (mega Arduinos)    4     51   50   52  53  44   45   5C   5B
mega644 (Sanguino)                    4     5    6    7   4   13   12   1A   1B
mega32U4 (Teensy 2.0)                 0     2    3    1   0   14   15   1A   1B
mega32U4 (Leonardo)                   0     na   na   na  na  9*   10*  1A   1B
90USB646, 90USB1286 (Teensy++)        20    22   23   21  20  25   26   1A   1B

Buradaki listeye göre elimizde en az mega368P çipli bir arduino olmalı. Oysa benim elimdeki arduinoların hepsi "mega328P"
Dolayısıyla sistemin çalışmamasını bu çip farkına bağlıyorum.
Sanırım Atmega328P destekleyen başka bir kütüphane bulmak gerek.
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,653
Mesajlar
97,271
Üyeler
2,438
Son üye
İbrahimSönmez

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top