Serial.print Ausgabe begrenzen

Hallo,
ich bin relativ neu in Sachen Arduino, habe aber schon einige kleinigkeiten gebaut und taste mich so langsam ran. Ich hoffe, hier kann mich einer auf die richtige Lösung bringen. Ich baue grade für die Steuerung einer Inspizientenanlage in einem Theater einen Arduino Uno, der soll Relais steuern und Digitale Eingänge zurück über USB senden (zur Überwachung, ob bestimmte Geräte eingeschaltet sind)
Die Relaissteuerung funktioniert, die Rükgabe von Befehlen per Serial.print auch, aber er schickt mir unaufhörlich den Status des Pins (high oder low). Wie bekomme ich das hin, dass ich nur bei Änderung des Status eine Ausgabe bekomme, und nicht dauerhaft? Mein Code zu der Stelle sieht wie folgt aus:

 if (digitalRead(input1)==HIGH)
 Serial.print('P');
 if (digitalRead(input1)==LOW)
 Serial.print('L');

Vielen Dank schonmal.
Gruß Florian

ifstatus != statusAlt)
{
sendeWas(status);
statusAlt=status;
}

bool status = digitalRead(input1);

if (status==HIGH && status != alterstatus){
 Serial.print('P');
 alterstatus = status;
}
else if (status==LOW && status != alterstatus){
 Serial.print('L');
 alterstatus = status;
}

Die variable alterstatus muss vor dem Setup deklariert werden (bool alterstatus = 0;)

Hier macht auch else if Sinn weil damit nur solange die Bedingungen geprüft werden bis eine zutrift (erspart Rechenzeit) alle dahinter kommenden else if werden dann in diesem Schleifendurchlauf nicht mehr berücksichtigt
== (ist gleich)
!= (ist ungleich)
&& (ist und)

Wenn du auf das p und l verzichten kannst und stattdessen eine 0 und 1 benutzen kannst, kannst du das Beispiel von Rabenauge benutzen

Vielen Dank euch beiden.
Ich habe in Anlehnung an den ersten Post folgendes gebastelt:
Funktioniert soweit.

 input = digitalRead(input1);
  if (input==HIGH)
  {
  if (input!=input1alt)
  {
    Serial.print('p');
    input1alt=input;
  }}
  if (input==LOW)
  {
    if (input!=input1alt)
    {
      Serial.print('l');
      input1alt=input;
    }

Ich danke euch!
Ist sicherlich nicht so elegant, aber läuft. Habt ihr noch Kritik daran?
Gruß

Wenn du den code zusammenfasst hast du genau das gebastelt was ich gepostet habe

if(1==1){
if(2==2){
}
}

ist das gleiche wie

if(1==1 && 2 ==2){
}

nur etwas übersichtlicher

input = digitalRead(input1);
if (input !=input1alt)
{
if (input==HIGH)
{
Serial.print('p');
}
if (input==LOW)
{
Serial.print('l');
}
input1alt=input;
}

Hab es noch bissel eingedampft.

warum wehrt ihr euch denn gegen das && und das else if

aber so gehts auch noch kürzer

input = digitalRead(input1);

if (input !=input1alt)
{
switch(input){
case 0: Serial.print('l');break;
case 1:Serial.print('P')break;
}
input1alt=input;
}

Besten Dank für eure schnelle Hilfe.
Läuft so, wie gedacht.

Viele Grüße!