Je te remercie pour tes explications, j'avance petit à petit.
J'ai donc suivi tes explications à la lettre, en essayant de comprendre, c'est beaucoup plus clair mais ça ne fonctionne pas.
La led verte s'allume sans problème lorsque je coupe l'IR mais la led rouge s'allume uniquement quand le potard est à 0, si je le tourne pour qu'il affiche 2 ça ne marche plus, même si j'attends un bon moment.
Je pense qu'il y a un bug dans mon programme, j'ai dû raté quelque chose.
// include the library code:
#include <LiquidCrystal.h>
// initialisation librairie LCD
const int RS=2;
const int E=3;
const int D4=4;
const int D5=5;
const int D6=6;
const int D7=7;
const int RVar=0; //potentiomètre 1 "col"
const int RVar1=1; //potentiomètre 2 "fond"
const int RVar2=2; // potentiomètre 3 "Travers"
const int photoIR=3; //cellule mesure de lumière ARCHE
const int Ledverte=8;
const int Ledrouge=9;
int timerledverte=0;
int timerledrouge=0;
int sensorValue=0;
long time=0;
int timeHasCome=0;
int mesureIR=0; //Infrarouge initialisation
int mesureBrute=0; // Potard initialisation
int seuil=500; //Infrarouge seuil sensiblité passage pièce
float mesure;
float potard;
float potard1;
float potard2;
unsigned long time1;
unsigned long time2;
int etat;
int val=0;
LiquidCrystal lcd(RS,E,D4,D5,D6,D7);
void setup() {
// set up LCD indication nb colonne et case:
lcd.begin(16, 2);
lcd.clear();
delay(10);
// Print a message to the LCD.
lcd.print("Piochel 2013");
delay(1000);
lcd.clear();
delay (10);
lcd.print("Initialisation...");
delay(2000);
lcd.clear();
delay (10);
pinMode (Ledverte, OUTPUT);
pinMode (Ledrouge, OUTPUT);
Serial.begin(115200);
}
void loop() {
// initialisation LCD
lcd.home();
lcd.print("Col");
lcd.setCursor(6,0);
lcd.print("Fond");
lcd.setCursor(13,0);
lcd.print("Tra");
// Passage pièce devant InfraRouge
mesureIR=analogRead(photoIR);
if (mesureIR<seuil) {//Serial.println("Piece detecte");
digitalWrite (Ledverte, HIGH);
}
else {
digitalWrite(Ledverte,LOW);
}
do {
mesureIR = analogRead(photoIR);
} while(mesureIR < seuil);
// Mesure et décalage temps et inscription sur LCD
// Initialisation 1er potard
etat=digitalRead(Ledverte);
timerledverte=millis();
mesureBrute=analogRead(RVar);
mesure=map(mesureBrute,0,1023,0.0,100.0);
potard=mesure;
lcd.setCursor(0,1);
lcd.print(potard,0);
if (mesure < 1000) lcd.print(" ");
if (mesure < 100) lcd.print(" ");
if (mesure < 10) lcd.print(" ");
timerledrouge = timerledverte + (potard*1000);//nouveau prog
if(etat==HIGH & timerledrouge < millis()){//nouveau prog
digitalWrite(Ledrouge, HIGH);//nouveau prog
}//nouveau prog
else//nouveau prog
{//nouveau prog
digitalWrite(Ledrouge,LOW);//nouveau prog
}//nouveau prog
// nouveau programme test
//int temps;
//int test=0;
//if(millis()+(potard)) {
// test=0;
// }else{
// digitalWrite(Ledrouge,HIGH);
//}
// Initialisation 2e potard
mesureBrute=analogRead(RVar1);
mesure=map(mesureBrute,0,1023,0.0,100.0);
potard1=mesure/10.0;
lcd.setCursor(7,1);
lcd.print(potard1,0);
if (mesure < 1000) lcd.print(" ");
if (mesure < 100) lcd.print(" ");
if (mesure < 10) lcd.print(" ");
// Initialisation 3e potard
mesureBrute=analogRead(RVar2);
mesure=map(mesureBrute,0,1023,0.0,100.0);
potard2=mesure;
lcd.setCursor(13,1);
lcd.print(potard2,0);
if (mesure < 1000) lcd.print(" ");
if (mesure < 100) lcd.print(" ");
if (mesure < 10) lcd.print(" ");
// Decalage des ouvertures electrovanne
//int etat;
//etat=digitalRead(Ledverte);
//if(etat==HIGH){
// time1=millis();
// if (time2=time1++(potard));
// digitalWrite(Ledrouge, HIGH);
//}
//else (millis() + (potard1))
// digitalWrite(Ledrouge, LOW);
//}
}