Помогите разобраться с назначением функции на кнопки

Astronaut
Offline
Зарегистрирован: 10.02.2016

Есть проект простенького семплера. В данный момент умеет только считывать состояние цифрового входа и проигрывать указанный звуковой файл с SD карты. 

Подскажите что почитать что бы понять как реализовать следующее:
У меня 8 кнопок, и необходимо что бы при удержании кнопки можно было назначить на нее другой звуковой файл с помощью энкодера. 

Как мне научить ардуину читать список файлов на карте, и назначать их на кнопки? 
 

Код:
 

ф#include <pcmConfig.h>
#include <pcmRF.h>
#include <TMRpcm.h>

#include <SD.h>                      // need to include the SD library
//#define SD_ChipSelectPin 53  //example uses hardware SS pin 53 on Mega2560
#define SD_ChipSelectPin 4  //using digital pin 4 on arduino nano 328, can use other pins.
#include <SPI.h>

TMRpcm tmrpcm;   // create an object for use in this sketch
 
unsigned long time = 0;

void setup(){
 pinMode(14,INPUT);  //Define A0 as digital input.
 pinMode(15,INPUT);  //Define A0 as digital input.
 pinMode(16,INPUT);  //Define A0 as digital input.
 pinMode(17,INPUT);  //Define A0 as digital input.
 pinMode(18,INPUT);  //Define A0 as digital input.
 pinMode(19,INPUT);  //Define A0 as digital input.

digitalRead(14) == LOW;
digitalRead(15) == LOW;
digitalRead(16) == LOW;
digitalRead(17) == LOW;
digitalRead(18) == LOW;
digitalRead(19) == LOW;


 
    tmrpcm.speakerPin = 9; //11 on Mega, 9 on Uno, Nano, etc
 
  if (!SD.begin(SD_ChipSelectPin)) {  // see if the card is present and can be initialized:
  return;   // don't do anything more if not
  }
 tmrpcm.volume(1);
 tmrpcm.play("start.wav");
 delay (1000);
}


void loop(){ 
  
if (digitalRead(14) == HIGH) {

tmrpcm.play("1.wav");
delay (5);
}


if (digitalRead(15) == HIGH) {

tmrpcm.play("2.wav");
delay (5);
}



if (digitalRead(16) == HIGH) {

tmrpcm.play("3.wav");
delay (5);
}


if (digitalRead(17) == HIGH) {

tmrpcm.play("4.wav");
delay (5);
}



if (digitalRead(18) == HIGH) {

tmrpcm.play("5.wav");
delay (5);
}


if (digitalRead(19) == HIGH) {

tmrpcm.play("6.wav");
delay (5);
}


}

 

satelit
Offline
Зарегистрирован: 12.12.2015
 я тоже голову ломаю, покам у меня работает если вместо if  вставить функцию  while
while (digitalRead(14)==HIGH){
 if(tmrpcm.isPlaying()==0)  tmrpcm.play("1.wav");
 }
Клапауций 232
Offline
Зарегистрирован: 05.04.2016