Commande de volet (manuel, horaire, detection de lumiere)

aller, c'est mon soir de bontés ]:smiley:

ci-dessous un exemple de code qui t'aidera sans doute à bien structurer ton code. C'est la structure type que j'emploie dans mes projets domotiques.

/*
 * Gromain59
 * xPLDuino
 *
 * Structure type:
 * - bit de cadencement
 *
 * - pre (màj des entrées)
 * - calcul
 * - post (màj des sorties)
 * 
 */



//############################### GESTION PULSE ##################################
long prevMillis1000=0;
boolean pulse_1000=0;
long prevMillis100=0;
boolean pulse_100=0;
long prevMillis500=0;
boolean pulse_500=0;


void setup()
{
  // initialize the serial communication:
	Serial.begin(115200);

	Serial.println("exemple de gestion pulse");

}


// acquition de l'état des entrées, pre-calcul
void pre() {

	pulse(); // call pulse generation.

}


void scenario() {


	// ici les calculs à réaliser

}


// mis à jour des memoires de sorties
void post() {

	if(pulse_1000){
		Serial.println("déjà 1 seconde !");
	}

	if(pulse_500){
		Serial.println("plus vite !");
	}

	if(pulse_100){
		Serial.println("trop vite !");
	}

}

void loop() {

	pre(); // Call pre-traitement

	scenario();

	post();	// Call post-traitment


}

void pulse(){

  pulse_1000=0;

  if ((millis() - prevMillis1000) >= 1000 || (millis() - prevMillis1000) < 0){
    prevMillis1000 = millis();
    pulse_1000=1; 
  }

    pulse_100=0;

  if ((millis() - prevMillis100) >= 100 || (millis() - prevMillis100) < 0){
    prevMillis100 = millis();
    pulse_100=1; 
  }
  
    pulse_500=0;

  if ((millis() - prevMillis500) >= 500 || (millis() - prevMillis500) < 0){
    prevMillis500 = millis();
    pulse_500=1; 
  }
  
}

Gromain