程式碼
const int speaker=13;
const int sw[8]={4,5,6,7,8,9,10,11};
const int frequency[8]={523,587,659,694,784,880,988,1046};
int i;
int val;
void setup() {
for(i=0;i<8;i++)
pinMode(sw[i],INPUT_PULLUP);
}
void loop() {
for (i=0;i<8;i++)
{
val=digitalRead(sw[i]);
if(val==0)
tone(speaker,frequency[i],100);
}
}
類比輸入端電路,只用1個類比輸入端腳位,可以講分壓的原理,但要克服按鍵彈跳時造成的雜訊的問題。
操作影片
//救護車 1070921
void setup() {
pinMode(8, OUTPUT);
}
void loop() {
tone(8, 523, 500); // 在 pin8 上輸出聲音,每個音階響 0.5 秒
delay(800); // 間隔一段時間後再播放下一個音階
tone(8, 698, 500); // 在 pin8 上輸出聲音,每個音階響 0.5 秒
delay(800); // 間隔一段時間後再播放下一個音階
}
//電話鈴聲標準音 1070921
const int speaker=8; //數位接腳8連接至喇叭
void setup()
{ }
void loop()
{
for(int i=0;i<10;i++) //振鈴10次
{
tone (speaker,1000); //輸出1000Hz音調
delay(50); //延遲50ms
tone(speaker,500); //輸出500Hz音調
delay(50); //延遲50ms
}
noTone(speaker); //靜音2秒
delay(2000);
}