Go Down

Topic: écrire une seul fois dans le serial (Read 333 times) previous topic - next topic

windaube21

bonjour a tous

je joue un peut avec la liason serie mais j'ai un petit problème

j'ai fait un code qui vérifie l'état d'une entré et qui allume ou étient une led selon l'état de l'entrée
avec sa j'imprime dans le serial l'heure avec l'état de l'entrée

jusque la tout va bien mais enfaite j'imprime dans le serial a chaque fois que le code vérifie l'état de l'entré ( soit toute les 500 ms )
et j'aimerai que le serial imprime uniquement si l'entré change d'état

genre il imprime l'état de l'entrée et attend que l'entrée change d'état sinon il imprime plus

voici un mon loop

Code: [Select]

 
  //RECUPERER LHEURE DU DS1307
heure = RTC.get(DS1307_HR,true); 
minut = RTC.get(DS1307_MIN,false);
seconde = RTC.get(DS1307_SEC,false);
date = RTC.get(DS1307_DATE,false);
mois = RTC.get(DS1307_MTH,false);
annee = RTC.get(DS1307_YR,false);
temps_perso = (heure * 100) + minut;
 
 
 
  buttonState1 = digitalRead(test);
 
  if (buttonState1 == LOW){
    Serial.print(RTC.get(DS1307_HR,true));
Serial.print("H");
if (minut < 10)
{
Serial.print("0");
}
Serial.print(RTC.get(DS1307_MIN,false));
Serial.print(" ");
    Serial.println("NEGATIF");
    digitalWrite(led, LOW);
  }
  else
  {
        Serial.print(RTC.get(DS1307_HR,true));
Serial.print("H");
if (minut < 10)
{
Serial.print("0");
}
Serial.print(RTC.get(DS1307_MIN,false));
Serial.print(" ");
    Serial.println("POSSITIF");
    digitalWrite(led, HIGH);
  }
delay(500);
}




etheriel

Il faut que tu "retiennes" la valeur precedement lue, et ne realiser tes envois que lorsque la valeur que tu lis est differente de la valeur precedente.

En gros (sans tester), je dirais un truc du genre:

 
Code: [Select]
  //RECUPERER LHEURE DU DS1307
heure = RTC.get(DS1307_HR,true); 
minut = RTC.get(DS1307_MIN,false);
seconde = RTC.get(DS1307_SEC,false);
date = RTC.get(DS1307_DATE,false);
mois = RTC.get(DS1307_MTH,false);
annee = RTC.get(DS1307_YR,false);
temps_perso = (heure * 100) + minut;

buttonState1 = digitalRead(test);
if (buttonState1 != lastButtonState) {
  lastButtonState = buttonState1;
 
  Serial.print(RTC.get(DS1307_HR,true));
  Serial.print("H");
  if (minut < 10) {
    Serial.print("0");
  }
  Serial.print(RTC.get(DS1307_MIN,false));
  Serial.print(" ");

  if (buttonState1 == LOW) {
    Serial.println("NEGATIF");
    digitalWrite(led, LOW);
  }
  else {
    Serial.println("POSSITIF");
    digitalWrite(led, HIGH);
  }
}
delay(500);



Go Up