Pages: [1]   Go Down
Author Topic: écrire une seul fois dans le serial  (Read 300 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 46
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
 
  //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);
}


Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
  //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);

Logged

Pages: [1]   Go Up
Jump to: