int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup()
{
Serial.begin(19200);
pinMode(10, INPUT); //D10
delay(2000);//等待2秒钟播放器初始化完成
Serial.println("\\:v 250"); // 音量设置最大 数字 0-255 数字越大音量越大
delay(50);
}
//接收串口命令字符,执行相应操作
void loop()
{
int val,i;
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey) // if keypress is detected
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey)
{
oldkey = key;
if (key >=0){
switch(key)
{
case 0:
Serial.println("\\:p");//暂停播放
Serial.println("OK");
break;
case 1:
Serial.println("\\:s");//继续播放
Serial.println("OK");
break;
case 2:
Serial.println("\\:n"); // 播放下一首
Serial.println("OK");
break;
case 3:
Serial.println("\\:u"); // 播放上一首
Serial.println("OK");
break;
case 4://播放名称为yes的音频文件
//注意:必须将音量控制放在播放之前
Serial.println("\\:v 250"); // 音量设置250 数字 0-255 数字越大音量越大
//Serial.println("\\yes");
Serial.println("OK");
break;
}
}
}
}
delay(100);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{
return k;
}
}
if (k >= NUM_KEYS)k = -1; // No valid key pressed
return k;
}
|