99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

分享一個(gè)使用Arduino敲擊手指生成音調(diào)的項(xiàng)目

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2023-01-25 15:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在這個(gè)項(xiàng)目中,我們將使用 Arduino 構(gòu)建一個(gè)娛樂(lè)。我們都有敲擊桌子或筆來(lái)創(chuàng)作任何隨機(jī)音樂(lè)的習(xí)慣。當(dāng)然,這可能不被認(rèn)為是一種良好的舉止,但我們都喜歡至少做一次。因此,我想通過(guò)使用Arduino的音調(diào)播放能力將其提升到一個(gè)新的水平。一旦你構(gòu)建了這個(gè)項(xiàng)目,你就可以通過(guò) 敲擊任何導(dǎo)電的東西來(lái)生成音調(diào) ,并創(chuàng)造你自己的節(jié)奏,就像在你的手掌上彈鋼琴一樣。聽(tīng)起來(lái)很酷,所以,讓我們構(gòu)建它。

所需組件:

本項(xiàng)目所需的材料如下,不一定要堅(jiān)持。一旦你掌握了這個(gè)概念,你就可以使用自己的方式來(lái)構(gòu)建它。

  1. Arduini Pro Mini
  2. 培佐揚(yáng)聲器
  3. 柔性傳感器
  4. 手指手套
  5. 10K 電阻器
  6. BC547 晶體管
  7. 9V電池

電路圖及說(shuō)明:

這款Arduino棕櫚鋼琴的電路圖如下所示。

1.png

該項(xiàng)目總共使用四個(gè)傳感器,即兩個(gè) 柔性傳感器和兩個(gè)達(dá)林頓對(duì)作為觸摸傳感器 。我們還使用了兩個(gè)下拉電阻R1和R2,每個(gè)值為10k,它們將充當(dāng)Flex傳感器的下拉電阻。在這里,F(xiàn)lex傳感器用于使用一根手指根據(jù)彎曲的程度生成三種不同的音調(diào)。所以我們可以用兩根手指發(fā)出 6 種聲音。在此處了解柔性傳感器。

達(dá)林頓對(duì):

在我們繼續(xù)之前,重要的是要知道什么是達(dá)林頓以及它在我們的項(xiàng)目中究竟是如何工作的。達(dá)林頓對(duì)可以定義為兩個(gè)雙極晶體管的連接方式,即第一個(gè)晶體管放大的電流被第二個(gè)晶體管進(jìn)一步放大。下圖顯示了達(dá)林頓對(duì):

達(dá)林頓對(duì)

如上所示,我們使用了兩個(gè)BC547晶體管,其集電極連接在一起,第一個(gè)晶體管的發(fā)射極與第二個(gè)晶體管的基極連接。該電路充當(dāng)具有增益的放大器,這意味著提供給第一個(gè)晶體管基極的任何小信號(hào)都足以偏置第二個(gè)晶體管的基極。 我們的身體在這里充當(dāng)接地 ,因此每當(dāng)我們觸摸晶體管的底部時(shí),第二個(gè)晶體管就會(huì)偏置。利用這一點(diǎn),我們?yōu)檫@個(gè)項(xiàng)目構(gòu)建了觸摸傳感器。

引腳 2 和 3 是 Arduino 上的中斷引腳,將使用內(nèi)部上拉電阻器將其拉高,然后在達(dá)林頓開(kāi)關(guān)閉合時(shí)將這些引腳固定在地。這樣,每次我們觸摸電線時(shí)(從 1 的底部^圣^晶體管)將從 Arduino 觸發(fā)中斷。

使用兩個(gè)手指只能產(chǎn)生兩種類型的音調(diào),因此我還添加了一個(gè)柔性傳感器,它會(huì)根據(jù)彎曲的程度改變音調(diào)。我已經(jīng)編程為根據(jù)手指(柔性傳感器)彎曲的程度為每個(gè)手指產(chǎn)生三種不同的音調(diào)。如果您想在指尖擁有更多音調(diào),可以增加數(shù)量。

我在性能板上制作了完整的板,以便它很容易放入我的手掌,但您也可以使用面包板。只要確保你的身體在某個(gè)時(shí)候接觸電路的地面。焊接所有東西后,它應(yīng)該看起來(lái)像這樣

阿杜伊諾手指敲擊鋼琴

通過(guò)使用 Arduino 敲擊手指來(lái)生成聲音

我用兩只手指手套將達(dá)林頓對(duì)的電線固定到位,如上所示。您可以提出自己的(如果可能的話更好)想法,以便在播放音調(diào)時(shí)將它們固定到位。

Arduino編程:

這個(gè)Arduino點(diǎn)擊音發(fā)生器的程序非常簡(jiǎn)單。我們只需要注意來(lái)自達(dá)林頓電線的中斷,如果找到一個(gè),我們必須播放音調(diào),這取決于彎曲傳感器彎曲的程度。完整的代碼在這篇文章的末尾給出,但我在下面解釋了幾個(gè)重要的塊。

注意:該程序在庫(kù)“pitches.h”的幫助下工作。因此,請(qǐng)確保在編譯之前已將頭文件添加到程序中。您可以從此處下載 pitches.h 頭文件。

在設(shè)置函數(shù)中,我們將引腳 2 和 3 初始化為帶有上拉電阻的輸入。我們還將它們聲明為中斷引腳,并在引腳 2 上有中斷時(shí)執(zhí)行 tone1(),當(dāng)引腳 3 上有中斷時(shí)執(zhí)行 tone2() 函數(shù)^RD^針。每當(dāng)這些引腳從其上拉狀態(tài)變?yōu)榈碗娖綍r(shí),就會(huì)觸發(fā)這些中斷。

void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), tone1, LOW);
attachInterrupt(digitalPinToInterrupt(3), tone2, LOW);
Serial.begin(9600);
}

環(huán)路功能內(nèi)部,我們不斷檢查柔性傳感器的彎曲程度。例如,我的 FlexSensor 1 在保持平坦時(shí)給出的值約為 200,當(dāng)我將其彎曲到最大值時(shí),值一直下降到 130,因此我將值從 200 映射到 130 為 1 到 3,因?yàn)槲冶仨毑シ?3 種不同類型的音調(diào)。您必須根據(jù) Flex 傳感器值和音調(diào)數(shù)量調(diào)整這兩條線。

void loop() {
 flexSensor1 = map(analogRead(A0),200,130,1,3); //Map up with your own values based on your flex sensor
 flexSensor2 = map(analogRead(A1),170,185,1,3); //Map up with your own values based on your flex sensor

}

正如我們之前看到的,當(dāng)在引腳 2 上檢測(cè)到中斷時(shí),函數(shù) tone1() 將被執(zhí)行。tone1() 函數(shù)內(nèi)部發(fā)生了什么如上所示。我們查看 FlexSensor1 的值,并根據(jù) flexSesnor 值播放音調(diào)。音調(diào)將使用Arduino的音調(diào)功能播放。

void tone1()
{
if (flexSensor1==1)
tone(8, NOTE_D4,50);
else if (flexSensor1==2)
tone(8, NOTE_A3,50);
else if (flexSensor1==3)
tone(8, NOTE_G4,50);
else
tone(8, NOTE_D4,50);
}

下面的行用于播放音調(diào)。您可以播放“pitches.h”頭文件中可用的任何音調(diào)。例如,上面的行在引腳上播放NOTE_A3,持續(xù)時(shí)間為 50 毫秒。

tone(8, NOTE_A3,50); //tone(PinNum,Note name, Duration);

加工:

硬件準(zhǔn)備就緒后,上傳代碼并將其安裝在手指上。確保您的身體在某個(gè)時(shí)候接觸電路的地面?,F(xiàn)在只需觸摸任何導(dǎo)電材料或您的身體,您應(yīng)該能夠聽(tīng)到相應(yīng)的音調(diào)。您可以通過(guò)以不同的間隔和不同的位置點(diǎn)擊來(lái)播放自己的旋律或音樂(lè)。

/*
* Arduino based Tap and Tone player
* Published by: CircuitDigest.com
* Code By: B.Aswinth Raj
* Dated:8-7-2017
*
* ###CONNECTIONS###
* Darlington Wire 1 -> Pin 2
* Darlington Wire 2 -> Pin 3
* FlexSensor 1 -> A0
* FlexSensor 2 -> A1
* Speaker -> Pin 8
*/

#include "pitches.h" //add this librarey into the project folder
int flexSensor1,flexSensor2;

void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), tone1, LOW); //Trigger tone1 when LOW
attachInterrupt(digitalPinToInterrupt(3), tone2, LOW); //Trigger tone2 when LOW
Serial.begin(9600);
}

void loop() {
flexSensor1 = map(analogRead(A0),200,130,1,3); //Map up with your own values based on your flex sensor
flexSensor2 = map(analogRead(A1),170,185,1,3); //Map up with your own values based on your flex sensor
}

//**Function to execute on Interrupt 1**//
void tone1()
{

if (flexSensor1==1)
tone(8, NOTE_D4,50);
else if (flexSensor1==2)
tone(8, NOTE_A3,50);
else if (flexSensor1==3)
tone(8, NOTE_G4,50);
else
tone(8, NOTE_D4,50);
}

//**Function to execute on Interrupt 2**//
void tone2()
{

if (flexSensor1==1)
tone(8, NOTE_A4,50);
else if (flexSensor1==2)
tone(8, NOTE_F4,50);
else if (flexSensor1==3)
tone(8, NOTE_E4,50);
else
tone(8, NOTE_A4,50);
}

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

    關(guān)注

    0

    文章

    22

    瀏覽量

    26836
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    簡(jiǎn)易的敲擊裝置

    想設(shè)計(jì)個(gè)簡(jiǎn)單的敲擊裝置,敲擊個(gè)球的表面,采集振動(dòng)信號(hào)~要保證
    發(fā)表于 03-23 15:35

    音調(diào)發(fā)生器模塊是如何利用計(jì)數(shù)器去生成個(gè)1kHz信號(hào)的

    如何去制作個(gè)通用的音調(diào)發(fā)生器模塊?該模塊有何功能?音調(diào)發(fā)生器模塊是如何利用計(jì)數(shù)器去生成
    發(fā)表于 08-19 07:45

    自制個(gè)arduino項(xiàng)目

    描述你自己的arduino項(xiàng)目這個(gè)項(xiàng)目最適合初學(xué)者到高級(jí)制作自己的 arduino 是每個(gè)人都想做的夢(mèng)想,在這里您只需單擊下即可
    發(fā)表于 08-15 06:03

    個(gè)簡(jiǎn)單的音調(diào)控制電路

    描述Baxendall 音色棧這只是個(gè)簡(jiǎn)單的音調(diào)控制電路,可以添加到現(xiàn)有項(xiàng)目中以獲得更好的音頻控制。
    發(fā)表于 08-17 06:31

    個(gè)帶有Arduino NANO V3的PLC項(xiàng)目

    描述PLC Arduino NANO 可編程梯形圖該項(xiàng)目個(gè)帶有 Arduino NANO V3 的 PLC,可以使用 LadderMak
    發(fā)表于 08-23 06:54

    分享個(gè)不錯(cuò)的Arduino NANO項(xiàng)目

    描述Arduino NANO 項(xiàng)目#11 | 氣象站 | 風(fēng)速
    發(fā)表于 08-30 07:24

    分享個(gè)不錯(cuò)的Arduino-PLC項(xiàng)目

    描述Arduino-PLC 項(xiàng)目(第 2 張,共 5 張)這個(gè)項(xiàng)目包含 5 張卡片,它們用排針相互交錯(cuò)。Arduino Nano 數(shù)據(jù)表將幫助您進(jìn)行連接。其他用于 Nano 編程的 3
    發(fā)表于 09-07 06:26

    是否有生成方波的音調(diào)函數(shù)?

    的程序,帶有中斷以捕獲 GPIO 切換按鈕并在觸摸按鈕時(shí)結(jié)束電子郵件。該程序運(yùn)行完美,它的名稱為 default.bas。即使在參數(shù)中打勾,程序也不會(huì)單獨(dú)啟動(dòng)。我需要按 RUN 才能讓它工作。 第二個(gè)問(wèn)題:是否有生成方波的音調(diào)
    發(fā)表于 05-10 13:15

    怎樣將敲擊傳感器與Arduino接口

    在這個(gè)項(xiàng)目中,我們將了解敲擊傳感器或振動(dòng)傳感器(有時(shí)稱為分接傳感器)。在此過(guò)程中,我們將看到敲擊傳感器的組件,敲擊傳感器的工作原理以及如何將敲擊
    的頭像 發(fā)表于 07-30 10:49 ?1w次閱讀

    個(gè)簡(jiǎn)單的PCB鍵盤,可輕松用于Arduino項(xiàng)目

    個(gè)簡(jiǎn)單的PCB鍵盤,可輕松用于Arduino項(xiàng)目。提供了完全可定制的代碼! 硬件部件: Arduino UNO?? ?×?? ?1
    的頭像 發(fā)表于 01-27 14:00 ?4559次閱讀

    如何使用Arduino構(gòu)建個(gè)電子動(dòng)畫(huà)眼睛

    在這個(gè)項(xiàng)目中,我們將使用 Arduino 構(gòu)建個(gè)動(dòng)畫(huà)眼睛。在網(wǎng)上尋找新的項(xiàng)目創(chuàng)意時(shí),我萌生了制作動(dòng)畫(huà)眼睛的想法,這個(gè)
    的頭像 發(fā)表于 07-10 09:52 ?3317次閱讀
    如何使用<b class='flag-5'>Arduino</b>構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>電子動(dòng)畫(huà)眼睛

    使用Arduino Uno生成波形

    電子發(fā)燒友網(wǎng)站提供《使用Arduino Uno生成波形.zip》資料免費(fèi)下載
    發(fā)表于 11-04 14:12 ?6次下載
    使用<b class='flag-5'>Arduino</b> Uno<b class='flag-5'>生成</b>波形

    將使用代碼生成生成項(xiàng)目移植到與智能配置器起使用的項(xiàng)目

    將使用代碼生成生成項(xiàng)目移植到與智能配置器起使用的項(xiàng)目
    發(fā)表于 01-11 19:00 ?0次下載
    將使用代碼<b class='flag-5'>生成</b>器<b class='flag-5'>生成</b>的<b class='flag-5'>項(xiàng)目</b>移植到與智能配置器<b class='flag-5'>一</b>起使用的<b class='flag-5'>項(xiàng)目</b>

    使用Arduino播放不同頻率的音調(diào)

    電子發(fā)燒友網(wǎng)站提供《使用Arduino播放不同頻率的音調(diào).zip》資料免費(fèi)下載
    發(fā)表于 06-27 09:46 ?0次下載
    使用<b class='flag-5'>Arduino</b>播放不同頻率的<b class='flag-5'>音調(diào)</b>

    將使用代碼生成生成項(xiàng)目移植到與智能配置器起使用的項(xiàng)目

    將使用代碼生成生成項(xiàng)目移植到與智能配置器起使用的項(xiàng)目
    發(fā)表于 06-30 20:54 ?0次下載
    將使用代碼<b class='flag-5'>生成</b>器<b class='flag-5'>生成</b>的<b class='flag-5'>項(xiàng)目</b>移植到與智能配置器<b class='flag-5'>一</b>起使用的<b class='flag-5'>項(xiàng)目</b>