Как tmrpcm.play("1.wav") зависит от обратной связи LDR?

У меня есть динамик, работающий с tmrpcm.play, но он воспроизводится только тогда, когда arduino включен или сброшен. Могу ли я заставить .wav играть другими способами? Я не хочу, чтобы файл воспроизводился, когда я открываю шкаф и на мой резистор LDR воздействует свет.

#include <SD.h>                           //включить библиотеку модулей SD
#include <TMRpcm.h>                       //включить библиотеку управления динамиками

#define SD_ChipSelectPin 4                //define CS pin

TMRpcm tmrpcm;                            //создание объекта для библиотеки динамиков

const int ledPin = 8;
const int buzzerPin = 10;
const int ldrPin = A0;
int ledState = LOW;  
int buzstate = 600;
unsigned long previousMillis = 0;        

int ldrStatus = analogRead(ldrPin);  //считывает состояние значения LDR

const long interval = 400; 

void setup () {

  tmrpcm.speakerPin = 9;    
  Serial.begin(9600);

  pinMode(ledPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(ldrPin, INPUT);
   
 }
void LedAndBuzzer(){
   unsigned long currentMillis = millis();
  int ldrStatus = analogRead(ldrPin);  //считывает состояние значения LDR

 if (ldrStatus >= 400) {

  if (currentMillis - previousMillis >= interval) {
    // сохранить последний раз, когда вы мигали светодиодом
    previousMillis = currentMillis;

    // если светодиод выключен, включите его и наоборот:
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }

    // установите светодиод с ledState переменной:
    digitalWrite(ledPin, ledState);
    digitalWrite(buzzerPin, ledState);
}}
}
void soundon(){
    if (!SD.begin(SD_ChipSelectPin)) {      //посмотрите, присутствует ли карта и может ли она быть инициализирована
    
    return;                               //не делайте больше ничего, если нет
  }
  else {
  tmrpcm.setVolume(6);                    //от 0 до 7. Установите уровень
  tmrpcm.play("4.wav"); }
}
 
void loop() {
    

    
  }

, 👍1

Обсуждение

Да, это вполне возможно. Вам нужно написать код для этого. Что вы пробовали до сих пор? Вы знаете, как читать LDR? Вы искали учебные пособия?, @chrisl

@chrisl спасибо за ответы, да, я много гуглил, но я совсем новичок в программировании и работе с arduino. Это код (обновлен пост), который при работе над которым вы знаете. Есть еще один элемент, помимо моего первоначального вопроса, я хочу, чтобы он запускал цикл светодиода/зуммера одновременно с .воспроизводится wav-файл. Возможно ли это?, @Elisabot

Является ли функция tmrpcm.play() функцией блокировки?, @Fahad

@Фахад я не знаю, что это значит, @Elisabot

Вы сказали: "Я хочу, чтобы он запускал светодиодную/зуммерную петлю в то же время, что и .воспроизводится файл wav'. Поэтому мне было интересно, когда вы вызываете функцию " tmrpcm.play ()", она возвращается немедленно или возвращается после завершения воспроизведения файла wave., @Fahad

@Fahad tmrpcm.play() не блокируется. Он начинает воспроизводиться, затем tmrpcm.stopPlayback() останавливает музыку, и tmrpcm.isPlaying() возвращает состояние проигрывателя., @Dorian

@Dorian отлично, спасибо. @Elisabot, значит, вы хотите воспроизводить wav-файл, когда ваш LDR >= 400, и останавливать музыку, когда меньше?, @Fahad