电子说
步骤1:材料
对于这个简单的项目,您需要:
-arduino MEGA
-扬声器或蜂鸣器
-麦克风模块
-UTFT屏幕的arduino防护板
我决定使用arduino MEGA该项目的主板有两个原因:它有很多内存,并且有很多引脚。
您不能在该项目中使用arduino UNO,因为当插入UTFT屏幕时所有的针脚都是隐藏的(麦克风和扬声器不再可用),并且内存不足(UTFT库很大)。
步骤2:接线
豌豆ker插入arduino的D40和GND引脚。
麦克风插入GND(“ G”),5V(“ +”)和A10(“ A0”)引脚。
UTFT屏幕屏蔽层就像普通的屏蔽层。
UTFT屏幕屏蔽层与arduino MEGA并不完全兼容:arduino板的USB插头太大。
为解决此问题,我将UTFT屏幕插入另一个arduino屏蔽罩(具有更长的插针),然后又将其都插入了arduino。
步骤3:校准麦克风
要校准麦克风,您需要一把螺丝起子和一台计算机。
首先,上传以下内容编码到您的arduino:
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(10);
Serial.println(val);
delay(100);
}
然后在没有声音时转到串行监视器并通过用螺丝刀转动电位计来校准麦克风,该值必须约为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
}
}
全部0条评论
快来发表一下你的评论吧 !