Bonjour,
Je suis totalement novice (48h) dans le monde Arduino mais j'ai dû m'y mettre pour un projet spécifique.
Malgré que je sois une tanche j'ai réussi à faire fonctionner ce que je voulais, sauf que mes 2 loops doivent tourner en simultané plus ou moins en permanence, à savoir:
une loop de sons mp3 via dfplayer (fonctionne très bien en solo)
une loop de leds rgb séquencées en fading (fonctionnent très bien en solo)
en voulant ''grouper'' les 2 codes, le résultat est que mes leds jouent 1 séquence, puis les sons prennent le relais mais les leds ne jouent plus la séquence et restent allumées sur une couleur.
Dans les 2 cas ils sont en fonction delay.
Après quelques recherches j'ai cru comprendre que le plus adapté était d'utiliser millis et non delay, mais honnêtement ça me dépasse un peu.
Bien que j'arrive à assimiler le principe, question programmation je suis quasi zéro.
y aurait-il un code simplifié de faire tourner mon arc en ciel de leds en même temps que ma séquence de sons?
ou une piste pour m'aider svp
(arduino UNO r3)
un immense merci d'avance !
Voici mon code (enfin, des codes copiés-collés-modifiés, plutôt)
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
const int ledRouge=6;
const int ledVert=5;
const int ledBleu=3;
const int DELAY=30;
void setup()
{
pinMode(ledRouge, OUTPUT); //Patte 6 reliée à la cathode de la LED rouge
pinMode(ledVert, OUTPUT); //Patte 5 reliée à la cathode de la LED vert
pinMode(ledBleu, OUTPUT); //Patte 3 reliée à la cathode de la LED bleu
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true);
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(25); //Set volume value. From 0 to 30
}
void loop()
{
// fade from green to blue
for(int i=0; i<255; i++) {
analogWrite(ledRouge, 0);
analogWrite(ledVert, 255-i);
analogWrite(ledBleu, i);
delay(DELAY);
}
// fade from blue to red
for(int i=0; i<255; i++) {
analogWrite(ledRouge, i);
analogWrite(ledVert, 0);
analogWrite(ledBleu, 255-i);
delay(DELAY);
}
// fade from red to green
for(int i=0; i<255; i++) {
analogWrite(ledRouge, 255-i);
analogWrite(ledVert, i);
analogWrite(ledBleu, 0);
delay(DELAY);
}
myDFPlayer.play(1); //Play the first mp3
delay(5000);
myDFPlayer.next(); //Play next mp3
delay(5000);
myDFPlayer.next(); //Play next mp3
delay(5000);
myDFPlayer.next(); //Play next mp3
delay(5000);
}