Go Down

Topic: Utiliser valeur du potentiomètre pour décaler une action (Read 8 times) previous topic - next topic

infobarquee

suffit de rechercher les erreurs :) je me suis gauffré aussi dans le raisonnement  8)
bon celui la fonctionne impec

détection => led verte pendant 2s => après temps XX du potar => allumage de la rouge => tant que valeur potard >0 led rouge allumée
si valeur potard = 0 => led rouge off => timerledverte = 0
et on attend le détection suivante

A toi de mettre la valeur du potard en place

Quote
const int RVar = A0; //potentiomètre 1 "col"
const int RVar1 = A1; //potentiomètre 2 "fond"
const int RVar2 = A2; // potentiomètre 3 "Travers"
const int photoIR = A3; //cellule mesure de lumière ARCHE
const int Ledverte = 8;
const int Ledrouge = 9;

//unsigned long time;
unsigned long timerledverte = 0;
unsigned long timerledrouge = 0;

int sensorValue = 0;
long time =0;
int timeHasCome = 0;

int mesureIR = 0; //Infrarouge initialisation
int mesureBrute = 0; // Potard initialisation
int mesureBrute1 = 0; // Potard initialisation
int mesureBrute2 = 0; // Potard initialisation

int seuil = 500; //Infrarouge seuil sensiblité passage pièce

float mesure;
float mesure1;
float mesure2;

//float potard;
//float potard1;
//float potard2;
int potard = 0;
int potard1 = 0;
int potard2 = 0;

unsigned long time1;
unsigned long time2;
int etat;

int val=0;


void setup() {
  pinMode (Ledverte, OUTPUT);
  pinMode (Ledrouge, OUTPUT);
  pinMode (RVar, INPUT);
  pinMode (RVar1, INPUT);
  pinMode (RVar2, INPUT);
  pinMode (photoIR, INPUT);
  digitalWrite(Ledverte,LOW);
  digitalWrite(Ledrouge,LOW);
  Serial.begin(9600);
  Serial.println("initialisation PIR");
  delay(3000);
}

void loop() {
  //mesureBrute=analogRead(RVar);
// mesure=map(mesureBrute,0,1023,0.0,100.0);
  mesure = 1;
  potard=mesure*1000;
  Serial.print("Lecture mesure1 : ");
  Serial.print(mesure);
  Serial.print("Lecture potar1 : ");
  Serial.println(potard);


// Passage pièce devant InfraRouge


   mesureIR = digitalRead(photoIR);
   
  if (mesureIR == HIGH) {
    Serial.println("Piece detecte");
    digitalWrite (Ledverte, HIGH);
      timerledverte = millis();
    Serial.print("timerledverte : ");
    Serial.println(millis());
   
    timerledrouge = timerledverte + potard;

   
  }
   
  else {
    digitalWrite(Ledverte,LOW);
    //digitalWrite(Ledrouge,LOW);
    //timerledverte = 0;
  }
      testledrouge();

}

  void testledrouge()
{
  Serial.println("Testled rouge");
  // Mesure et décalage temps et inscription sur LCD
  // Initialisation 1er potard
  etat=digitalRead(Ledverte);
  Serial.print("etat led verte :");
  Serial.println(etat);
  delay(2000);
  digitalWrite (Ledverte, LOW);// on éteint la led verte

         if(timerledverte > 0){
                          Serial.print("timerledrouge : ");
               Serial.println(timerledrouge);
Serial.print("milli : ");
Serial.println(millis());
                  if(timerledrouge > millis()){
                             digitalWrite(Ledrouge, LOW);
                             
                  }else{
                          while(potard > 0){   
                         potard--;
                       Serial.println(potard); 
                               digitalWrite(Ledrouge, HIGH);
                               timerledverte =  0;
                          }
                          digitalWrite(Ledrouge,LOW);
                   }
          }
         

}
 

gunsman76

Bon désolé de te decevoir surtout vu le mal que tu te donnes...

La barrière infrarouge ne réagit plus en temps réél. il n'aurait pas fallu touché au niveau de la led verte, tout était ok pour ça.


Peut-être que je vois trop compliqué pour le moment avec les potar, on est peut être mieux d'utiliser des boutons poussoirs ?


on monterait et on descendrait le temps directement. Parce que là j'ai beau tout essayé, je me heurte toujours au même problème

infobarquee

#62
Feb 03, 2013, 01:18 pm Last Edit: Feb 03, 2013, 01:20 pm by infobarquee Reason: 1

Bon désolé de te decevoir surtout vu le mal que tu te donnes...

La barrière infrarouge ne réagit plus en temps réél. il n'aurait pas fallu touché au niveau de la led verte, tout était ok pour ça.


Peut-être que je vois trop compliqué pour le moment avec les potar, on est peut être mieux d'utiliser des boutons poussoirs ?


on monterait et on descendrait le temps directement. Parce que là j'ai beau tout essayé, je me heurte toujours au même problème


je crois que tu es surtout paumé si on modifie un peu ton code ;)
regardes bien
Quote
if (mesureIR == HIGH) {

mets ceci pour retrouver ta détection
Quote
if (mesureIR < seuil) {


je modifie en fonction du matos que j'ai sous la main aussi, donc je vire ce qui me sers pas ou le modifie, à toi de le ré-adapter.

gunsman76

Oui j'avoue  :smiley-roll-sweat:

Au début j'ai bien assimiler dans le démarrage de mon code, car j'ai analyser puis écrit en comprenant ce que je faisais. Quand j'ai demandé de l'aide j'ai commencé à faire du copier/collé d'action que je ne comprenais pas.

Mais je me rends surtout compte que l'idée du potar paraissait une bonne idée car c'était sur le papier la plus simple, on tourne un bouton pour augmenter le temps, on le baisse pour baisser le temps. Mais quand je vois le mal à programmer le code, je me demande si en mettant des boutons on gagnerait pas du temps pour incrémenter et décrémenter la valeur de décalage.


Tu en pense quoi ?

Bon je refais un essai avec ton code

gunsman76

La led verte s'allume 2 seconde s'eteind puis la led rouge s'allume etc...

mais la detectionIR ne fonctionne pas. Je m'arrache les cheveux !

Go Up