Pages: [1]   Go Down
Author Topic: Fragen zu Serial.read()  (Read 293 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 238
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Forum,
ich versuche mich gerade mit dem Serial.read();
Dabei verwende ich folgende Funktion:
Code:
void readauswerten()
{
  if (Serial.available() > 0)
  {
    char c = Serial.read();
    Serial.print("Eingegeben: ");
    Serial.println(c);
  }
}
Nun ist es so das nicht jedes Zeichen was ich eintippe auch ausgegeben wird und ansonsten jedes Zeichen einzeln. Ich hätte es jetzt gerne das meine Zeichenkette als ganzes und zusammen ausgegeben wird.
Das Problem, das einige Zeichen fehlen, liegt wohl daran das in einer meiner Funktionen ein Delay ausgeführt wird. Kann ich das dennoch kombinieren?
mfg
Balli

Hier der Part des Programmes um das es geht:
Code:
void loop()
{
  uhrzeitauswerten();
  readauswerten();
}

void readauswerten()//
{
  if (Serial.available() > 0)
  {
    char c = Serial.read();
    Serial.print("I received: ");
    Serial.println(c);
  }
}


void uhrzeitauswerten()//Zeitsteuerung
{
  DateTime now = RTC.now();
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
  //LEDs anschalten
 
  if(now.hour()>= LEDSon && now.hour()<LEDSoff)
  {
    digitalWrite(pin09,HIGH);
    digitalWrite(pin10,HIGH);
    digitalWrite(ikea,LOW);
  }
  else
  {
    digitalWrite(pin09,LOW);
    digitalWrite(pin10,LOW);
    digitalWrite(ikea,HIGH);
  }
  delay(1000); //HIER IST DAS KRITISCHE DELAY
}
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 238
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also ich habe das Delay jetzt einfach entfernt, das führt jedoch dazu das die Uhrzeit pro Sekunde mehrfach ausgegeben wird. Das habe ich umgangen indem ich einen Zwischenspeicher in Form einer Variable eingeführt habe und diesem den aktuellen Sekundenwert übergebe. Solange wie jetzt der Sekundenwert der RTC mit dem Zwischenspeicher übereinstand wird die Uhrzeit nicht ausgegeben, wenn sich jetzt die Sekunde der RTC ändert, wird die Uhrzeit ausgegeben und anschließend der Sekundenwert in den Zwischenspeicher geschrieben.
mfg
Tim
Logged

Pages: [1]   Go Up
Jump to: