伊人久久大香线蕉综合bd高清,国产三级精品三级在线播放 ,欧美性猛xxxxx精品,久久久久国产精品熟女影院

0 賣盤信息
BOM詢價(jià)
您現(xiàn)在的位置: 首頁 > 技術(shù)方案 >工業(yè)控制 > 基于 Arduino 的紙鋼琴設(shè)計(jì)(示意圖+代碼)

基于 Arduino 的紙鋼琴設(shè)計(jì)(示意圖+代碼)

來源: 電路城
2021-11-29
類別:工業(yè)控制
eye 43
文章創(chuàng)建人 拍明

原標(biāo)題:基于 Arduino 的紙鋼琴設(shè)計(jì)(示意圖+代碼)

引言

在創(chuàng)客文化和 STEM 教育日益普及的今天,基于 Arduino 的項(xiàng)目因其開源、易用、可擴(kuò)展性強(qiáng)等特點(diǎn),成為了許多電子愛好者、教育工作者和學(xué)生的首選。紙鋼琴項(xiàng)目,作為一個(gè)集創(chuàng)意、電子、編程和音樂于一體的綜合性項(xiàng)目,不僅能夠鍛煉參與者的動(dòng)手能力、編程思維和音樂感知能力,還能激發(fā)他們對(duì)科技和藝術(shù)的興趣。本文將詳細(xì)介紹如何基于 Arduino 設(shè)計(jì)一款紙鋼琴,包括設(shè)計(jì)思路、所需元器件、電路連接、代碼實(shí)現(xiàn)等方面。

image.png

設(shè)計(jì)思路

紙鋼琴的設(shè)計(jì)核心在于利用 Arduino 開發(fā)板控制聲音輸出,通過簡(jiǎn)單的電路連接和編程,實(shí)現(xiàn)按鍵觸發(fā)音符播放的功能。為了增加趣味性和互動(dòng)性,我們還可以在紙上繪制鋼琴鍵盤,通過導(dǎo)電材料(如銅箔膠帶)將按鍵與 Arduino 連接起來,從而實(shí)現(xiàn)在紙上“彈奏”鋼琴的效果。

所需元器件

Arduino 開發(fā)板

  • 型號(hào):Arduino Uno R3

  • 作用:作為整個(gè)項(xiàng)目的核心控制器,負(fù)責(zé)接收按鍵輸入信號(hào),并控制蜂鳴器輸出相應(yīng)的音符聲音。

  • 選擇理由:Arduino Uno R3 是一款非常流行的開源硬件開發(fā)板,具有易于使用、功能強(qiáng)大、社區(qū)資源豐富等特點(diǎn)。它提供了足夠的數(shù)字輸入/輸出引腳,能夠滿足紙鋼琴項(xiàng)目的需求。

  • 功能:Arduino Uno R3 搭載了 ATmega328P 微控制器,具有 14 個(gè)數(shù)字輸入/輸出引腳、6 個(gè)模擬輸入引腳、1 個(gè) 16MHz 晶振、1 個(gè) USB 接口等。通過編寫代碼,可以實(shí)現(xiàn)對(duì)各種電子元件的控制。

蜂鳴器

  • 型號(hào):有源壓電蜂鳴器

  • 作用:作為聲音輸出元件,根據(jù) Arduino 發(fā)出的控制信號(hào)發(fā)出不同頻率的聲音,模擬鋼琴音符。

  • 選擇理由:有源壓電蜂鳴器具有體積小、功耗低、響應(yīng)速度快等優(yōu)點(diǎn),且易于與 Arduino 連接和控制。它能夠直接發(fā)出聲音,無需額外的音頻放大電路。

  • 功能:當(dāng)接收到 Arduino 發(fā)出的特定頻率的方波信號(hào)時(shí),蜂鳴器內(nèi)部的壓電陶瓷片會(huì)振動(dòng),從而產(chǎn)生聲音。通過改變方波的頻率,可以改變蜂鳴器發(fā)出的聲音音調(diào)。

按鍵開關(guān)

  • 型號(hào):輕觸按鍵開關(guān)

  • 作用:作為紙鋼琴的按鍵,當(dāng)被按下時(shí),會(huì)觸發(fā) Arduino 的數(shù)字輸入引腳,從而控制蜂鳴器發(fā)出相應(yīng)的音符聲音。

  • 選擇理由:輕觸按鍵開關(guān)具有體積小、操作輕便、壽命長等特點(diǎn),非常適合用于紙鋼琴項(xiàng)目。它們可以通過簡(jiǎn)單的電路連接與 Arduino 相連,實(shí)現(xiàn)按鍵觸發(fā)功能。

  • 功能:當(dāng)按鍵被按下時(shí),其內(nèi)部的觸點(diǎn)會(huì)閉合,從而使 Arduino 的數(shù)字輸入引腳接收到低電平信號(hào)。Arduino 根據(jù)接收到的信號(hào)判斷哪個(gè)按鍵被按下,并控制蜂鳴器發(fā)出相應(yīng)的音符聲音。

銅箔膠帶

  • 作用:作為導(dǎo)電材料,用于在紙上繪制鋼琴鍵盤的按鍵部分,并將按鍵與 Arduino 的數(shù)字輸入引腳連接起來。

  • 選擇理由:銅箔膠帶具有導(dǎo)電性好、易于粘貼、可裁剪等特點(diǎn),非常適合用于紙鋼琴項(xiàng)目的電路連接。它可以將紙上的按鍵與 Arduino 的電路部分緊密地連接起來,實(shí)現(xiàn)按鍵觸發(fā)功能。

  • 功能:將銅箔膠帶粘貼在紙上繪制好的按鍵位置上,然后通過導(dǎo)線將其與 Arduino 的數(shù)字輸入引腳連接起來。當(dāng)按鍵被按下時(shí),銅箔膠帶會(huì)導(dǎo)通電路,使 Arduino 接收到按鍵觸發(fā)信號(hào)。

電阻

  • 型號(hào):10kΩ 電阻

  • 作用:作為上拉電阻,連接在 Arduino 的數(shù)字輸入引腳與電源正極之間,確保在按鍵未按下時(shí),Arduino 的數(shù)字輸入引腳能夠接收到穩(wěn)定的高電平信號(hào)。

  • 選擇理由:10kΩ 電阻是一種常見的上拉電阻值,它能夠有效地將 Arduino 的數(shù)字輸入引腳拉至高電平,同時(shí)不會(huì)對(duì)電路造成過大的功耗。

  • 功能:當(dāng)按鍵未按下時(shí),由于上拉電阻的存在,Arduino 的數(shù)字輸入引腳會(huì)接收到電源正極的高電平信號(hào)。當(dāng)按鍵被按下時(shí),按鍵內(nèi)部的觸點(diǎn)會(huì)閉合,將 Arduino 的數(shù)字輸入引腳拉至低電平,從而觸發(fā) Arduino 的中斷或輪詢程序。

導(dǎo)線

  • 作用:用于連接各個(gè)元器件和 Arduino 開發(fā)板,形成完整的電路。

  • 選擇理由:導(dǎo)線是電子制作中必不可少的材料,它具有良好的導(dǎo)電性和可彎曲性,能夠方便地連接各個(gè)元器件和 Arduino 開發(fā)板。

  • 功能:將 Arduino 的數(shù)字輸入引腳與按鍵開關(guān)、銅箔膠帶等連接起來,形成完整的按鍵觸發(fā)電路;將 Arduino 的數(shù)字輸出引腳與蜂鳴器連接起來,形成完整的聲音輸出電路。

電源

  • 型號(hào):9V 電池或 USB 電源適配器

  • 作用:為 Arduino 開發(fā)板和蜂鳴器等元器件提供工作電壓。

  • 選擇理由:9V 電池具有體積小、攜帶方便等優(yōu)點(diǎn),適合用于便攜式紙鋼琴項(xiàng)目。USB 電源適配器則可以為 Arduino 提供穩(wěn)定的 5V 電壓,適合用于需要長時(shí)間工作的紙鋼琴項(xiàng)目。

  • 功能:為 Arduino 開發(fā)板提供工作電壓,使其能夠正常運(yùn)行并控制各個(gè)元器件;為蜂鳴器等元器件提供工作電壓,使其能夠發(fā)出聲音。

電路連接

紙鋼琴的電路連接相對(duì)簡(jiǎn)單,主要包括按鍵觸發(fā)電路和聲音輸出電路兩部分。

按鍵觸發(fā)電路

  1. 將每個(gè)按鍵開關(guān)的一端連接到 Arduino 的一個(gè)數(shù)字輸入引腳(如 D2、D3、D4 等)。

  2. 將每個(gè)按鍵開關(guān)的另一端連接到地線(GND)。

  3. 在每個(gè)數(shù)字輸入引腳與電源正極(VCC)之間連接一個(gè) 10kΩ 的上拉電阻。

聲音輸出電路

  1. 將蜂鳴器的正極連接到 Arduino 的一個(gè)數(shù)字輸出引腳(如 D10)。

  2. 將蜂鳴器的負(fù)極連接到地線(GND)。

代碼實(shí)現(xiàn)

紙鋼琴的代碼實(shí)現(xiàn)主要涉及到按鍵觸發(fā)檢測(cè)和音符播放控制兩部分。以下是一個(gè)簡(jiǎn)單的 Arduino 代碼示例,用于實(shí)現(xiàn)紙鋼琴的基本功能。


#include "pitches.h"  // 包含音符頻率定義的頭文件



// 定義按鍵對(duì)應(yīng)的引腳和音符

const int buttonPins[] = {2, 3, 4, 5, 6, 7, 8, 9};  // 按鍵引腳

const int numButtons = sizeof(buttonPins) / sizeof(buttonPins[0]);  // 按鍵數(shù)量

const int buzzerPin = 10;  // 蜂鳴器引腳



int notes[] = {NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5};  // 音符頻率



void setup() {

// 初始化蜂鳴器引腳為輸出模式

pinMode(buzzerPin, OUTPUT);



// 初始化按鍵引腳為輸入模式,并啟用內(nèi)部上拉電阻

for (int i = 0; i < numButtons; i++) {

pinMode(buttonPins[i], INPUT_PULLUP);

}

}



void loop() {

// 遍歷每個(gè)按鍵引腳,檢測(cè)是否有按鍵被按下

for (int i = 0; i < numButtons; i++) {

if (digitalRead(buttonPins[i]) == LOW) {  // 按鍵被按下時(shí),引腳電平為低

tone(buzzerPin, notes[i], 200);  // 播放對(duì)應(yīng)音符,持續(xù) 200 毫秒

delay(200);  // 等待音符播放完成

noTone(buzzerPin);  // 停止播放音符



// 防止按鍵抖動(dòng),等待一段時(shí)間再檢測(cè)

while (digitalRead(buttonPins[i]) == LOW);

delay(50);

}

}

}

代碼說明

  1. 包含頭文件#include "pitches.h" 包含了音符頻率定義的頭文件,其中定義了各種音符對(duì)應(yīng)的頻率值(單位為 Hz)。

  2. 定義變量

    • buttonPins[] 數(shù)組存儲(chǔ)了按鍵對(duì)應(yīng)的 Arduino 引腳編號(hào)。

    • numButtons 變量存儲(chǔ)了按鍵的數(shù)量。

    • buzzerPin 變量存儲(chǔ)了蜂鳴器連接的 Arduino 引腳編號(hào)。

    • notes[] 數(shù)組存儲(chǔ)了每個(gè)按鍵對(duì)應(yīng)的音符頻率。

  3. setup() 函數(shù)

    • 初始化蜂鳴器引腳為輸出模式。

    • 初始化按鍵引腳為輸入模式,并啟用內(nèi)部上拉電阻(通過 INPUT_PULLUP 模式實(shí)現(xiàn))。

  4. loop() 函數(shù)

    • 遍歷每個(gè)按鍵引腳,檢測(cè)是否有按鍵被按下(引腳電平為低)。

    • 如果按鍵被按下,則使用 tone() 函數(shù)播放對(duì)應(yīng)音符,持續(xù) 200 毫秒。

    • 播放完成后,使用 noTone() 函數(shù)停止播放音符。

    • 為了防止按鍵抖動(dòng)導(dǎo)致的誤觸發(fā),等待一段時(shí)間再檢測(cè)按鍵狀態(tài)。

調(diào)試與優(yōu)化

  1. 調(diào)試電路連接:確保所有元器件都正確連接到 Arduino 開發(fā)板上,沒有虛焊、漏焊等問題。使用萬用表檢查電路是否導(dǎo)通,確保按鍵觸發(fā)電路和聲音輸出電路都正常工作。

  2. 調(diào)試代碼:將代碼上傳到 Arduino 開發(fā)板上后,逐個(gè)按下按鍵,觀察蜂鳴器是否能夠正確發(fā)出對(duì)應(yīng)的音符聲音。如果某個(gè)按鍵無法觸發(fā)聲音或聲音不正確,檢查代碼中的引腳定義和音符頻率是否正確。

  3. 優(yōu)化用戶體驗(yàn)

    • 調(diào)整音符的持續(xù)時(shí)間和音量大小,使演奏效果更加自然和悅耳。

    • 增加按鍵防抖處理,避免按鍵抖動(dòng)導(dǎo)致的誤觸發(fā)問題。

    • 可以考慮增加 LED 指示燈等元件,用于指示當(dāng)前播放的音符或按鍵狀態(tài)。

擴(kuò)展與應(yīng)用

  1. 擴(kuò)展功能

    • 增加更多的按鍵和音符,實(shí)現(xiàn)更復(fù)雜的旋律演奏。

    • 添加錄音和重放功能,讓用戶能夠錄制自己演奏的旋律并重復(fù)播放。

    • 使用電容式觸摸按鍵代替機(jī)械按鍵,提高紙鋼琴的靈敏度和美觀性。

  2. 應(yīng)用場(chǎng)景

    • 作為 STEM 教育課程中的實(shí)踐項(xiàng)目,幫助學(xué)生掌握電子電路、編程和音樂等方面的知識(shí)。

    • 作為創(chuàng)意電子樂器,用于音樂創(chuàng)作、表演和教學(xué)等場(chǎng)合。

    • 作為親子活動(dòng)或團(tuán)隊(duì)建設(shè)項(xiàng)目,增進(jìn)親子關(guān)系或團(tuán)隊(duì)合作精神。

結(jié)論

基于 Arduino 的紙鋼琴設(shè)計(jì)是一個(gè)集創(chuàng)意、電子、編程和音樂于一體的綜合性項(xiàng)目。通過選擇合適的元器件、設(shè)計(jì)合理的電路連接和編寫簡(jiǎn)潔明了的代碼,我們可以輕松實(shí)現(xiàn)一個(gè)功能齊全的紙鋼琴。這個(gè)項(xiàng)目不僅能夠鍛煉參與者的動(dòng)手能力、編程思維和音樂感知能力,還能激發(fā)他們對(duì)科技和藝術(shù)的興趣。希望本文能夠?yàn)樽x者提供有益的參考和啟發(fā),讓大家在創(chuàng)客的道路上越走越遠(yuǎn)。

責(zé)任編輯:David

【免責(zé)聲明】

1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對(duì)本文的引用持有異議,請(qǐng)聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時(shí)處理。

2、本文的引用僅供讀者交流學(xué)習(xí)使用,不涉及商業(yè)目的。

3、本文內(nèi)容僅代表作者觀點(diǎn),拍明芯城不對(duì)內(nèi)容的準(zhǔn)確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨(dú)立判斷做出的,請(qǐng)讀者明確相關(guān)結(jié)果。

4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請(qǐng)聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責(zé)任的權(quán)利。

拍明芯城擁有對(duì)此聲明的最終解釋權(quán)。

標(biāo)簽: Arduino 紙鋼琴

相關(guān)資訊

拍明芯城微信圖標(biāo)

各大手機(jī)應(yīng)用商城搜索“拍明芯城”

下載客戶端,隨時(shí)隨地買賣元器件!

拍明芯城公眾號(hào)
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號(hào)
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告