步驟1:需要的材料
材料清單
Piezo Buzzer 1x
4x4鍵盤模塊1x
Arduino Uno 1x
USB 2.0電纜類型A/B 1x
聲音傳感器模塊1x
RGB LED 1x
330歐姆電阻3x
公對母跳線8x
男性跳線4x
3 pin公對母跳線1x
材料清單與上面的圖片有序。
第2步:建立時間!
4x4鍵盤模塊& Piezo Buzzer
理論
由于4x4鍵盤模塊和壓電蜂鳴器包含許多單獨的引腳輸入,我決定將所用的組件分成兩部分對。專注于鍵盤,通常用作輸入。 SunFounder 4 * 4矩陣鍵盤模塊是一個矩陣非編碼鍵盤,由16個并行鍵組成,每行和每列的鍵通過外部引腳連接 - 引腳Y1-Y4,如同標記旁邊控制行,當X1- X4,列。
目的
這些組件對整個項目的目的是允許用戶按下設置為a的按鈕壓電蜂鳴器通過赫茲頻率產生的特定聲音。
矩陣模塊引腳 - Arduino引腳
4 - 2
3 - 3
2 - 4
1 - 5
5 - 6
6 - 7
7 - 8
8 - 13
Piezo Buzzer - Arduino Pin
黑色 - GND
紅色 - 電源
我在這個版本中最困難的任務是弄清楚每根電線插入的位置。上面我提供了快速簡便的線路位置,只要按照從上到下的方式,尖端需要花費時間并確保每個引腳都正確插入正確的插槽。
*提示是遵循每根導線從一端到另一端的位置。
特定元件導線的所有Tinkercad草圖都是正確的顏色編碼,因此請仔細閱讀。
第3步:聲音傳感器模塊和RGB LED
聲音傳感器模塊和RGB LED
理論
聲音傳感器模塊允許您檢測聲音何時超過您選擇的設定點。通過麥克風檢測聲音并將其饋入LM393運算放大器。一旦聲級超過設定值,模塊上的LED將亮起并輸出。
目的
這些組件對整個項目的目的是獲得聲音傳感器模塊的聲音/音量讀數,通過讀取RGB LED將激活與聲音有關的正確顏色。
聲音傳感器模塊 - Arduino引腳(使用3針跳線)
輸出 - A0模擬引腳
GND - 任何開路GND引腳插槽
VCC - 3V
RGB共陽極(+)LED - Arduino引腳
紅色 - 9
電源 - 5V
綠色 - 10
藍色 - 11
請記住電線,每根電線穿過330歐姆電阻。使用上面的圖片作為參考。
我在這個版本中最困難的任務是弄清楚每根電線插入的位置。上面我提供了快速簡便的線路位置,只要按照從上到下的方式,提示就是花時間確保每個引腳都正確插入到正確的插槽中以防止將來調試。
*提示是遵循每條線插入的方式。
特定組件線的所有Tinkercad草圖都是正確的顏色編碼,因此請遵循。
步驟4:代碼
代碼
此代碼允許使用新定義的所有組件一起工作功能包含所有許多控件一個組件,它有許多可變變量,這些組件是RGB led,并使用rgb顏色改變打開時的顏色和壓電蜂鳴器以及根據按鈕按下它會產生的聲音。
此代碼中必須包含鍵盤庫
下載后,將新庫添加到ardu中ino,然后插入激活它所需的單行代碼。
我在代碼中遇到的困難是將新定義的函數放在何處通過反復試驗我發現它必須在設置中而不是循環。
代碼
#include // Keypad Library
int greenPin = 11; //RGB Green Pin connected to digital pin 9
int redPin= 10; //RGB Red Pin connected to digital pin 9
int bluePin = 9; //RGB Blue Pin connected to digital pin 9
int speakerPin = 12; // speaker connected to digital pin 12
const byte ROWS = 4; // four rows
const byte COLS = 4; // four coloums
const int soundPin = A0; //sound sensor attach to A0
char keys[ROWS][COLS] = {
{‘a’,‘b’,‘c’,‘d’},
{‘e’,‘f’,‘g’,‘h’},
{‘i’,‘j’,‘k’,‘l’},
{‘m’,‘n’,‘o’,‘p’}
}; // Visualization of keypad module
byte rowPins[ROWS] = {2, 3, 4, 5}; // connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8, 13}; // connect to the colum pinouts of the keypad
Keypad keypad = Keypad ( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Creates keys
void setup(){
pinMode(speakerPin, OUTPUT); // sets the speakerPin to be an output
pinMode(redPin, OUTPUT); // sets the red pin to be an output
pinMode(greenPin, OUTPUT); // sets the green pin to be an output
pinMode(bluePin, OUTPUT); // sets the blue pin to be an output
Serial.begin (9600);
}
void setColor(int red, int green, int blue) // New defined function to allow RGB to display colour through RGB code
{
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds){ // the sound producing functions
int x;
long delayAmount = (long)(1000000/frequencyInHertz);
long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
for (x=0;x
void loop (){
char key = keypad.getKey();
int value = analogRead(soundPin);//read the value of A0
Serial.println(value);//print the value
if (key != NO_KEY) {
Serial.println(key);
}
if (key==‘a’){
beep(speakerPin,2093,100);
setColor(218, 112, 214);
}
if (key==‘b’){
beep(speakerPin,2349,100);
setColor(218, 112, 214);
}
if (key==‘c’){
beep(speakerPin,2637,100);
setColor(218, 112, 214);
}
if (key==‘d’){
beep(speakerPin,2793,100);
setColor(218, 112, 214);
}
if (key==‘e’){
beep(speakerPin,3136,100);
setColor(218, 112, 214);
}
if (key==‘f’){
beep(speakerPin,3520,100);
setColor(218, 112, 214);
}
if (key==‘g’){
beep(speakerPin,3951,100);
setColor(218, 112, 214);
}
if (key==‘h’){
beep(speakerPin,4186,100);
setColor(218, 112, 214);
}
if (key==‘i’){
beep(speakerPin,2093,100);
setColor(230, 230,0 );
}
if (key==‘j’){
beep(speakerPin,2349,100);
setColor(180,255,130);
}
if (key==‘k’){
beep(speakerPin,2637,100);
setColor(130,255,130);
}
if (key==‘l’){
beep(speakerPin,2739,100);
setColor(130,220,130);
}
if (key==‘m’){
beep(speakerPin,3136,100);
setColor(0,255,255);
}
if (key==‘n’){
beep(speakerPin,3520,100);
setColor(0,220,255);
}
if (key==‘o’){
beep(speakerPin,3951,100);
setColor(0,69,255);
}
if (key==‘p’){
beep(speakerPin,4186,100);
setColor(255, 0,255 );
}
}
-
led
+關注
關注
242文章
23308瀏覽量
661571 -
鋼琴
+關注
關注
0文章
9瀏覽量
7797
發布評論請先 登錄
相關推薦
評論