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

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

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

怎樣用聲音控制RGBLED的顏色

454398 ? 來源:工程師吳畏 ? 2019-07-31 11:06 ? 次閱讀

連接RGB LED的最長腳到Arduino。通過220歐姆電阻將其他支路連接到Arduino的引腳9,10和11,如下面的電路圖所示。

怎樣用聲音控制RGBLED的顏色

如何運(yùn)行程序

首先,粘貼在Arduino IDE中本文末尾為Arduino提供的代碼并上傳代碼。

然后,您需要從Wekinator的示例頁面下載草圖。

下載MFCC的可執(zhí)行文件(mel頻率倒頻譜系數(shù))。我有一個(gè)64位操作系統(tǒng),所以我從那里下載了“win64”。

下載后,解壓縮并運(yùn)行“.exe”文件。它將如下所示?,F(xiàn)在您需要一個(gè)麥克風(fēng)來為Wekinator提供輸入。如果您已連接外接麥克風(fēng),請(qǐng)確保在計(jì)算機(jī)的聲音設(shè)置中選擇它。

您將需要另一個(gè)草圖(“輸出草圖”) )從Wekinator獲得輸出。該草圖在本文末尾給出。將其粘貼到新的處理窗口并運(yùn)行草圖。

現(xiàn)在打開Wekinator并進(jìn)行如下圖所示的設(shè)置。將輸入設(shè)置為13,將輸出設(shè)置為1.將類型設(shè)置為“所有動(dòng)態(tài)時(shí)間扭曲”,使用3種手勢類型,然后單擊“下一步”。

現(xiàn)在按住output_1前面的“+”按鈕并說“紅色”。

然后按住output_2前面的“+”按鈕并說“綠色”。

然后按住output_3前面的“+”按鈕并說“藍(lán)色”。

之后,單擊“Train”,然后單擊“Run”?,F(xiàn)在,RGB LED的顏色將根據(jù)您說的顏色名稱而改變。

Arduino代碼

#include //Including the library that will help us in receiving and sending the values from processing

ValueReceiver《1》 receiver; /*Creating the receiver that will receive 1 value.

Put the number of values to synchronize in the brackets */

/* The below variable will be synchronized in the processing

and they should be same on both sides. */

int output;

// Initializing the pins for led‘s

int red_light_pin= 11;

int green_light_pin = 10;

int blue_light_pin = 9;

void setup()

{

/* Starting the serial communication because we are communicating with the

Processing through serial. The baudrate should be same as on the processing side. */

Serial.begin(19200);

pinMode(red_light_pin, OUTPUT);

pinMode(green_light_pin, OUTPUT);

pinMode(blue_light_pin, OUTPUT);

// Synchronizing the variable with the processing. The variable must be int type.

receiver.observe(output);

}

void loop()

{

// Receiving the output from the processing.

receiver.sync();

// Matching the received output to light up the RGB LED

if (output == 1)

{

RGB_color(255, 0, 0); // Red

}

else if (output == 2)

{

RGB_color(0, 255, 0); // Green

}

else if (output ==3)

{

RGB_color(0, 0, 255); // Blue

}

}

void RGB_color(int red_light_value, int green_light_value, int blue_light_value)

{

analogWrite(red_light_pin, red_light_value);

analogWrite(green_light_pin, green_light_value);

analogWrite(blue_light_pin, blue_light_value);

}

處理代碼(輸出草圖)

import vsync.*; // Importing the library that will help us in sending and receiving the values from the Arduino

import processing.serial.*; // Importing the serial library

// Below libraries will connect and send, receive the values from wekinator

import oscP5.*;

import netP5.*;

// Creating the instances

OscP5 oscP5;

NetAddress dest;

ValueSender sender;

// This variable will be syncronized with the Arduino and it should be same on the Arduino side.

public int output;

void setup()

{

// Starting the serial communication, the baudrate and the com port should be same as on the Arduino side.

Serial serial = new Serial(this, “COM10”, 19200);

sender = new ValueSender(this, serial);

// Synchronizing the variable as on the Arduino side.

sender.observe(“output”);

// Starting the communication with wekinator. listen on port 12000, return messages on port 6448

oscP5 = new OscP5(this, 12000);

dest = new NetAddress(“127.0.0.1”, 6448);

}

//This is called automatically when OSC message is received

void oscEvent(OscMessage theOscMessage) {

if (theOscMessage.checkAddrPattern(“/output_1”)==true)

{

output = 1;

}

else if (theOscMessage.checkAddrPattern(“/output_2”)==true)

{

output = 2;

}

else if (theOscMessage.checkAddrPattern(“/output_3”) == true)

{

output = 3;

}

else

{

}

}

void draw()

{

// Nothing to be drawn for this example

}

聲明:本文內(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)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23404

    瀏覽量

    664151
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    188113
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何選擇PCB顏色

    一、PCB顏色代表什么意思? ? PCB顏色一般是指拿到一塊PCB板時(shí)最直觀看到的板子上的油色,PCB表面的顏色就是阻焊劑的顏色。PCB板染色顏料是一種硬化樹脂,主體樹脂是無色近透明的
    的頭像 發(fā)表于 12-24 11:33 ?463次閱讀

    TPA3001做音頻信號(hào)的功放,輸出的聲音很沙啞是怎么回事?

    TPA3001做音頻信號(hào)的功放,但是輸出的聲音很沙啞,之前公司用過這款芯片,我的電路圖沒有改變,但是聲音不正常。我示波器測量所有的引腳的波形跟正常的一樣,但是
    發(fā)表于 10-31 06:29

    請(qǐng)問TAS5706如何用硬件控制I2C?

    TAS5706 的Control Interface可以HW,SW。我想問問怎樣用HW來控制呢?因?yàn)槲乙粋€(gè)板上預(yù)計(jì)8個(gè)TAS5706,MCU怎樣去識(shí)別?
    發(fā)表于 10-23 08:33

    Tas2555聲音通訊已實(shí)現(xiàn),音量控制這個(gè)寄存器Speaker Control Register實(shí)現(xiàn)嗎?

    Tas2555聲音通訊已實(shí)現(xiàn),音量控制這個(gè)寄存器Speaker Control Register實(shí)現(xiàn)嗎?
    發(fā)表于 10-23 07:57

    多個(gè)TLV320AIC3254一路I2C總線對(duì)其配置可行嗎?

    一片CPU3片TLV320AIC3254做音頻處理,想用一路I2C總線對(duì)其配置可行嗎? 地址好像是唯一的 0011000沒法設(shè)置,手冊(cè)中又提到可使用10位地址但是沒找到說明怎樣用,哪位大俠用過
    發(fā)表于 10-22 07:54

    如何用5509A產(chǎn)生一個(gè)白噪聲,經(jīng)AIC23播放出來然后再用AIC23采集這個(gè)聲音?

    怎樣用5509A產(chǎn)生一個(gè)白噪聲,經(jīng)AIC23播放出來然后再用AIC23采集這個(gè)聲音
    發(fā)表于 10-15 06:26

    探秘PCB板顏色:從外觀到內(nèi)涵的多重解讀

    五花八門,從常見的綠色到罕見的紅色、藍(lán)色、黑色等,讓人眼花繚亂。那么,這些不同顏色的PCB板到底有何用途?它們的背后又隱藏著怎樣的奧秘呢?本文將為您一一揭曉。 PCB板顏色的由來和意義 首先,讓我們來了解一下PCB板
    的頭像 發(fā)表于 10-08 09:21 ?426次閱讀

    怎樣用自己的電腦遠(yuǎn)程公司的電腦

    隨著遠(yuǎn)程辦公和居家辦公的普及,如何高效、安全地遠(yuǎn)程控制辦公室電腦成為許多職場人士的需求。Splashtop作為一款專業(yè)的遠(yuǎn)程控制軟件,提供了強(qiáng)大的功能,使用戶能夠隨時(shí)隨地訪問和操作辦公室的電腦,實(shí)現(xiàn)
    的頭像 發(fā)表于 08-30 13:20 ?261次閱讀
    <b class='flag-5'>怎樣用</b>自己的電腦遠(yuǎn)程公司的電腦

    怎樣用THS3201實(shí)現(xiàn)輸出功率可調(diào)?

    怎樣用THS3201實(shí)現(xiàn)輸出功率可調(diào)?
    發(fā)表于 08-26 08:28

    OPA735加OPA333,怎樣用TINA TI去仿真?

    當(dāng)輸入信號(hào)VG1從7.06V慢慢變化到7.22V時(shí)。 輸出電壓Vout的變化必須是接近線性變化的。我想知道我該怎樣用TINA TI去仿真?怎樣設(shè)置那個(gè)輸入信號(hào)VG1才能達(dá)到我的目的。因?yàn)檫@個(gè)電壓源好像
    發(fā)表于 08-02 08:39

    怎樣用表測穩(wěn)壓管穩(wěn)壓值

    表是一種常用的電子測量工具,可以用來測量電壓、電流、電阻等多種參數(shù)。在測量穩(wěn)壓管的穩(wěn)壓值時(shí),我們可以使用萬表的直流電壓測量功能。以下是步驟和注意事項(xiàng): 準(zhǔn)備工具和材料 萬表 穩(wěn)壓管 電源
    的頭像 發(fā)表于 07-31 14:26 ?2058次閱讀

    怎樣用表區(qū)分晶閘管三個(gè)管極呢?

    晶閘管是一種四層三端半導(dǎo)體器件,主要用于交流電路中的電壓和功率控制。它具有陽極、陰極和門極三個(gè)端子。
    的頭像 發(fā)表于 05-24 17:52 ?3459次閱讀

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測量脈寬?

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測量脈寬?
    發(fā)表于 05-07 06:55

    stm32f100怎樣用重映射功能?

    的是stm32f100c8t6b芯片,現(xiàn)在想用將PB1映射為TIM1_CH3N,在調(diào)用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)時(shí), GPIO_PinAFConfig和GPIO_AF_TIM1都沒定義,stm32f100
    發(fā)表于 05-07 06:06

    STM32F412G-DISCO怎樣用MX生成fatfs的代碼?

    STM32F412G-DISCO怎樣用MX生成fatfs的代碼? SD卡例程能跑,但mx生成的代碼不能正常運(yùn)行,我生成代碼后是不是還要配置一些東西?(我生成后只寫了測試代碼) 問題解決了,雖然我不知道我為什么不能直接使用mx生成的代碼去操作sd卡,但我通過復(fù)制粘貼例程的代碼完成了測試。
    發(fā)表于 03-12 08:15

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品