Non je n'arrive pas à démarrer et arrêter le moteur par un applaudissement. J'arrive par contre à effectuer une autre action SEULEMENT à la fin du cycle du premier clap, il n'y a pas d'interruption
Voici le code que j'essaye en ce moment :
#include <FastLED.h>
#define LED_PIN 3
#define NUM_LEDS 100
CRGB leds[NUM_LEDS];
int Distance = 0;
int Distance2 = 0;
const char digitalPin = 6;
void setup(){
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
pinMode(digitalPin, INPUT);
pinMode(3, INPUT);
int nb=100;
bool flag = false;
}
void loop() {
if(digitalRead(digitalPin))
{
if (flag==true)
{
Moteur1(); // Vitesse moteur 1
Lumiere1(); // Couleur Lumiere 1
flag=false;
}
else
{
Moteur2(); // Vitesse moteur accelere
Lumiere2() // Couleur lumiere changé
flag=true;
}
delay(50);
}
}
void Lumiere1() {
for (int i = 0; i <= nb; i++) {
leds[i] = CRGB (0, 0, 255);
FastLED.show();
delay(20);
}
}
void Lumiere2() {
for (int i = 0; i <= nb; i++) {
leds[i] = CRGB ( 255, 0, 0);
FastLED.show();
delay(20);}
}
void Moteur1(){ // VITESSE MOTEUR 1
int P1=5000, P2=3000, P3=2000;
while (Distance!=10) { //PHASE 1
digitalWrite(9,HIGH);
digitalWrite(8, HIGH);
delayMicroseconds(P1); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P1);
Distance = Distance + 1;
}
if (Distance == 10 ){
//--------------------------------------------
while(Distance!=40){ // PHASE 2
digitalWrite(8, HIGH);
delayMicroseconds(P2); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P2);
Distance = Distance + 1;
}}
if (Distance == 40 ){
//--------------------------------------------
while(Distance!=500) { // PHASE 3
digitalWrite(8, HIGH);
delayMicroseconds(P3); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P3);
Distance = Distance + 1;
}}
if (Distance ==500) {
//--------------------------------------------
while (Distance!=520) { // PHASE 4
digitalWrite(8, HIGH);
delayMicroseconds(P1); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P1);
Distance = Distance + 1;
}}
if (Distance == 520) // DISTANCE MONTEE
{delayMicroseconds(2000);}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
while (Distance2!=10) { //DISTANCE MONTEE PHASE 1
digitalWrite(9,LOW);
digitalWrite(8, HIGH);
delayMicroseconds(P1); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P1);
Distance2 = Distance2 + 1;
}
if (Distance2 == 10 ) {
//---------------------------------------------
while(Distance2 != 40){ // PHASE 2
digitalWrite(8, HIGH);
delayMicroseconds(P2); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P2);
Distance2 = Distance2 + 1;
}}
if (Distance2 == 40 ){
//--------------------------------------------
while(Distance2 != 500) { // PHASE 3
digitalWrite(8, HIGH);
delayMicroseconds(P3); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P3);
Distance2 = Distance2 + 1;
}}
if (Distance2 == 500) {
//--------------------------------------------
while (Distance2 != 520) { //¨PHASE 4
digitalWrite(8,HIGH);
digitalWrite(8, LOW);
delayMicroseconds(P1); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P1);
Distance2 = Distance2 + 1;
}}
if (Distance2 == 520) // DISTANCE MONTEE
{delayMicroseconds(2000);}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
Distance = 0;
Distance2 = 0;
}
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
void Moteur2(){ // VITESSE MOTEUR 2
int P1=4000, P2=2000, P3=1000;
while (Distance!=10) { //PHASE 1
digitalWrite(9,HIGH);
digitalWrite(8, HIGH);
delayMicroseconds(P1); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P1);
Distance = Distance + 1;
}
if (Distance == 10 ){
//--------------------------------------------
while(Distance!=40){ // PHASE 2
digitalWrite(8, HIGH);
delayMicroseconds(P2); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P2);
Distance = Distance + 1;
}}
if (Distance == 40 ){
//--------------------------------------------
while(Distance!=500) { // PHASE 3
digitalWrite(8, HIGH);
delayMicroseconds(P3); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P3);
Distance = Distance + 1;
}}
if (Distance == 500) {
//--------------------------------------------
while (Distance!=520) { // PHASE 4
digitalWrite(8, HIGH);
delayMicroseconds(P1); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P1);
Distance = Distance + 1;
}}
if (Distance == 520) // DISTANCE MONTEE
{delayMicroseconds(2000);}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
while (Distance2!=10) { //DISTANCE MONTEE PHASE 1
digitalWrite(9,LOW);
digitalWrite(8, HIGH);
delayMicroseconds(P1); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P1);
Distance2 = Distance2 + 1;
}
if (Distance2 == 10 ) {
//---------------------------------------------
while(Distance2 != 40){ // PHASE 2
digitalWrite(8, HIGH);
delayMicroseconds(P2); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P2);
Distance2 = Distance2 + 1;
}}
if (Distance2 == 40 ){
//--------------------------------------------
while(Distance2 != 500) { // PHASE 2
digitalWrite(8, HIGH);
delayMicroseconds(P3); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P3);
Distance2 = Distance2 + 1;
}}
if (Distance2 == 500) {
//--------------------------------------------
while (Distance2 != 520) { //¨PHASE 4
digitalWrite(8,HIGH);
digitalWrite(8, LOW);
delayMicroseconds(P1); // IMPULSION
digitalWrite(8, LOW);
delayMicroseconds(P1);
Distance2 = Distance2 + 1;
}}
if (Distance2 == 520) // DISTANCE MONTEE
{delayMicroseconds(2000);}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
Distance = 0;
Distance2 = 0;
}
Voici ce que je veux faire ici :
CLAP > Moteur tourne + Bandeau LED activé
CLAP > Changement vitesse Moteur + Changement couleur Bandeau LED
Ce que je veux faire ensuite :
Moteur tourne non stop + Bandeau LED
CLAP > Changement couleur bandeau LED
CLAP > Changement encore