步驟1:材料
對(duì)于這個(gè)簡(jiǎn)單的項(xiàng)目,您需要:
-arduino MEGA
-揚(yáng)聲器或蜂鳴器
-麥克風(fēng)模塊
-UTFT屏幕的arduino防護(hù)板
我決定使用arduino MEGA該項(xiàng)目的主板有兩個(gè)原因:它有很多內(nèi)存,并且有很多引腳。
您不能在該項(xiàng)目中使用arduino UNO,因?yàn)楫?dāng)插入U(xiǎn)TFT屏幕時(shí)所有的針腳都是隱藏的(麥克風(fēng)和揚(yáng)聲器不再可用),并且內(nèi)存不足(UTFT庫(kù)很大)。
步驟2:接線
豌豆ker插入arduino的D40和GND引腳。
麥克風(fēng)插入GND(“ G”),5V(“ +”)和A10(“ A0”)引腳。
UTFT屏幕屏蔽層就像普通的屏蔽層。
UTFT屏幕屏蔽層與arduino MEGA并不完全兼容:arduino板的USB插頭太大。
為解決此問(wèn)題,我將UTFT屏幕插入另一個(gè)arduino屏蔽罩(具有更長(zhǎng)的插針),然后又將其都插入了arduino。
步驟3:校準(zhǔn)麥克風(fēng)
要校準(zhǔn)麥克風(fēng),您需要一把螺絲起子和一臺(tái)計(jì)算機(jī)。
首先,上傳以下內(nèi)容編碼到您的arduino:
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(val);
delay(100);
}
然后在沒(méi)有聲音時(shí)轉(zhuǎn)到串行監(jiān)視器并通過(guò)用螺絲刀轉(zhuǎn)動(dòng)電位計(jì)來(lái)校準(zhǔn)麥克風(fēng),該值必須約為30?40。/p》
吹麥克風(fēng)時(shí),該值必須大于100。
請(qǐng)確保說(shuō)話時(shí)(即使是很大聲)的值小于100。
第4步:代碼
這是項(xiàng)目的代碼。
它在UTFT上顯示帶有蠟燭的生日蛋糕,并與揚(yáng)聲器播放“生日快樂(lè)” 。蛋糕是用矩形制成的。
該程序需要UTFT庫(kù)。
#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
+關(guān)注
關(guān)注
188文章
6469瀏覽量
186965
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論