// 3 led a jouant a la noire, croche et triolet
// un potentiometre 10k en A0 : controle le tempo général...
// une photo resistance en A1 : controle un effet de delay
 
#define led1 5
#define led2 9  
#define led3 10  
//#define factor 10  //factor for pwm tone !
int factor = 10; 
unsigned long previousMillis[3]; //[x] = number of leds
 
void setup() { 
  pinMode(led1, OUTPUT);   
  pinMode(led2, OUTPUT);  
  pinMode(led3, OUTPUT);  
 
  Serial.begin(9600);
}
void loop() {
 
int sensorValue = analogRead(A1);
sensorValue = map(sensorValue, 0, 1023, 2000, 0);
 
  if(sensorValue > 1990) { 
sensorValue == 10000;
}
int sensorValueB = analogRead(A0);
sensorValueB = map(sensorValueB, 0, 1023, 1023, 0);
 
int sensorValueC = analogRead(A2);
factor = map(sensorValueC, 0, 1023, 2, 200);
 
  if(sensorValueB > 800) { 
 BlinkLedSimple(led1, sensorValue, 0,sensorValueB);   //BlinkLed( which led, interval, one of the stored prevMillis
 BlinkLedSimple(led2, sensorValue/3, 1,sensorValueB);  //last parameters must be different for each led
 BlinkLedSimple(led3, sensorValue/2, 2,sensorValueB); 
}
 
  if(sensorValueB > 400 && sensorValueB < 800 ) { 
 BlinkLed(led1, sensorValue, 0,sensorValueB);   //BlinkLed( which led, interval, one of the stored prevMillis
 BlinkLed(led2, sensorValue/3, 1,sensorValueB);  //last parameters must be different for each led
 BlinkLed(led3, sensorValue/2, 2,sensorValueB); 
}
 
  if(sensorValueB < 400) { 
 BlinkLedSuper(led1, sensorValue, 0,sensorValueB);   //BlinkLed( which led, interval, one of the stored prevMillis
 BlinkLedSuper(led2, sensorValue/3, 1,sensorValueB);  //last parameters must be different for each led
 BlinkLedSuper(led3, sensorValue/2, 2,sensorValueB); 
}
 
Serial.print("potentiometre");
  Serial.println(sensorValue);
 
Serial.print("ldr");
  Serial.println(sensorValueB);
 // delay(1); 
 
 
}
 
///Simple blink
  void BlinkLedSimple (int led, int interval, int array, int pwm){    
   if (((long)millis() - previousMillis[array]) >= interval){ 
    previousMillis[array]= millis(); //stores the millis value in the selected array
       digitalWrite(led, !digitalRead(led)); //changes led state
  }}
 
///delayyyy blink
void BlinkLed (int led, int interval, int array, int pwm){   
   if (((long)millis() - previousMillis[array]) >= interval){ 
 
    previousMillis[array]= millis(); //stores the millis value in the selected array
 
    digitalWrite(led, !digitalRead(led)); //changes led state
    delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
    delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
  }
}
 
///super delayyyy blink
void BlinkLedSuper (int led, int interval, int array, int pwm){   
   if (((long)millis() - previousMillis[array]) >= interval){ 
 
    previousMillis[array]= millis(); //stores the millis value in the selected array
 
    digitalWrite(led, !digitalRead(led)); //changes led state
    delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
    delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
        delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
    delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
        delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
    delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
        delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
    delay (pwm/factor);
    digitalWrite(led, !digitalRead(led)); //changes led state
  }
}