我正在写一个小程序,在蜂鸣器上播放一首歌曲。 我正在创建一个期望二维数组的函数。 该数组可以包含无限行和两个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