Top.Mail.Ru
Ответы

Кто шарит за плату Ардуино? Нужна хэлпа!

Дело такое, есть платы,arduino nano, mini, есть esp8266(nodemcu) и esp 001,
Нужен код. будут подключены к плате 3 светодиодные ленты, и плеер (dfplayer)
Первое: надо что бы эти ленты мигали рандомно, грубо говоря вспышками, на протяжении 5секунд.
Второе: нужно что бы эта анимация мигания запускалась так же рандомно, но не меньше чем через 5 секунд после предыдущего запуска анимации, и не позже чем через 30 секунд после предыдущей анимации.
Третье: нужно что бы на плеере запускался 1 предзаписаный звук, во время запуска анимации.
Четвертое: нужно знать название пинов, к которым будет подключаться светодиодная лента(5в) и пины подключения dfplayer'а.
Если здесь есть люди которые в этом шарят, и спокойно на коленке могут написать такой код, то буду очень вам благодарен!

По дате
По рейтингу
Аватар пользователя
Мастер
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
 #include <SoftwareSerial.h> 
#include <DFRobotDFPlayerMini.h> 
 
#define LED_PIN_1 5  // Пин для первой светодиодной ленты 
#define LED_PIN_2 6  // Пин для второй светодиодной ленты 
#define LED_PIN_3 7  // Пин для третьей светодиодной ленты 
#define DFPLAYER_RX 10 // RX пин для DFPlayer 
#define DFPLAYER_TX 11 // TX пин для DFPlayer 
 
SoftwareSerial mySerial(DFPLAYER_RX, DFPLAYER_TX); 
DFRobotDFPlayerMini myDFPlayer; 
 
void setup() { 
  pinMode(LED_PIN_1, OUTPUT); 
  pinMode(LED_PIN_2, OUTPUT); 
  pinMode(LED_PIN_3, OUTPUT); 
   
  mySerial.begin(9600); 
  Serial.begin(9600); 
 
  if (!myDFPlayer.begin(mySerial)) { 
    Serial.println("Ошибка подключения к DFPlayer"); 
    while (true); // Остановить выполнение, если DFPlayer не подключен 
  } 
} 
 
void loop() { 
  static unsigned long lastAnimationTime = 0; 
  unsigned long currentMillis = millis(); 
   
  // Проверяем, прошло ли достаточно времени для новой анимации 
  if (currentMillis - lastAnimationTime >= random(5000, 30000)) { 
    lastAnimationTime = currentMillis; 
     
    playRandomAnimation(); 
    myDFPlayer.play(1); // Запуск звука 
    delay(5000); // Длительность анимации 
  } 
} 
 
void playRandomAnimation() { 
  const int ledPins[] = {LED_PIN_1, LED_PIN_2, LED_PIN_3}; 
   
  for (int i = 0; i < sizeof(ledPins) / sizeof(ledPins[0]); i++) { 
    digitalWrite(ledPins[i], HIGH); 
    delay(random(100, 1000)); // Случайная задержка между включением и выключением 
    digitalWrite(ledPins[i], LOW); 
     
    // Добавляем небольшую паузу перед следующим светодиодом 
    delay(random(50, 200)); 
  } 
} 


Видео по теме