chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Arduino和DAC播放音頻聲音文件

454398 ? 來源:wv ? 2019-10-24 08:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

第1步:要求

Arduino-我使用Mega,但是沒有理由不能使Uno工作。

SdCard讀卡器-該程序配置為:MicroSD Breakout Board受Logic Conversion V2規(guī)范

http://www.hobbytronics.co.uk/microsd-card-regula 。..。

。

請(qǐng)參閱此說明以進(jìn)行SdCard設(shè)置詳細(xì)信息:https://www.instructables.com/id/Arduino-Mega-Audio.。.

。

DAC0832 LCN-出色的8位數(shù)模轉(zhuǎn)換器-A幾磅。

LM386 N-1運(yùn)算放大器-像芯片一樣便宜

20路芯片插座

8路芯片插座

9伏電源-電池即可。/p》

LM336 2.5 V參考電壓

10uF電容器* 3(任何9V以上的電壓)

10歐姆電阻器

50nF電容器-(或在接近47nF,56nf,68nf的地方工作)

220uF電容器

64歐姆揚(yáng)聲器

10K線性電位器

電纜鏈接Arduino和電路之間的8條數(shù)據(jù)線-

在Uno上8條連接成一直線,在Mega上成對(duì)。

在我使用的Mega上帶10路IDC接頭的10路帶狀電纜。 (備用2條線)

用于0V,9V和DAC輸出的插座連接器

銅排板,焊錫,電線,刀具等

步驟2:規(guī)格

串行設(shè)置為115200波特。

使用Mega的Hobbytronics MicroSD Breakout Board支持到位。芯片選擇和其他端口將在Mega和Uno之間改變。

Wav文件必須存在于名為adlog的目錄中,請(qǐng)隨意命名,并重新排列必要的編碼。

wav文件必須為8位單聲道。我已經(jīng)測試了高達(dá)44KHz。

“串行”監(jiān)視器在adlog文件夾中顯示wav文件。文件名是從監(jiān)視器輸出行發(fā)送的。

文件大小僅受SdCard大小的限制。

步驟3:入門

連接SD卡讀卡器。這些是Mega的連接。

0,5V

CLK到引腳52

D0到引腳50

D1到引腳51

CS到第53針

(有關(guān)Uno端口連接的信息,請(qǐng)參見供應(yīng)商的網(wǎng)站)

您需要在此階段測試卡是否正常工作-使用供應(yīng)商提供的腳本。

。

我們需要做一個(gè)小電路。

我們要從Arduino發(fā)送音頻字節(jié)流。

這些數(shù)字在0到255之間。它們代表電壓。

沉默范圍是127-128。

255是揚(yáng)聲器的一種錐形揚(yáng)聲器。

0是揚(yáng)聲器的一種錐形揚(yáng)聲器。

因此,音頻被記錄為已保存的數(shù)字,從而產(chǎn)生變化的電壓

。

我們可以使用“端口”同時(shí)在Arduino的8行中發(fā)送數(shù)字。

如果我們將8條線饋入數(shù)模轉(zhuǎn)換器,它會(huì)按照錫的指示進(jìn)行操作,并產(chǎn)生與數(shù)字量成比例的模擬電壓。

然后我們要做的是包裝

第4步:小電路

DAC0832 LCN

這是一款出色的廉價(jià)8位數(shù)模轉(zhuǎn)換器。 (DAC)

它可以通過一系列數(shù)據(jù)保持,數(shù)據(jù)采樣線進(jìn)行完全控制。

或者可以將其設(shè)置為在“流經(jīng)操作”中自動(dòng)完成所有操作。

引用該手冊:

僅將CS,WR1,WR2和XFER接地,并將ILE接地即可,這兩個(gè)內(nèi)部寄存器都可以直接跟隨所應(yīng)用的數(shù)字輸入(直通)影響DAC模擬輸出。

好,這是與芯片組的四個(gè)連接低端,一個(gè)設(shè)置為9V的連接-很容易。

我們不希望有任何負(fù)電壓,因此手冊說我們應(yīng)該使用“電壓切換模式”,并提供圖表。

我們要做的就是替換一個(gè)小型音頻放大器,而不是他們建議的那種。

LM386-N音頻放大器

放大器的手冊提供了最小的零件圖-增益為20(對(duì)我們來說是太多了,但具有音量控制)。

我們需要做的是在DAC和放大器之間添加一個(gè)電容器,以便僅放大交流信號(hào)

我們還必須添加一個(gè)電容應(yīng)靠近我們每個(gè)芯片的電源引腳,否則我們將從9V電源中獲得嗡嗡聲。

步驟5:取出烙鐵

由于電路很簡單,所以我不打算一擊即發(fā)。

以下是一些提示:

準(zhǔn)備一塊至少28 x 28孔的銅帶板。 (是的,我知道腦外科醫(yī)師可以使它變?。?/p>

如果您打算用螺釘安裝它,請(qǐng)?jiān)陂_始時(shí)允許他們使用!

將芯片安裝在插槽上。僅在檢查完所有內(nèi)容后才插入芯片。

將輸入線遠(yuǎn)離輸出。

注意電容器的正確極性。

有關(guān)LM336參考電壓的基本視圖,請(qǐng)參見該圖。不使用調(diào)節(jié)腳,可以將其切開。

請(qǐng)注意直接連接到DAC的引腳8,這對(duì)于測試非常有用。

我使用帶狀電纜和10方向IDC連接器連接到Audino。

在Uno上,連接成一直線-您可能會(huì)發(fā)現(xiàn),將8個(gè)輸入連接成一條直線可以讓您使用購買的現(xiàn)成的8路連接器鏈接到Arduino,

完成后-檢查焊接情況并檢查銅軌之間的間隙。

。

我找到了一個(gè)36 tpi的小型鋼鋸條對(duì)于清除碎片非常有用。我卸下刀片的定位銷并將刀片的頂端滑入軌道-顯然刀片不在框架中。

步驟6:測試DAC

斷開電路與Arduino之間的連接。

將電路的音量控制設(shè)置為中途。

打開9V直流電源

檢查電路是否正常-我對(duì)您的電路不承擔(dān)任何責(zé)任!

關(guān)閉電源。

將電路連接到Arduino。

在Mega上使用22-29引腳。 (PORTA)不要弄錯(cuò)上面的兩個(gè)5V引腳!

在Uno上使用0-7引腳。這是PORTD

將您的電源的0V連接到Arduino上的0V。

加電。

打開此測試程序DAC_TEST

對(duì)于UNO,將對(duì)PORTA的所有引用替換為PORTD

DDRD替換DDRA-該指令將所有8行設(shè)置為一次性輸出。這是數(shù)據(jù)方向寄存器。

將串行監(jiān)視器設(shè)置為115200。

在DAC out和OV之間連接電壓表

程序?qū)⒃O(shè)置輸出到255-所有線路上-最大電壓。

輸出128-最大電壓的一半。

輸出0-零電壓(或可能接近零)。

然后它將按位步進(jìn):1、2、4、8、16、32、64、128

電壓應(yīng)穩(wěn)定增加。

如果電壓回落而數(shù)量增加您可能將兩根互連線顛倒了。

。

您還應(yīng)該聽到揚(yáng)聲器隨著電壓的變化而悄悄地發(fā)出咔嗒聲

步驟7 :讀取Wav標(biāo)頭

Wav文件以指定的頻率和數(shù)據(jù)大小保存。

此信息包含在以下位置的44字節(jié)標(biāo)頭中一個(gè)wav文件的開頭。

盡管某些軟件擴(kuò)展了標(biāo)頭(在字節(jié)35之后),但使數(shù)據(jù)大小的位置更難定位。

要讀取標(biāo)頭,我們創(chuàng)建一個(gè)buff er并復(fù)制文件的開頭。

頻率從文件的24個(gè)字節(jié)開始以4個(gè)字節(jié)存儲(chǔ)。

//讀取wav文件頭中指定的頻率

字節(jié)頭文件[60]

tempfile.seek(0);

tempfile.read(headbuf,60);

RETVAL = headbuf [27];

retval =(retval 《《8)| headbuf [26];

retval =(retval 《《8)| headbuf [25];

retval =(retval 《《8)| headbuf [24];

Serial.print(F(“ File Frequency”));

Serial.print( retval);

。

查找數(shù)據(jù)大小信息的最佳方法是在標(biāo)題中搜索單詞“ data”。

然后提取緊隨其后的4個(gè)字節(jié),這些字節(jié)構(gòu)成了長值

無符號(hào)長檢索;

int mypos = 40 ;

用于(int i = 36; i 《60; i ++){

如果(headbuf [i] = =‘d’){

if(headbuf [i + 1] ==‘a(chǎn)’){

如果(headbuf [i + 2] ==‘t’){

if(headbuf [i + 3] ==‘a(chǎn)’){

//終于有了

mypos = i + 4;

i = 60;

}

}

} 》

}

}

tempfile.seek(mypos);

RETVAL = headbuf [mypos + 3];

RETVAL =(RETVAL 《《8) | headbuf [mypos + 2];

retval =(retval 《《8)| headbuf [mypos + 1];

retval =(retval 《《8)| headbuf [mypos];

確定數(shù)據(jù)長度和頻率!

音頻數(shù)據(jù)緊跟著構(gòu)成數(shù)據(jù)長度值的4個(gè)字節(jié)。

步驟8:中斷,中斷。..。

頻率信息,以在所需頻率處或附近創(chuàng)建軟件中斷。

雖然不一定總是精確地設(shè)置中斷,但已足夠。從文件讀取的頻率將傳遞給setintrupt子例程。

void setintrupt(float freq){

float bitval = 8;//8表示8位定時(shí)器0和2,1024表示定時(shí)器1字節(jié)

setocroa =(16000000/(freq * bitval))-0.5;

//setocroa值需要減去-1。但是,將0.5個(gè)回合加到最接近的0.5

//計(jì)時(shí)器的分辨率有限

//由位值的大小確定

cli();//禁用中斷

//設(shè)置 timer2 中斷

TCCR2A = 0;//將整個(gè)TCCR2A寄存器設(shè)置為0

TCCR2B = 0;//與TCCR2B相同

TCNT2 = 0;//將計(jì)數(shù)器值初始化為0

//設(shè)置比較匹配寄存器的頻率(hz)增量

OCR2A = setocroa ;//=(16 * 10 ^ 6)/(頻率* 8)-1(必須為《256)

//開啟CTC模式

TCCR2A | =(1 《

TCCR2B | =(1 《

//TIMSK2 | =(1 《

sbi(TIMSK2,OCIE2A);//在定時(shí)器2上啟用中斷

sei();//啟用中斷

關(guān)注讀者的讀者會(huì)發(fā)現(xiàn) sbi(TIMSK2,OCIE2A)

我已設(shè)置幾個(gè)用于設(shè)置和清除寄存器位的功能(獲取互聯(lián)網(wǎng)):

//定義用于清除寄存器位的方法

#ifndef cbi

#define cbi(sfr,bit)(_SFR_BYTE(sfr)&=?_BV(bit))

#endif

//定義用于設(shè)置寄存器位

#ifndef sbi

#define sbi(sfr,bit)( _SFR_BYTE(sfr)| = _BV(位))

#endif

這些函數(shù)可輕松調(diào)用以設(shè)置或清除中斷

所以中斷正在運(yùn)行,我們該怎么辦?

步驟9:中斷和雙緩沖

在22 Khz時(shí),每0.045 ms輸出一個(gè)字節(jié)的音頻數(shù)據(jù)

在2.08中讀取512字節(jié)(緩沖區(qū)大?。?ms。

因此無法在一秒內(nèi)從SDCard讀取緩沖區(qū)

然而,在23.22ms內(nèi)將512字節(jié)寫入端口。

所以我們要做的就是設(shè)置每次緩沖區(qū)清空時(shí)讀取一個(gè)新文件。需要一個(gè)新的數(shù)據(jù)塊之前獲取數(shù)據(jù)的時(shí)間。..假設(shè)我們使用兩個(gè)緩沖區(qū),在填充另一個(gè)緩沖區(qū)時(shí)將其清空。

這是雙緩沖。

讀取的文件

。

我已經(jīng)設(shè)置了兩個(gè)512字節(jié)的緩沖區(qū),分別稱為bufa和bufb。

標(biāo)志 aready 是true,我們從porta讀取,否則從portb讀取

當(dāng)緩沖區(qū)位置(bufcount)達(dá)到緩沖區(qū)大?。˙UF_SIZE 512)時(shí),我們設(shè)置一個(gè)名為的標(biāo)志

void循環(huán)例程會(huì)尋找此標(biāo)志并開始讀取塊:

if(readit){

if(! Aready){

//啟動(dòng)SD卡讀取到bufa

tempfile.read(bufa,BUF_SIZE);

}否則{

//啟動(dòng)讀取到bufb的SDCard塊

tempfile.read(bufb,BUF_SIZE);

}

readit = false;

}

完成后,例程標(biāo)志readit = false。

在中斷例程中,我們必須檢查void循環(huán)通過檢查readit == false是否結(jié)束。

在這種情況下,我們發(fā)出信號(hào),要求再次讀取并切換Aready標(biāo)志以切換緩沖區(qū)。

如果SD卡仍在讀取我們必須回溯一個(gè)讀數(shù)(counter--; bufcount--;)并退出中斷以稍后再試。 (單擊音頻輸出信號(hào)表示已發(fā)生這種情況。)

讀取所有數(shù)據(jù)后,中斷被取消,端口重置為中間電壓值128,音頻文件關(guān)閉。

在首次運(yùn)行dac2.ino腳本之前,請(qǐng)將音量設(shè)置為50%。這會(huì)太大聲,但是比100%更好!

如果您的音量控制反向工作,則將10K電位器兩端的引線互換。

讓我知道如何聽起來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • dac
    dac
    +關(guān)注

    關(guān)注

    44

    文章

    2856

    瀏覽量

    197607
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6527

    瀏覽量

    197459
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    TLV320DAC23立體聲音頻數(shù)模轉(zhuǎn)換器:高性能音頻解決方案

    TLV320DAC23立體聲音頻數(shù)模轉(zhuǎn)換器:高性能音頻解決方案 在當(dāng)今數(shù)字化音頻的時(shí)代,一款優(yōu)秀的音頻數(shù)模轉(zhuǎn)換器(
    的頭像 發(fā)表于 04-24 18:15 ?992次閱讀

    TLV320DAC32:低功耗立體聲音頻DAC的全方位解析

    集成了豐富的功能,為便攜式設(shè)備的音頻處理提供了強(qiáng)大的支持。 文件下載: TLV320DAC32IRHBRG4.pdf 產(chǎn)品概述 TLV320DAC32是一款低功耗立體
    的頭像 發(fā)表于 04-23 13:05 ?99次閱讀

    TLV320DAC26:高性能立體聲音頻DAC的深度解析

    ,為滿足這一需求提供了出色的解決方案。下面就從多個(gè)方面對(duì)它進(jìn)行詳細(xì)解析。 文件下載: TLV320DAC26IRHBRG4.pdf 產(chǎn)品概述 TLV320DAC26是一款適用于便攜式計(jì)算、通信和娛樂應(yīng)用的高度集成立體
    的頭像 發(fā)表于 04-23 13:05 ?101次閱讀

    TLV320DAC23立體聲音頻數(shù)模轉(zhuǎn)換器:技術(shù)解析與應(yīng)用指南

    TLV320DAC23立體聲音頻數(shù)模轉(zhuǎn)換器:技術(shù)解析與應(yīng)用指南 在當(dāng)今數(shù)字化音頻時(shí)代,高性能的音頻數(shù)模轉(zhuǎn)換器(DAC)是實(shí)現(xiàn)優(yōu)質(zhì)
    的頭像 發(fā)表于 04-23 13:05 ?100次閱讀

    探索PCM2704/5/6/7:USB立體聲音頻DAC的卓越之選

    芯片USB立體聲音頻DAC,無疑是一款值得深入研究的產(chǎn)品。今天,我們就來詳細(xì)探討一下這款芯片的特性、參數(shù)以及應(yīng)用要點(diǎn)。 文件下載: PCM2704DB.pdf 一、芯片概述 PCM2704/5/6/7
    的頭像 發(fā)表于 04-22 15:05 ?116次閱讀

    TI PCM270xC系列立體聲音頻DAC:USB音頻解決方案的理想之選

    、PCM2705C、PCM2706C和PCM2707C系列立體聲音頻DAC(數(shù)字 - 模擬轉(zhuǎn)換器),憑借其出色的性能和豐富的功能,成為了眾多電子工程師在設(shè)計(jì)USB音頻設(shè)備時(shí)的理想選擇。 文件
    的頭像 發(fā)表于 04-22 14:55 ?94次閱讀

    低成本立體聲音頻DAC——PCM1733的技術(shù)解析與應(yīng)用指南

    低成本立體聲音頻DAC——PCM1733的技術(shù)解析與應(yīng)用指南 在音頻設(shè)備的設(shè)計(jì)中,數(shù)模轉(zhuǎn)換器(DAC)是實(shí)現(xiàn)數(shù)字音頻信號(hào)到模擬
    的頭像 發(fā)表于 04-22 12:40 ?128次閱讀

    深入解析AD1854:高性能立體聲音頻DAC的卓越之選

    深入解析AD1854:高性能立體聲音頻DAC的卓越之選 在音頻領(lǐng)域,數(shù)字模擬轉(zhuǎn)換器(DAC)的性能直接影響著音頻質(zhì)量。今天,我們就來詳細(xì)剖析
    的頭像 發(fā)表于 03-30 14:55 ?193次閱讀

    Burr - Brown TLV320DAC26:低功耗立體聲音頻 DAC 的技術(shù)解析

    的 TLV320DAC26 音頻 DAC 為滿足這一需求提供了絕佳的解決方案。下面,我們就來詳細(xì)分析一下這款芯片。 文件下載: tlv320dac
    的頭像 發(fā)表于 02-03 14:20 ?517次閱讀

    TLV320DAC3101:低功耗立體聲音頻DAC的卓越之選

    TLV320DAC3101:低功耗立體聲音頻DAC的卓越之選 在當(dāng)今的電子設(shè)備領(lǐng)域,音頻處理的質(zhì)量和功耗一直是工程師們關(guān)注的重點(diǎn)。TI的TLV320
    的頭像 發(fā)表于 02-02 10:25 ?297次閱讀

    TLV320DAC3100:低功耗立體聲音頻DAC的卓越之選

    。TI公司的TLV320DAC3100低功耗立體聲音頻DAC,憑借其豐富的功能和出色的性能,成為了眾多工程師的首選。 文件下載: tlv320dac
    的頭像 發(fā)表于 02-02 09:45 ?444次閱讀

    TAD5242:高性能立體聲音頻DAC的技術(shù)解析與應(yīng)用

    卓越性能和豐富功能的立體聲音頻DAC。 文件下載: tad5242.pdf 1. 核心特性:高性能與靈活性的完美結(jié)合 1.1 音頻性能卓越 動(dòng)態(tài)范圍寬廣 :TAD5242的
    的頭像 發(fā)表于 01-28 17:00 ?478次閱讀

    MAX9850:低功耗高性能立體聲音頻DAC的卓越之選

    MAX9850:低功耗高性能立體聲音頻DAC的卓越之選 在當(dāng)今的便攜式設(shè)備領(lǐng)域,音頻質(zhì)量和功耗始終是電子工程師關(guān)注的焦點(diǎn)。MAX9850作為一款低功耗、高性能的立體聲音頻
    的頭像 發(fā)表于 01-19 11:25 ?344次閱讀

    速通音頻處理:掌握TTS播放文件播放與錄音核心,實(shí)現(xiàn)完整功能

    播放TTS、播放音頻文件及錄音是構(gòu)建完整音頻處理功能的三大核心模塊。若想快速掌握并實(shí)現(xiàn)完整音頻處理能力,無需深挖底層細(xì)節(jié),只需聚焦“資源加載、播放
    的頭像 發(fā)表于 11-21 19:27 ?407次閱讀
    速通<b class='flag-5'>音頻</b>處理:掌握TTS<b class='flag-5'>播放</b>、<b class='flag-5'>文件</b><b class='flag-5'>播放</b>與錄音核心,實(shí)現(xiàn)完整功能

    如何使用 M487 微控制器 (MCU) 通過 DAC 在 SD 卡上播放 WAV 文件聲音?

    使用 M487 微控制器 (MCU) 通過 DAC 在 SD 卡上播放 WAV 文件聲音
    發(fā)表于 08-20 06:05