Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

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

#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));
}
}
Похожие вопросы