#define smplcnt 200 int focus = 12; int trigger= 13; int solar = 0; int vals[smplcnt]; unsigned long time0; unsigned long time1; int lastval; unsigned long retard; int minid1; int minid2; int minval; int timedelay; void setup() { pinMode(focus, OUTPUT); pinMode(trigger, OUTPUT); digitalWrite(focus, LOW); digitalWrite(trigger, HIGH); delay(3000); retard=12000; Serial.begin(9600); } void loop() { vals[0] = analogRead(solar); if(vals[0]<0.985*lastval){ time0 = micros(); //enregistrement des echantillons for(int i=1;i<smplcnt;i++){ vals[i] = analogRead(solar); //delayMicroseconds(10); } time1= micros(); //recherche du min minval = vals[0]; for(int i=1;i<smplcnt;i++){ if(vals[i]<minval){ minid1 = i; minval = vals[i]; } if(vals[i]==minval){ minid2 = i; } } timedelay = (time1-time0)*(minid2+minid2)/2/smplcnt; //Serial.print((String)(minid1)+"=>"+ (String)(minid2) + "(" + (String)(timedelay) + ")/"); time0+= timedelay; if(minid2<100){ while(micros()-time0<retard); digitalWrite(trigger, LOW); delay(100); retard+=300; } // Serial.println(retard); }else{ digitalWrite(trigger, HIGH); //Serial.println(vals[0]); } //delayMicroseconds(100); lastval=vals[0]; }