步驟1:材料
對于這個簡單的項目,您需要:
-arduino MEGA
-揚聲器或蜂鳴器
-麥克風模塊
-UTFT屏幕的arduino防護板
我決定使用arduino MEGA該項目的主板有兩個原因:它有很多內(nèi)存,并且有很多引腳。
您不能在該項目中使用arduino UNO,因為當插入UTFT屏幕時所有的針腳都是隱藏的(麥克風和揚聲器不再可用),并且內(nèi)存不足(UTFT庫很大)。
步驟2:接線
豌豆ker插入arduino的D40和GND引腳。
麥克風插入GND(“ G”),5V(“ +”)和A10(“ A0”)引腳。
UTFT屏幕屏蔽層就像普通的屏蔽層。
UTFT屏幕屏蔽層與arduino MEGA并不完全兼容:arduino板的USB插頭太大。
為解決此問題,我將UTFT屏幕插入另一個arduino屏蔽罩(具有更長的插針),然后又將其都插入了arduino。
步驟3:校準麥克風
要校準麥克風,您需要一把螺絲起子和一臺計算機。
首先,上傳以下內(nèi)容編碼到您的arduino:
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(val);
delay(100);
}
然后在沒有聲音時轉(zhuǎn)到串行監(jiān)視器并通過用螺絲刀轉(zhuǎn)動電位計來校準麥克風,該值必須約為30?40。/p》
吹麥克風時,該值必須大于100。
請確保說話時(即使是很大聲)的值小于100。
第4步:代碼
這是項目的代碼。
它在UTFT上顯示帶有蠟燭的生日蛋糕,并與揚聲器播放“生日快樂” 。蛋糕是用矩形制成的。
該程序需要UTFT庫。
#include
extern uint8_t BigFont[];
//change these values according your screen model
UTFT myGLCD(ITDB28,A5,A4,A3,A2);
int melody[]= {196,196,220,196,262,247,196,196,220,196,294,262,196,196,392,330,262,247,220,349,349,330,262,294,262};
int noteDurations[] = {8,8,4,4,4,2,8,8,4,4,4,2,8,8,4,4,4,4,3,8,8,4,4,4,2};
int val = 0;
void setup() {
myGLCD.InitLCD();
myGLCD.setFont(BigFont);
myGLCD.fillScr(20, 200, 150); //blue background
myGLCD.setColor(200, 125, 50); //brown cake
myGLCD.fillRect(100, 90, 220, 160);
myGLCD.setColor(255,255, 255); //white icing
myGLCD.fillRect(100, 90, 220, 105);
myGLCD.setColor(255,50, 50); //red lines
myGLCD.fillRect(100, 120, 220, 123);
myGLCD.fillRect(100, 140, 220, 143);
myGLCD.setColor(255,255, 0); //yellow line
myGLCD.fillRect(100, 130, 220, 133);
myGLCD.setColor(255,170,255); //pink candles
myGLCD.fillRect(128, 70, 132, 90);
myGLCD.fillRect(158, 70, 162, 90);
myGLCD.fillRect(188, 70, 192, 90);
myGLCD.setColor(255,255,0); //fire of the candles
myGLCD.fillCircle(130, 62, 5);
myGLCD.fillCircle(160, 62, 5);
myGLCD.fillCircle(190, 62, 5);
myGLCD.setColor(0,255,0); //happy birthday message
myGLCD.print(“HAPPY BIRTHDAY !”,CENTER, 200);
for (int thisNote = 0; thisNote 《 26; thisNote++) { //plays the melody
int noteDuration = 1000/noteDurations[thisNote];
tone(40, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.60;
delay(pauseBetweenNotes);
noTone(40);
}
}
void loop() {
val = analogRead(10); //when you blow on the microphone
if (val 》 100) {
myGLCD.setColor(20, 200, 150); //turns off the candles
myGLCD.fillCircle(130, 62, 5);
myGLCD.fillCircle(160, 62, 5);
myGLCD.fillCircle(190, 62, 5);
myGLCD.setColor(255,255,255); //and displays “congratulations” message
myGLCD.print(“CONGRATULATIONS !!!”,CENTER, 10);
delay(10000);
myGLCD.clrScr(); //clear screen after 10s
}
}
-
Arduino
+關注
關注
187文章
6464瀏覽量
186684
發(fā)布評論請先 登錄
相關推薦
評論