Projet Domotique,

Bonjour à tous !

Je suis sur un petit projet de Domotique a la maison. J’aimerais arriver a trouver la ligne de programmation qui me manque.

J’ai une plaque en Stainless avec un resistance 3 mega, elle lit bien … si je touche, elle allume et si je retouche elle eteind.

Jai egalement un detecteur de mouvement :HCSR501 avec ca programation a lui et il fonctionne aussi bien.

Mon probleme arrive quand je veux que les deux control la meme lumiere… si je mets || les deux. A cause du pir ma lumiere flash pendant la periode de detection :confused: et je souhaiterais que nous puissions fermer la lumiere par la plaque, meme si c le detecteur qui la ouverte.

Je vous envoie le code, je vous remercie pour votre aide!!!

#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(8,6);// pas utiliser pour le moment
CapacitiveSensor capSensor2 = CapacitiveSensor(4,2);
const int ledPin = 12;
const int ledPin2= 13;
      int detecMov=11;  
      int ledCase1=0;
      int ledCase2=0;
      int ledCaseTouh1=0;
      int ledCaseTouch2=0;   
      int pirState = LOW;
      int val = 0;
      long previousMillis = 0;
      int calibrationTime = 10;
      boolean currentState = LOW;//stroage for current button state
      boolean lastState = LOW;//storage for last button state
      boolean ledState = LOW;//storage for the current state of the LED (off/on)


void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin2,OUTPUT);
  //pinMode(Stop_light, INPUT);
  //pinMode(boutton,INPUT);
  pinMode(detecMov,INPUT);
    Serial.print("calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
}

  void loop() {

  val = digitalRead(detecMov);  // Lire le statut
  unsigned long currentMillis = millis();  //Heure
 
if (val == HIGH) {            // Si HIGH, détection
    digitalWrite(ledPin2, HIGH);  // Allumer la LED
    delay(10);
   
    if (pirState == LOW) {  //Front montant (début de détection)
      Serial.print("Mouvement detecte ");  //Affiche une seule fois
      pirState = HIGH;  //Mémoriser l'état haut
      previousMillis = currentMillis;    //Mémoriser debut du signal
    }
   
  } else {   //Sinon pas de mouvement détecté
      digitalWrite(ledPin2, LOW); // éteindre la ELd
      //delay(300);   
      if (pirState == HIGH){ //Détecter le front descendant
      Serial.print(" stop ");
      pirState = LOW;  //Mémoriser l'état bas
      unsigned long duree = currentMillis - previousMillis;
      Serial.print(" Duree ");
      Serial.println(duree);  //Durée en millisecondes
    }
  }
    
  long sensorValue = capSensor.capacitiveSensor(30);  //capteur de plaque 
  long sensorValue2 = capSensor2.capacitiveSensor(30);

   if (sensorValue>900){currentState=1-currentState; delay(10);} // valeur resistive
   if (currentState == HIGH && lastState == LOW){//if button has just been pressed
      
      delay (100) ;//crude form of button debouncing
    
    //toggle the state of the LED
   if (ledState == HIGH){
      digitalWrite(ledPin, LOW);
      ledState = LOW;
      Serial.println("Light off!");
    } else {
      digitalWrite(ledPin, HIGH);
      ledState = HIGH;
      Serial.println("Light on !");
    }
  }
  
      lastState = currentState;


//Serial.println(sensorValue);
//Serial.println(val);
}

c'est pas très clair tout ça ...

Prend une feuille de papier et écrit les conditions pour allumer la lumière et pour l'éteindre ...

Par exemple Si lumière éteinte Allumer lumière si mouvement ou touche la plaque Mémoriser que la lumière est allumée

Si lumière allumée Éteindre lumière si pas de mouvement ou touche la plaque ... Mémoriser que la lumière est éteinte

Après tu traduits ça en code ...