我正在寫一個小程序,在蜂鳴器上播放一首歌曲。 我正在創建一個期望二維數組的函數。 該數組可以包含無限行和兩個coloumns。 第一列包含一個先前定義的常數,它是音符的頻率,第二列是長度。Arduino通過多維陣列
我googled如何傳遞一個數組到一個函數,我想我正在做,因爲我讀,但由於某種原因,該函數什麼都不做。 正如我想出添加一些Serial.print()調用,我發現該函數看到一個0長度的數組。
//Definitons of frequencies and pinout and tempo
...
unsigned int mySong[][2]{
{G2, 2},
{B2, 1},
{D3, 1},
{G3, 2}
};
void playSong(unsigned int song[][2])
{
Serial.println(sizeof(song)/sizeof(song[0]));
for(int i = 0; i<sizeof(song)/sizeof(song[0]); i++)
{
tone(buzzerPin, song[i][0], (song[i][1]*tempo));
Serial.println(song[i][0]);Serial.println(song[i][1]);
delay(song[i][1]*tempo);
}
}
void setup() {
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
playSong(mySong);
}
但是,如果我改變每「歌」到「mySong」,它工作正常,並播放音樂和串口監視器讀數是正確的,所以建議我找到出路應該是不錯的,數組和常量也應該正常工作,所以當我將它傳遞給函數時,數據會丟失。
我可能會做錯什麼?
在此先感謝您的幫助。
非常感謝,它解決了這個問題。 :) – dagoston93