Kendziorra - Arduino Stream - print en .println (on)gemak
Last Arduino/ESP8266 project (click to open)

User Rating: 5 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Active
 

Voorbeelden met fout, lastig en gemakkelijk:

  1. Eerst hoe je het gevoelsmatig zou doen, maar dat levert een fout op
  2. Daarna hoe Arduino het voorgeschoteld wil krijgen
  3. Onderaan de verademing, zo gemakkelijk kan het dus ook

1) Zo gaat het dus fout:
    Serial.println("luchtdruk: " + druk  + "\ntemperatuur: " + temp + "\nvochtigheid: " + vocht);
of:
    lcd.setCursor(0, 0);
    lcd .print("luchtdruk: " + druk);
    lcd.setCursor(0, 1);
    lcd.print("temperatuur: " + temp);
    lcd.setCursor(0, 2);
    lcd.print("vochtigheid: " + vocht);

Dit geeft: error: invalid operands of types 'const char*' and 'const char [15]' to binary 'operator+'

2) Officieel moet het dus zo:
    Serial.print("luchtdruk: ");
    Serial.println(druk);
    Serial.print("temperatuur: ");
    Serial.println(temp);
    Serial.print("vochtigheid: ");
    Serial.println(vocht);
of zo:
    lcd.setCursor(0, 0);
    lcd.print("luchtdruk: ");
    lcd.print(druk);
    lcd.setCursor(0, 1);
    lcd.print("temperatuur: ");
    lcd.print(temp);
    lcd.setCursor(0, 2);
    lcd.print("vochtigheid: ");
    lcd.print(vocht);

3) Maar zo gemakkelijk kan het dus ook:
Nogal lastig vind ik, maar het kan ook heel anders want streaming in C doe je met << (out) en >> (in).
Dit staat ook bij  Arduino playground beschreven en Mikal Hart heeft het wat makkelijker gemaakt met zijn library Streaming5.zip.
    #include <Streaming.h>
en
    Serial << "luchtdruk: " << druk << "\ntemperatuur: " << temp << "\nvochtigheid: " << vocht << endl;
of
    lcd.setCursor(0, 0);
    lcd << "luchtdruk: " << druk;
    lcd.setCursor(0, 1);
    lcd << "temperatuur: " << temp;
    lcd.setCursor(0, 2);
    lcd << "vochtigheid: " << vocht;