INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Display Blinkt immer
09.03.2016, 18:43 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2016 19:10 von arduino_weatherstation.)
Beitrag #1
Display Blinkt immer
Hallo Zusammen

Ich habe eine Arduino Wetterstation zusammengebaut und die läuft bereits (wlannesslau.internet-box.ch). Sie verwendet den ENC28J60-Chip.
Nun habe ich aber ein Problem: Die Ethernetschleife läuft immer voll durch, während die Sensorabfrageschleife nur jede Sekunde durchgeführt wird. Nun wird das Arduinodisplay jede Sekunde heller und dann wieder dunkler, was ziemlich nervig ist. Ich verwende ein 16x2 LCD Shield mit Taster. Wenn ich meinen Sketch nun hochlade kommt folgende Meldung:
Zitat:Sketch uses 22,278 bytes (69%) of program storage space. Maximum is 32,256 bytes.
Global variables use 1,897 bytes (92%) of dynamic memory, leaving 151 bytes for local variables. Maximum is 2,048 bytes.
Low memory available, stability problems may occur.

Könnte es vielleicht daran liegen, dass die Global variables 92 % vom verfügbarem Dynamischen Speier nutzen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.03.2016, 19:01
Beitrag #2
RE: Display Blinkt immer
(09.03.2016 18:43)arduino_weatherstation schrieb:  ...

Könnte es vielleicht daran liegen, dass die Global variables 92 % benutzen?

Ja, das wäre eine anzunehmende Ursache.
Vielleicht kannst du Texte mittels F()macro auslagern um RAM einzusparen.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.03.2016, 19:09
Beitrag #3
RE: Display Blinkt immer
Habt ihr den Webserver eigentlich erreichen können?

Dies hier ist mein Code:

Code:
#include <Wire.h>
#include "Adafruit_MCP9808.h"
#include <LiquidCrystal.h>
#include <SFE_BMP180.h>
#include "HTU21D.h"

Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
SFE_BMP180 pressure;
#define ALTITUDE 813.0
HTU21D myHumidity;
HTU21D myHumidity2;



LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// EtherCard code from the RBBB Example
// This is a demo of the RBBB running as webserver with the Ether Card
// 2010-05-28 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
static byte myip[] = { 192,168,1,130 };
static byte gwip[] = { 192,168,1,1 };
byte Ethernet::buffer[500];
BufferFiller bfill;

// The Animation loop is to provide some bling to the LCD diaplay

int t=0;
int h=0;
int t1=0;
int h1=0;
int P=0;
int P1=0;
int T=0;
int T1=0;
int raindetect=0;
int raindetect1=0;
int sensorValue1 = 0;
int sensorValue2 = 0;
int lux2 = 0;
int lux3 = 0;
int Timer= 0;
int Animation = 0;
int humd1= 0;
int humd11 = 0;
int humd1in= 0;
int humd1in1 = 0;

char* on = "+";
char* off = "-";
char* statusLabel;
char* statusLabel1;
char* statusLabel2;

int tau1= 0;
int tau2 = 0;

int n;
  int y;
  int z;
  int ao;
  int xy;

  float ab;
  float b;
  float maxtempo;
  float mintempo;
  float maxtempi;
  float mintempi;
  float maxluft;
  float minluft;
  float maxhumd1;
  float minhumd1;
  float maxtau;
  float mintau;
  float maxhumd1in;
  float minhumd1in;
  float pt;
  float ptendenz2;



// Global Variables Defined
// This is so we can see them in all functions
// t is the temperature, h is the humidity
// Timer is used to reduce the frequency of reading the DHT11 - I found reading it every loop
// caused timing issues with the Ethernet.
// The Animation loop is to provide some bling to the LCD diaplay




// Setup - bring Ethernet, LCD and DHT11 live
void setup () {
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
  Serial.begin(9600);
  Serial.println( "Failed to access Ethernet controller");
  ether.staticSetup(myip, gwip);
  lcd.begin(16,2);
  Serial.begin(9600);
  Serial.println("MCP9808 demo");
    n = 0;
  y = 3;
  z = 4;
  ao = 5;
  xy = 0;

  maxtempo = 0;
  mintempo = 100;
  maxtempi = 0;
  mintempi = 100;
  maxluft = 0;
  minluft = 1000;
  maxhumd1 = 0;
  minhumd1 = 1000000;
  maxtau = 0;
  mintau = 100;
  maxhumd1in = 0;
  minhumd1in = 1000000;
  
  pt = 100;
  ptendenz2 = 101;
  
  tempsensor.begin();
  
  myHumidity.begin();
  myHumidity2.begin();
   pinMode(15, OUTPUT);
  
if (pressure.begin())
    Serial.println("BMP180 init success");
  else
  {
    // Oops, something went wrong, this is usually a connection problem,
    // see the comments at the top of this sketch for the proper connections.

    Serial.println("BMP180 init fail\n\n");
    while(1); // Pause forever.
  }
}



  
//  Here we build a web page and pass the t and h values into it
static word homePage() {
  //ReadDHT11();



  bfill = ether.tcpOffset();
  bfill.emit_p(PSTR(
  "HTTP/1.0 200 OK\r\n"
    "Content-Type: text/html\r\n"
    "Pragma: no-cache\r\n"
    "\r\n"
    "<title>Arduino Wetterstation</title>"
    "<h1>Aussentemp.: $S $D Grad <br>Druck: $D HPa <br>Innentemp.: $S $D Grad <br>Regen: $D <br>Licht: $D Lux <br>Aussenfeuchtigkeit: $D % <br>Innenfeuchtigkeit: $D % <br>Taupunkt: $S $D Grad"),
  statusLabel,t1, P1, statusLabel1, T1, raindetect1, lux3, humd11,  humd1in1, statusLabel2, tau2);
  return bfill.position();
}

// The main loop
//  We add to the timer and read the DHT11 values when Timer == 1, otherwise we loop without reading it
// Once the Timer value == to 1100 we zero it and start the count again.  This way the sensors are only
// read once every 1100 loops.  Every time we go through the loop we listen for a request on the Ethernet
//  If we see one we send the webpage.  We also add an animation on the LCD so we know the loop is working.

void loop () {



  
Timer  = Timer+1;
  if(Timer==1)
  {

  float t = tempsensor.readTempC();
  int raindetect = analogRead(A3);
  int sensorValue1 = analogRead(A2);
  float lux2 = sensorValue1 * 108.613;
  float h = t * 9.0 / 5.0 + 32;
  digitalWrite(15, HIGH);
  float humd1 = myHumidity.readHumidity();
  digitalWrite(15, LOW);  
  float humd1in = myHumidity2.readHumidity();
  
  if (humd1 > 100) {
    humd1 = 100;
    
  } else {
                
        }
        
if (humd1in > 100) {
    humd1in = 100;
    
  } else {
                
        }
    
  char status;
  double T,P;
  float ab = 17.271;
  float b = 237.7;
  float taupunktTemp = (ab * t) / (b + t) + log(humd1/100);
  float tau1 = (b * taupunktTemp) / (ab - taupunktTemp);
  
  status = pressure.startTemperature();
  if (status != 0)
  {
    // Wait for the measurement to complete:
    delay(status);

    // Retrieve the completed temperature measurement:
    // Note that the measurement is stored in the variable T.
    // Function returns 1 if successful, 0 if failure.

    status = pressure.getTemperature(T);
    if (status != 0)
    {
    
      

      status = pressure.startPressure(3);
      if (status != 0)
      {
        // Wait for the measurement to complete:
        delay(status);

        // Retrieve the completed pressure measurement:
        // Note that the measurement is stored in the variable P.
        // Note also that the function requires the previous temperature measurement (T).
        // (If temperature is stable, you can do one temperature measurement for a number of pressure measurements.)
        // Function returns 1 if successful, 0 if failure.

        status = pressure.getPressure(P,T);
        if (status != 0)
        {


        }
        else Serial.println("error retrieving pressure measurement\n");
      }
      else Serial.println("error starting pressure measurement\n");
    }
    else Serial.println("error retrieving temperature measurement\n");
  }
  else Serial.println("error starting temperature measurement\n");


    // set the cursor to (0,0):
    lcd.setCursor(0, 0);
    t1 = t;
      h1 = h;
    P1 = P;
    T1 = T;
    raindetect1 = raindetect;
    sensorValue2 = sensorValue1;
    lux3 = lux2;
    humd11 = humd1;
    humd1in1 = humd1in;
    tau2 = tau1;
    
    if (t1 < 0) {
      
    t1 = t1 * -1;
    statusLabel = off;  
  
    } else {
      
      statusLabel = on;  
      t1 = t1;
                
        }  
      
    
    if (T1 < 0) {
      
    T1 = T1 * -1;
    statusLabel1 = off;  
  
    } else {
      
      statusLabel1 = on;  
      T1 = T1;
                
        }  
        
      if (tau2 < 0) {
      
    tau2 = tau2 * -1;
    statusLabel2 = off;  
  
    } else {
      
      statusLabel2 = on;  
      tau2 = tau2;
                
        }
    
  
    // print from 0 to 9:

  
      float P2 = (P + 94);
    int x;
  x = analogRead (0);
  if ((x > 200) && (x < 400)) {
                y = y + 3;
                lcd.setCursor(13,1);
                lcd.print("   ");
                z = 4;
                ao = 5;
      } else {
                
        }

if ((x < 200) && (x > 60)) {
                y = y - 3;
                lcd.setCursor(13,1);
                lcd.print("   ");
                z = 4;
                ao = 5;
      } else {
                
        }
if ((x < 600) && (x > 400)) {
                z = z + 3;
    } else {
                
        }

if ((x < 800) && (x > 600)) {
              ao = ao + 4;
              
             } else {
                
        }
        
if ((y < 4) && (y > 2)) {
                lcd.setCursor(0,0);
                lcd.print("Wetterstation  ");
                lcd.setCursor(0,1);
                lcd.print("Version 06.03.16");
        } else {
                
        }
        
if ((((y < 7) && (y > 5) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print("Aussen.Temp    ");
                lcd.setCursor(0,1);
                lcd.print(t,1);
                lcd.print(" Grad         ");
                lcd.print("");        
                lcd.setCursor(15,0);
            
      
     } else {
                
       }
      


if ((((y < 7) && (y > 5) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxtempo,1         );
                lcd.print("   ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(mintempo,1         );
                lcd.setCursor(15,0);
          

                } else {
                
       }

if ((((((y < 10) && (y > 8) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print("Innentemperatur");
                lcd.setCursor(0,1);
                lcd.print(T,1);
                lcd.print(" Grad         ");
                lcd.print("");        
                lcd.setCursor(15,0);
        

      
     } else {
                
       }



if ((((y < 10) && (y > 8) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxtempi,1         );
                lcd.print("       ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(mintempi,1         );
                lcd.setCursor(15,0);



                } else {
                
       }
      

if (xy < 3600) {
                xy = xy + 1;
                

                
} else {


                xy = 0;
                pt = P;
        }

ptendenz2 = P - pt;


if ((((((y < 13) && (y > 11) && (z < 5) && (z > 3) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print("Luftdruck (REL)     ");
                lcd.setCursor(0,1);
                lcd.print(P,2);
                lcd.print("/");
                lcd.print(ptendenz2);
                lcd.print(" HPa ");
                lcd.setCursor(15,0);


       } else {
            
        }
        
if ((((((y < 13) && (y > 11) && (z < 8) && (z > 6) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print("Luftdruck (ABS)     ");
                lcd.setCursor(0,1);
                lcd.print(P2,2);
                lcd.print(" HPa         ");
                lcd.setCursor(15,0);


       } else {
       }
            
if ((((y < 13) && (y > 11) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxluft,2         );
                lcd.print("         ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(minluft,2         );
                lcd.print("    ");
                lcd.setCursor(15,0);

                } else {
                
       }
      
      
if ((y < 16) && (y > 14)) {
                lcd.setCursor(0,0);
                lcd.print("Helligkeit         ");
                lcd.setCursor(0,1);
                lcd.print(lux2,0);
                lcd.print(" lx          ");
                lcd.setCursor(15,0);
  

                 } else {
            
                 }
                
if ((((y < 19) && (y > 17) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print("Aus. Feuchtig.  ");
                lcd.setCursor(0,1);
                lcd.print(humd1,1);
                lcd.print(" %    ");
                lcd.setCursor(15,0);
    

       } else {
       }
            
if ((((y < 19) && (y > 17) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxhumd1,1         );
                lcd.print("         ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(minhumd1,1         );
                lcd.setCursor(15,0);
    

                } else {
                
       }

if ((((y < 22) && (y > 20) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print("Taupunkt              ");
                lcd.setCursor(0,1);
                lcd.print(tau1,1);
                lcd.print(" Grad    ");
                lcd.print("");        
                lcd.setCursor(15,0);
        

      
     } else {
                
       }
      


if ((((y < 22) && (y > 20) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxtau,1         );
                lcd.print("   ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(mintau,1         );
                lcd.setCursor(15,0);
        


                } else {
                
       }
        
        
if ((((((raindetect > 1000) && (y < 25) && (y > 22) && (ao < 6) && (ao > 4)))))) {
                
                lcd.setCursor(0,0);
                lcd.print("Regendetektor");
                lcd.setCursor(0,1);
                lcd.print("Kein Regen  ");      
                lcd.setCursor(15,0);
            

                
      
     } else {
                
       }

if ((((((raindetect < 1000) && (y < 25) && (y > 22) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print("Regendetektor");
                lcd.setCursor(0,1);
                lcd.print("Regen        ");      
                lcd.setCursor(15,0);
              


      
     } else {
                
       }
      
      
if ((((y < 28) && (y > 25) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print("In. Feuchtig.  ");
                lcd.setCursor(0,1);
                lcd.print(humd1in ,1);
                lcd.print(" %    ");
                lcd.setCursor(15,0);
        

       } else {
       }
            
if ((((y < 28) && (y > 25) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxhumd1in,1         );
                lcd.print("         ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(minhumd1in,1         );
                lcd.setCursor(15,0);
  

                } else {
                
       }


                      

if  (y > 29) {
     y = y - 3;
     } else {
}

if  (y < 1) {
     y = y + 3;
     } else {
}

if  (z > 8) {
     z = z - 6;
     } else {
}

if  (ao > 10) {
     ao = ao - 8;
       } else {
}



float tempo = t;
float tempi = T;
float luft = P;
float humdmaxmin1 = humd1;
float humdmaxmin1in = humd1in;
float taupunktminmax = tau1;

if (tempo > maxtempo) {

maxtempo = tempo;


} else {


            
    }

if (tempo < mintempo) {

mintempo = tempo;


} else {


            
    }

if (tempi > maxtempi) {

maxtempi = tempi;


} else {


            
    }

if (tempi < mintempi) {

mintempi = tempi;


} else {


            
    }    

if (luft > maxluft) {

maxluft = luft;


} else {


            
    }

if (luft < minluft) {

minluft = luft;


} else {


            
    }

if (humdmaxmin1 > maxhumd1) {

maxhumd1 = humdmaxmin1;


} else {


            
    }

if (humdmaxmin1 < minhumd1) {

minhumd1 = humdmaxmin1;


} else {


            
    }  

if (taupunktminmax > maxtau) {

maxtau = taupunktminmax;


} else {


            
    }

if (taupunktminmax < mintau) {

mintau = taupunktminmax;


} else {


            
    }
    
if (humdmaxmin1in > maxhumd1in) {

maxhumd1in = humdmaxmin1in;


} else {


            
    }

if (humdmaxmin1in < minhumd1in) {

minhumd1in = humdmaxmin1in;


} else {


            
    }
  }
    

if(Timer==15000)
  {
    Timer=0;
  }
  
    
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);

  if (pos)  // check if valid tcp data is received
  {
    ether.httpServerReply(homePage()); // send web page data
  }

    
  
}

Ich habe einen grossen Speicherfresser gefunden:

Zitat:t1 = t;
h1 = h;
P1 = P;
T1 = T;
raindetect1 = raindetect;
sensorValue2 = sensorValue1;
lux3 = lux2;
humd11 = humd1;
humd1in1 = humd1in;
tau2 = tau1;


Aller Werte die Links stehen sind floats und müssen in int umgewandelt werden, damit ich sie auf den Webserver laden kann, weil es mir sonst zu unübersichtlich ist und viel Speicher frisst. Gibt es irgendeinen Weg einen float ohne eine zusätzliche Variable in ein int umzuwandeln und ihn anschliessend wieder zurück zu einem float setzen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.03.2016, 19:20
Beitrag #4
RE: Display Blinkt immer
Also float in int wandeln geht, aber nicht ohne Verlust von Auflösung. Auch zurück ist machbar aber die fehlende Auflösung kommt dabei nicht wieder.

Bei den Texten hast du aber Optimierungsmöglichkeiten.
aus:
Code:
Serial.println( "Failed to access Ethernet controller");
machst du:
Code:
Serial.println(F( "Failed to access Ethernet controller"));

Das ist jetzt nur ein Beispiel, aber das kannst du für Serial.print() oder Serial.println() im ganzen Programm so machen. Das spart dann einiges an RAM ein.

Mach das bitte erst mal und berichte dann. Vielleicht gibt es auch noch weitere Verbesserungsmöglichkeiten.

Und ja, die Seite ist erreichbar. Smile

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2016, 21:41
Beitrag #5
RE: Display Blinkt immer
Hallo

Ich habe deine Anweisung befolgt, aber das Display blinkt immer noch und die Warnung ist auch noch nicht verschwunden. Immerhin ist es jetzt nur noch 80 % Wink.

Hast du sonst noch Vorschläge, wie man es noch weiter als 80 % senken könnte und meinst du immer noch, dass dies die Ursache für das Blinken des Displays ist?

Code:
#include <Wire.h>
#include "Adafruit_MCP9808.h"
#include <LiquidCrystal.h>
#include <SFE_BMP180.h>
#include "HTU21D.h"

Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
SFE_BMP180 pressure;
#define ALTITUDE 813.0
HTU21D myHumidity;
HTU21D myHumidity2;



LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// EtherCard code from the RBBB Example
// This is a demo of the RBBB running as webserver with the Ether Card
// 2010-05-28 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
static byte myip[] = { 192,168,1,130 };
static byte gwip[] = { 192,168,1,1 };
byte Ethernet::buffer[500];
BufferFiller bfill;

// The Animation loop is to provide some bling to the LCD diaplay

int t=0;
int h=0;
int t1=0;
int h1=0;
int P=0;
int P1=0;
int T=0;
int T1=0;
int raindetect=0;
int raindetect1=0;
int sensorValue1 = 0;
int sensorValue2 = 0;
int lux2 = 0;
int lux3 = 0;
int Timer= 0;
int Animation = 0;
int humd1= 0;
int humd11 = 0;
int humd1in= 0;
int humd1in1 = 0;

char* on = "+";
char* off = "-";
char* statusLabel;
char* statusLabel1;
char* statusLabel2;

int tau1= 0;
int tau2 = 0;

int n;
  int y;
  int z;
  int ao;
  int xy;

  float ab;
  float b;
  float maxtempo;
  float mintempo;
  float maxtempi;
  float mintempi;
  float maxluft;
  float minluft;
  float maxhumd1;
  float minhumd1;
  float maxtau;
  float mintau;
  float maxhumd1in;
  float minhumd1in;
  float pt;
  float ptendenz2;



// Global Variables Defined
// This is so we can see them in all functions
// t is the temperature, h is the humidity
// Timer is used to reduce the frequency of reading the DHT11 - I found reading it every loop
// caused timing issues with the Ethernet.
// The Animation loop is to provide some bling to the LCD diaplay




// Setup - bring Ethernet, LCD and DHT11 live
void setup () {
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
  Serial.begin(9600);
  Serial.println(F( "Failed to access Ethernet controller"));
  ether.staticSetup(myip, gwip);
  lcd.begin(16,2);
  Serial.println(F("MCP9808 demo"));
    n = 0;
  y = 3;
  z = 4;
  ao = 5;
  xy = 0;

  maxtempo = 0;
  mintempo = 100;
  maxtempi = 0;
  mintempi = 100;
  maxluft = 0;
  minluft = 1000;
  maxhumd1 = 0;
  minhumd1 = 1000000;
  maxtau = 0;
  mintau = 100;
  maxhumd1in = 0;
  minhumd1in = 1000000;
  
  pt = 100;
  ptendenz2 = 101;
  
  tempsensor.begin();
  
  myHumidity.begin();
  myHumidity2.begin();
   pinMode(15, OUTPUT);
  
if (pressure.begin())
    Serial.println(F("BMP180 init success"));
  else
  {
    // Oops, something went wrong, this is usually a connection problem,
    // see the comments at the top of this sketch for the proper connections.

    Serial.println(F("BMP180 init fail\n\n"));
    while(1); // Pause forever.
  }
}



  
//  Here we build a web page and pass the t and h values into it
static word homePage() {
  //ReadDHT11();



  bfill = ether.tcpOffset();
  bfill.emit_p(PSTR(
  "HTTP/1.0 200 OK\r\n"
    "Content-Type: text/html\r\n"
    "Pragma: no-cache\r\n"
    "\r\n"
    "<title>Arduino Wetterstation</title>"
    "<h1>Aussentemp.: $S $D Grad <br>Druck: $D HPa <br>Innentemp.: $S $D Grad <br>Regen: $D <br>Licht: $D Lux <br>Aussenfeuchtigkeit: $D % <br>Innenfeuchtigkeit: $D % <br>Taupunkt: $S $D Grad"),
  statusLabel,t1, P1, statusLabel1, T1, raindetect1, lux3, humd11,  humd1in1, statusLabel2, tau2);
  return bfill.position();
}

// The main loop
//  We add to the timer and read the DHT11 values when Timer == 1, otherwise we loop without reading it
// Once the Timer value == to 1100 we zero it and start the count again.  This way the sensors are only
// read once every 1100 loops.  Every time we go through the loop we listen for a request on the Ethernet
//  If we see one we send the webpage.  We also add an animation on the LCD so we know the loop is working.

void loop () {



  
Timer  = Timer+1;
  if(Timer==1)
  {

  float t = tempsensor.readTempC();
  int raindetect = analogRead(A3);
  int sensorValue1 = analogRead(A2);
  float lux2 = sensorValue1 * 108.613;
  float h = t * 9.0 / 5.0 + 32;
  digitalWrite(15, HIGH);
  float humd1 = myHumidity.readHumidity();
  digitalWrite(15, LOW);  
  float humd1in = myHumidity2.readHumidity();
  
  if (humd1 > 100) {
    humd1 = 100;
    
  } else {
                
        }
        
if (humd1in > 100) {
    humd1in = 100;
    
  } else {
                
        }
    
  char status;
  double T,P;
  float ab = 17.271;
  float b = 237.7;
  float taupunktTemp = (ab * t) / (b + t) + log(humd1/100);
  float tau1 = (b * taupunktTemp) / (ab - taupunktTemp);
  
  status = pressure.startTemperature();
  if (status != 0)
  {
    // Wait for the measurement to complete:
    delay(status);

    // Retrieve the completed temperature measurement:
    // Note that the measurement is stored in the variable T.
    // Function returns 1 if successful, 0 if failure.

    status = pressure.getTemperature(T);
    if (status != 0)
    {
    
      

      status = pressure.startPressure(3);
      if (status != 0)
      {
        // Wait for the measurement to complete:
        delay(status);

        // Retrieve the completed pressure measurement:
        // Note that the measurement is stored in the variable P.
        // Note also that the function requires the previous temperature measurement (T).
        // (If temperature is stable, you can do one temperature measurement for a number of pressure measurements.)
        // Function returns 1 if successful, 0 if failure.

        status = pressure.getPressure(P,T);
        if (status != 0)
        {


        }
        else Serial.println(F("error retrieving pressure measurement\n"));
      }
      else Serial.println(F("error starting pressure measurement\n"));
    }
    else Serial.println(F("error retrieving temperature measurement\n"));
  }
  else Serial.println(F("error starting temperature measurement\n"));


    // set the cursor to (0,0):
    lcd.setCursor(0, 0);
    t1 = t;
      h1 = h;
    P1 = P;
    T1 = T;
    raindetect1 = raindetect;
    sensorValue2 = sensorValue1;
    lux3 = lux2;
    humd11 = humd1;
    humd1in1 = humd1in;
    tau2 = tau1;
    
    if (t1 < 0) {
      
    t1 = t1 * -1;
    statusLabel = off;  
  
    } else {
      
      statusLabel = on;  
      t1 = t1;
                
        }  
      
    
    if (T1 < 0) {
      
    T1 = T1 * -1;
    statusLabel1 = off;  
  
    } else {
      
      statusLabel1 = on;  
      T1 = T1;
                
        }  
        
      if (tau2 < 0) {
      
    tau2 = tau2 * -1;
    statusLabel2 = off;  
  
    } else {
      
      statusLabel2 = on;  
      tau2 = tau2;
                
        }
    
  
    // print from 0 to 9:

  
      float P2 = (P + 94);
    int x;
  x = analogRead (0);
  if ((x > 200) && (x < 400)) {
                y = y + 3;
                lcd.setCursor(13,1);
                lcd.print("   ");
                z = 4;
                ao = 5;
      } else {
                
        }

if ((x < 200) && (x > 60)) {
                y = y - 3;
                lcd.setCursor(13,1);
                lcd.print("   ");
                z = 4;
                ao = 5;
      } else {
                
        }
if ((x < 600) && (x > 400)) {
                z = z + 3;
    } else {
                
        }

if ((x < 800) && (x > 600)) {
              ao = ao + 4;
              
             } else {
                
        }
        
if ((y < 4) && (y > 2)) {
                lcd.setCursor(0,0);
                lcd.print("Wetterstation  ");
                lcd.setCursor(0,1);
                lcd.print("Version 06.03.16");
        } else {
                
        }
        
if ((((y < 7) && (y > 5) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print("Aussen.Temp    ");
                lcd.setCursor(0,1);
                lcd.print(t,1);
                lcd.print(" Grad         ");
                lcd.print("");        
                lcd.setCursor(15,0);
            
      
     } else {
                
       }
      


if ((((y < 7) && (y > 5) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxtempo,1         );
                lcd.print("   ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(mintempo,1         );
                lcd.setCursor(15,0);
          

                } else {
                
       }

if ((((((y < 10) && (y > 8) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print("Innentemperatur");
                lcd.setCursor(0,1);
                lcd.print(T,1);
                lcd.print(" Grad         ");
                lcd.print("");        
                lcd.setCursor(15,0);
        

      
     } else {
                
       }



if ((((y < 10) && (y > 8) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxtempi,1         );
                lcd.print("       ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(mintempi,1         );
                lcd.setCursor(15,0);



                } else {
                
       }
      

if (xy < 3600) {
                xy = xy + 1;
                

                
} else {


                xy = 0;
                pt = P;
        }

ptendenz2 = P - pt;


if ((((((y < 13) && (y > 11) && (z < 5) && (z > 3) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print("Luftdruck (REL)     ");
                lcd.setCursor(0,1);
                lcd.print(P,2);
                lcd.print("/");
                lcd.print(ptendenz2);
                lcd.print(" HPa ");
                lcd.setCursor(15,0);


       } else {
            
        }
        
if ((((((y < 13) && (y > 11) && (z < 8) && (z > 6) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print("Luftdruck (ABS)     ");
                lcd.setCursor(0,1);
                lcd.print(P2,2);
                lcd.print(" HPa         ");
                lcd.setCursor(15,0);


       } else {
       }
            
if ((((y < 13) && (y > 11) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxluft,2         );
                lcd.print("         ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(minluft,2         );
                lcd.print("    ");
                lcd.setCursor(15,0);

                } else {
                
       }
      
      
if ((y < 16) && (y > 14)) {
                lcd.setCursor(0,0);
                lcd.print("Helligkeit         ");
                lcd.setCursor(0,1);
                lcd.print(lux2,0);
                lcd.print(" lx          ");
                lcd.setCursor(15,0);
  

                 } else {
            
                 }
                
if ((((y < 19) && (y > 17) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print("Aus. Feuchtig.  ");
                lcd.setCursor(0,1);
                lcd.print(humd1,1);
                lcd.print(" %    ");
                lcd.setCursor(15,0);
    

       } else {
       }
            
if ((((y < 19) && (y > 17) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxhumd1,1         );
                lcd.print("         ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(minhumd1,1         );
                lcd.setCursor(15,0);
    

                } else {
                
       }

if ((((y < 22) && (y > 20) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print("Taupunkt              ");
                lcd.setCursor(0,1);
                lcd.print(tau1,1);
                lcd.print(" Grad    ");
                lcd.print("");        
                lcd.setCursor(15,0);
        

      
     } else {
                
       }
      


if ((((y < 22) && (y > 20) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxtau,1         );
                lcd.print("   ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(mintau,1         );
                lcd.setCursor(15,0);
        


                } else {
                
       }
        
        
if ((((((raindetect > 1000) && (y < 25) && (y > 22) && (ao < 6) && (ao > 4)))))) {
                
                lcd.setCursor(0,0);
                lcd.print("Regendetektor");
                lcd.setCursor(0,1);
                lcd.print("Kein Regen  ");      
                lcd.setCursor(15,0);
            

                
      
     } else {
                
       }

if ((((((raindetect < 1000) && (y < 25) && (y > 22) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print("Regendetektor");
                lcd.setCursor(0,1);
                lcd.print("Regen        ");      
                lcd.setCursor(15,0);
              


      
     } else {
                
       }
      
      
if ((((y < 28) && (y > 25) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print("In. Feuchtig.  ");
                lcd.setCursor(0,1);
                lcd.print(humd1in ,1);
                lcd.print(" %    ");
                lcd.setCursor(15,0);
        

       } else {
       }
            
if ((((y < 28) && (y > 25) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print("Max:  ");
                lcd.print(maxhumd1in,1         );
                lcd.print("         ");
                lcd.setCursor(0,1);
                lcd.print("Min:  ");
                lcd.print(minhumd1in,1         );
                lcd.setCursor(15,0);
  

                } else {
                
       }


                      

if  (y > 29) {
     y = y - 3;
     } else {
}

if  (y < 1) {
     y = y + 3;
     } else {
}

if  (z > 8) {
     z = z - 6;
     } else {
}

if  (ao > 10) {
     ao = ao - 8;
       } else {
}



float tempo = t;
float tempi = T;
float luft = P;
float humdmaxmin1 = humd1;
float humdmaxmin1in = humd1in;
float taupunktminmax = tau1;

if (tempo > maxtempo) {

maxtempo = tempo;


} else {


            
    }

if (tempo < mintempo) {

mintempo = tempo;


} else {


            
    }

if (tempi > maxtempi) {

maxtempi = tempi;


} else {


            
    }

if (tempi < mintempi) {

mintempi = tempi;


} else {


            
    }    

if (luft > maxluft) {

maxluft = luft;


} else {


            
    }

if (luft < minluft) {

minluft = luft;


} else {


            
    }

if (humdmaxmin1 > maxhumd1) {

maxhumd1 = humdmaxmin1;


} else {


            
    }

if (humdmaxmin1 < minhumd1) {

minhumd1 = humdmaxmin1;


} else {


            
    }  

if (taupunktminmax > maxtau) {

maxtau = taupunktminmax;


} else {


            
    }

if (taupunktminmax < mintau) {

mintau = taupunktminmax;


} else {


            
    }
    
if (humdmaxmin1in > maxhumd1in) {

maxhumd1in = humdmaxmin1in;


} else {


            
    }

if (humdmaxmin1in < minhumd1in) {

minhumd1in = humdmaxmin1in;


} else {


            
    }
  }
    

if(Timer==15000)
  {
    Timer=0;
  }
  
    
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);

  if (pos)  // check if valid tcp data is received
  {
    ether.httpServerReply(homePage()); // send web page data
  }

    
  
}

Zitat:Sketch uses 22,330 bytes (69%) of program storage space. Maximum is 32,256 bytes.
Global variables use 1,649 bytes (80%) of dynamic memory, leaving 399 bytes for local variables. Maximum is 2,048 bytes.
Low memory available, stability problems may occur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2016, 22:36
Beitrag #6
RE: Display Blinkt immer
Das F()macro funktioniert evtl. auch mit lcd.print
also z.B.:
Code:
lcd.print(F("Wetterstation  "));

Schau mal was damit noch an RAM gespart werden kann.

Ich sehe mir mal an ob sonst ein Problem im Code ist welches das Display blinken lässt.
Aber was bedeutet "Display Blinkt immer"?
Geht das Backlight an und aus oder blinkt der Text?
Ist es evtl. ein Problem der Stromversorgung?

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.03.2016, 18:08 (Dieser Beitrag wurde zuletzt bearbeitet: 11.03.2016 21:55 von ardu_arne.)
Beitrag #7
RE: Display Blinkt immer
Hallo

Dein Command für lcd.print funktioniert. Danke Wink.

Jetzt bekomme ich dies angezeigt:

Code:
Sketch uses 22,490 bytes (69%) of program storage space. Maximum is 32,256 bytes.
Global variables use 1,353 bytes (66%) of dynamic memory, leaving 695 bytes for local variables. Maximum is 2,048 bytes.

Das Problem mit der Stabilität sollte behoben worden sein. Leider hat das auch nicht gebracht Sad. Das Display wird immer noch zuerst heller und dann wieder dunkler. Ich habe bereits den Blink Sketch getestet um sicher zu gehen, dass kein Problem mit der Hardware vorherscht. Hat jemand noch eine Idee, an was es liegen könnte?

Neuster Code:

Code:
#include <Wire.h>
#include "Adafruit_MCP9808.h"
#include <LiquidCrystal.h>
#include <SFE_BMP180.h>
#include "HTU21D.h"

Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
SFE_BMP180 pressure;
#define ALTITUDE 813.0
HTU21D myHumidity;
HTU21D myHumidity2;



LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// EtherCard code from the RBBB Example
// This is a demo of the RBBB running as webserver with the Ether Card
// 2010-05-28 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
static byte myip[] = { 192,168,1,130 };
static byte gwip[] = { 192,168,1,1 };
byte Ethernet::buffer[500];
BufferFiller bfill;

// The Animation loop is to provide some bling to the LCD diaplay

int t=0;
int h=0;
int t1=0;
int h1=0;
int P=0;
int P1=0;
int T=0;
int T1=0;
int raindetect=0;
int raindetect1=0;
int sensorValue1 = 0;
int sensorValue2 = 0;
int lux2 = 0;
int lux3 = 0;
int Timer= 0;
int Animation = 0;
int humd1= 0;
int humd11 = 0;
int humd1in= 0;
int humd1in1 = 0;

char* on = "+";
char* off = "-";
char* statusLabel;
char* statusLabel1;
char* statusLabel2;

int tau1= 0;
int tau2 = 0;

int n;
  int y;
  int z;
  int ao;
  int xy;

  float ab;
  float b;
  float maxtempo;
  float mintempo;
  float maxtempi;
  float mintempi;
  float maxluft;
  float minluft;
  float maxhumd1;
  float minhumd1;
  float maxtau;
  float mintau;
  float maxhumd1in;
  float minhumd1in;
  float pt;
  float ptendenz2;



// Global Variables Defined
// This is so we can see them in all functions
// t is the temperature, h is the humidity
// Timer is used to reduce the frequency of reading the DHT11 - I found reading it every loop
// caused timing issues with the Ethernet.
// The Animation loop is to provide some bling to the LCD diaplay




// Setup - bring Ethernet, LCD and DHT11 live
void setup () {
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
  Serial.begin(9600);
  Serial.println(F( "Failed to access Ethernet controller"));
  ether.staticSetup(myip, gwip);
  lcd.begin(16,2);
  pinMode(15, OUTPUT);
  Serial.println(F("MCP9808 demo"));
    n = 0;
  y = 3;
  z = 4;
  ao = 5;
  xy = 0;

  maxtempo = 0;
  mintempo = 100;
  maxtempi = 0;
  mintempi = 100;
  maxluft = 0;
  minluft = 1000;
  maxhumd1 = 0;
  minhumd1 = 1000000;
  maxtau = 0;
  mintau = 100;
  maxhumd1in = 0;
  minhumd1in = 1000000;
  
  pt = 100;
  ptendenz2 = 101;
  
  tempsensor.begin();
  
  myHumidity.begin();
  myHumidity2.begin();
  
  
if (pressure.begin())
    Serial.println(F("BMP180 init success"));
  else
  {
    // Oops, something went wrong, this is usually a connection problem,
    // see the comments at the top of this sketch for the proper connections.

    Serial.println(F("BMP180 init fail\n\n"));
    while(1); // Pause forever.
  }
}



  
//  Here we build a web page and pass the t and h values into it
static word homePage() {
  //ReadDHT11();



  bfill = ether.tcpOffset();
  bfill.emit_p(PSTR(
  "HTTP/1.0 200 OK\r\n"
    "Content-Type: text/html\r\n"
    "Pragma: no-cache\r\n"
    "\r\n"
    "<title>Arduino Wetterstation</title>"
    "<h1>Aussentemp.: $S $D Grad <br>Druck: $D HPa <br>Innentemp.: $S $D Grad <br>Regen: $D <br>Licht: $D Lux <br>Aussenfeuchtigkeit: $D % <br>Innenfeuchtigkeit: $D % <br>Taupunkt: $S $D Grad"),
  statusLabel,t1, P1, statusLabel1, T1, raindetect1, lux3, humd11,  humd1in1, statusLabel2, tau2);
  return bfill.position();
}

// The main loop
//  We add to the timer and read the DHT11 values when Timer == 1, otherwise we loop without reading it
// Once the Timer value == to 1100 we zero it and start the count again.  This way the sensors are only
// read once every 1100 loops.  Every time we go through the loop we listen for a request on the Ethernet
//  If we see one we send the webpage.  We also add an animation on the LCD so we know the loop is working.

void loop () {



  
Timer  = Timer+1;
  if(Timer==1)
  {
   float t = tempsensor.readTempC();
  int raindetect = analogRead(A3);
  int sensorValue1 = analogRead(A2);
  float lux2 = sensorValue1 * 108.613;
  float h = t * 9.0 / 5.0 + 32;
  digitalWrite(15, HIGH);
  float humd1 = myHumidity.readHumidity();
  digitalWrite(15, LOW);  
  float humd1in = myHumidity2.readHumidity();
  
  if (humd1 > 100) {
    humd1 = 100;
    
  } else {
                
        }
        
if (humd1in > 100) {
    humd1in = 100;
    
  } else {
                
        }
    
  char status;
  double T,P;
  float ab = 17.271;
  float b = 237.7;
  float taupunktTemp = (ab * t) / (b + t) + log(humd1/100);
  float tau1 = (b * taupunktTemp) / (ab - taupunktTemp);
  
  status = pressure.startTemperature();
  if (status != 0)
  {
    // Wait for the measurement to complete:
    delay(status);

    // Retrieve the completed temperature measurement:
    // Note that the measurement is stored in the variable T.
    // Function returns 1 if successful, 0 if failure.

    status = pressure.getTemperature(T);
    if (status != 0)
    {
    
      

      status = pressure.startPressure(3);
      if (status != 0)
      {
        // Wait for the measurement to complete:
        delay(status);

        // Retrieve the completed pressure measurement:
        // Note that the measurement is stored in the variable P.
        // Note also that the function requires the previous temperature measurement (T).
        // (If temperature is stable, you can do one temperature measurement for a number of pressure measurements.)
        // Function returns 1 if successful, 0 if failure.

        status = pressure.getPressure(P,T);
        if (status != 0)
        {


        }
        else Serial.println(F("error retrieving pressure measurement\n"));
      }
      else Serial.println(F("error starting pressure measurement\n"));
    }
    else Serial.println(F("error retrieving temperature measurement\n"));
  }
  else Serial.println(F("error starting temperature measurement\n"));


    // set the cursor to (0,0):
    lcd.setCursor(0, 0);
    t1 = t;
      h1 = h;
    P1 = P;
    T1 = T;
    raindetect1 = raindetect;
    sensorValue2 = sensorValue1;
    lux3 = lux2;
    humd11 = humd1;
    humd1in1 = humd1in;
    tau2 = tau1;
    
    if (t1 < 0) {
      
    t1 = t1 * -1;
    statusLabel = off;  
  
    } else {
      
      statusLabel = on;  
      t1 = t1;
                
        }  
      
    
    if (T1 < 0) {
      
    T1 = T1 * -1;
    statusLabel1 = off;  
  
    } else {
      
      statusLabel1 = on;  
      T1 = T1;
                
        }  
        
      if (tau2 < 0) {
      
    tau2 = tau2 * -1;
    statusLabel2 = off;  
  
    } else {
      
      statusLabel2 = on;  
      tau2 = tau2;
                
        }
    
  
    // print from 0 to 9:

  
      float P2 = (P + 94);
    int x;
  x = analogRead (0);
  if ((x > 200) && (x < 400)) {
                y = y + 3;
                lcd.setCursor(13,1);
                lcd.print("   ");
                z = 4;
                ao = 5;
      } else {
                
        }

if ((x < 200) && (x > 60)) {
                y = y - 3;
                lcd.setCursor(13,1);
                lcd.print("   ");
                z = 4;
                ao = 5;
      } else {
                
        }
if ((x < 600) && (x > 400)) {
                z = z + 3;
    } else {
                
        }

if ((x < 800) && (x > 600)) {
              ao = ao + 4;
              
             } else {
                
        }
        
if ((y < 4) && (y > 2)) {
                lcd.setCursor(0,0);
                lcd.print(F("Wetterstation  "));
                lcd.setCursor(0,1);
                lcd.print(F("Version 06.03.16"));
        } else {
                
        }
        
if ((((y < 7) && (y > 5) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Aussen.Temp    "));
                lcd.setCursor(0,1);
                lcd.print(t,1);
                lcd.print(F(" Grad         "));
                lcd.print(F(""));        
                lcd.setCursor(15,0);
            
      
     } else {
                
       }
      


if ((((y < 7) && (y > 5) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Max:  "));
                lcd.print(maxtempo,1         );
                lcd.print(F("   "));
                lcd.setCursor(0,1);
                lcd.print(F("Min:  "));
                lcd.print(mintempo,1         );
                lcd.setCursor(15,0);
          

                } else {
                
       }

if ((((((y < 10) && (y > 8) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print(F("Innentemperatur"));
                lcd.setCursor(0,1);
                lcd.print(T,1);
                lcd.print(F(" Grad         "));
                lcd.print(F(""));        
                lcd.setCursor(15,0);
        

      
     } else {
                
       }



if ((((y < 10) && (y > 8) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Max:  "));
                lcd.print(maxtempi,1         );
                lcd.print(F("       "));
                lcd.setCursor(0,1);
                lcd.print(F("Min:  "));
                lcd.print(mintempi,1         );
                lcd.setCursor(15,0);



                } else {
                
       }
      

if (xy < 3600) {
                xy = xy + 1;
                

                
} else {


                xy = 0;
                pt = P;
        }

ptendenz2 = P - pt;


if ((((((y < 13) && (y > 11) && (z < 5) && (z > 3) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print(F("Luftdruck (REL)     "));
                lcd.setCursor(0,1);
                lcd.print(P,2);
                lcd.print(F("/"));
                lcd.print(ptendenz2);
                lcd.print(F(" HPa "));
                lcd.setCursor(15,0);


       } else {
            
        }
        
if ((((((y < 13) && (y > 11) && (z < 8) && (z > 6) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print(F("Luftdruck (ABS)     "));
                lcd.setCursor(0,1);
                lcd.print(P2,2);
                lcd.print(F(" HPa         "));
                lcd.setCursor(15,0);


       } else {
       }
            
if ((((y < 13) && (y > 11) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Max:  "));
                lcd.print(maxluft,2         );
                lcd.print(F("         "));
                lcd.setCursor(0,1);
                lcd.print(F("Min:  "));
                lcd.print(minluft,2         );
                lcd.print(F("    "));
                lcd.setCursor(15,0);

                } else {
                
       }
      
      
if ((y < 16) && (y > 14)) {
                lcd.setCursor(0,0);
                lcd.print(F("Helligkeit         "));
                lcd.setCursor(0,1);
                lcd.print(lux2,0);
                lcd.print(F(" lx          "));
                lcd.setCursor(15,0);
  

                 } else {
            
                 }
                
if ((((y < 19) && (y > 17) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Aus. Feuchtig.  "));
                lcd.setCursor(0,1);
                lcd.print(humd1,1);
                lcd.print(F(" %    "));
                lcd.setCursor(15,0);
    

       } else {
       }
            
if ((((y < 19) && (y > 17) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Max:  "));
                lcd.print(maxhumd1,1         );
                lcd.print(F("         "));
                lcd.setCursor(0,1);
                lcd.print(F("Min:  "));
                lcd.print(minhumd1,1         );
                lcd.setCursor(15,0);
    

                } else {
                
       }

if ((((y < 22) && (y > 20) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Taupunkt              "));
                lcd.setCursor(0,1);
                lcd.print(tau1,1);
                lcd.print(F(" Grad    "));
                lcd.print(F(""));        
                lcd.setCursor(15,0);
        

      
     } else {
                
       }
      


if ((((y < 22) && (y > 20) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Max:  "));
                lcd.print(maxtau,1         );
                lcd.print(F("   "));
                lcd.setCursor(0,1);
                lcd.print(F("Min:  "));
                lcd.print(mintau,1         );
                lcd.setCursor(15,0);
        


                } else {
                
       }
        
        
if ((((((raindetect > 1000) && (y < 25) && (y > 22) && (ao < 6) && (ao > 4)))))) {
                
                lcd.setCursor(0,0);
                lcd.print(F("Regendetektor"));
                lcd.setCursor(0,1);
                lcd.print(F("Kein Regen  "));      
                lcd.setCursor(15,0);
            

                
      
     } else {
                
       }

if ((((((raindetect < 1000) && (y < 25) && (y > 22) && (ao < 6) && (ao > 4)))))) {
                lcd.setCursor(0,0);
                lcd.print(F("Regendetektor"));
                lcd.setCursor(0,1);
                lcd.print(F("Regen        "));      
                lcd.setCursor(15,0);
              


      
     } else {
                
       }
      
      
if ((((y < 28) && (y > 25) && (ao < 6) && (ao > 4)))) {
                lcd.setCursor(0,0);
                lcd.print(F("In. Feuchtig.  "));
                lcd.setCursor(0,1);
                lcd.print(humd1in ,1);
                lcd.print(F(" %    "));
                lcd.setCursor(15,0);
        

       } else {
       }
            
if ((((y < 28) && (y > 25) && (ao < 10) && (ao > 8)))) {
                lcd.setCursor(0,0);
                lcd.print(F("Max:  "));
                lcd.print(maxhumd1in,1         );
                lcd.print("         ");
                lcd.setCursor(0,1);
                lcd.print(F("Min:  "));
                lcd.print(minhumd1in,1         );
                lcd.setCursor(15,0);
  

                } else {
                
       }


                      

if  (y > 29) {
     y = y - 3;
     } else {
}

if  (y < 1) {
     y = y + 3;
     } else {
}

if  (z > 8) {
     z = z - 6;
     } else {
}

if  (ao > 10) {
     ao = ao - 8;
       } else {
}



float tempo = t;
float tempi = T;
float luft = P;
float humdmaxmin1 = humd1;
float humdmaxmin1in = humd1in;
float taupunktminmax = tau1;

if (tempo > maxtempo) {

maxtempo = tempo;


} else {


            
    }

if (tempo < mintempo) {

mintempo = tempo;


} else {


            
    }

if (tempi > maxtempi) {

maxtempi = tempi;


} else {


            
    }

if (tempi < mintempi) {

mintempi = tempi;


} else {


            
    }    

if (luft > maxluft) {

maxluft = luft;


} else {


            
    }

if (luft < minluft) {

minluft = luft;


} else {


            
    }

if (humdmaxmin1 > maxhumd1) {

maxhumd1 = humdmaxmin1;


} else {


            
    }

if (humdmaxmin1 < minhumd1) {

minhumd1 = humdmaxmin1;


} else {


            
    }  

if (taupunktminmax > maxtau) {

maxtau = taupunktminmax;


} else {


            
    }

if (taupunktminmax < mintau) {

mintau = taupunktminmax;


} else {


            
    }
    
if (humdmaxmin1in > maxhumd1in) {

maxhumd1in = humdmaxmin1in;


} else {


            
    }

if (humdmaxmin1in < minhumd1in) {

minhumd1in = humdmaxmin1in;


} else {


            
    }
  }
    

if(Timer==15000)
  {
    Timer=0;
  }
  
    
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);

  if (pos)  // check if valid tcp data is received
  {
    ether.httpServerReply(homePage()); // send web page data
  }

    
  
}


Vielen Dank! Wink

Edit: Codebereich formatiert
Gruß Arne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.03.2016, 20:03
Beitrag #8
RE: Display Blinkt immer
Hallo,
ich habe das Geschehen rund um die Variable "Timer" nicht verstanden. Huh
Ich kann nur vermuten dass damit erreicht werden soll dass nur alle 15 Sekunden gemessen werden soll.

Den Teil habe ich mal umgebaut und millis() verwendet.
Probiere mal folgenden Code. Vermutlich ist damit auch das blinken weg.
Neu ist die Variable "messstart" und die Konstante "interval" mit der du das Intervall in ms einstellen kannst.
Code:
#include <Wire.h>
#include "Adafruit_MCP9808.h"
#include <LiquidCrystal.h>
#include <SFE_BMP180.h>
#include "HTU21D.h"

Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
SFE_BMP180 pressure;
#define ALTITUDE 813.0
HTU21D myHumidity;
HTU21D myHumidity2;



LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// EtherCard code from the RBBB Example
// This is a demo of the RBBB running as webserver with the Ether Card
// 2010-05-28 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
static byte myip[] = { 192,168,1,130 };
static byte gwip[] = { 192,168,1,1 };
byte Ethernet::buffer[500];
BufferFiller bfill;

// The Animation loop is to provide some bling to the LCD diaplay

int t=0;
int h=0;
int t1=0;
int h1=0;
int P=0;
int P1=0;
int T=0;
int T1=0;
int raindetect=0;
int raindetect1=0;
int sensorValue1 = 0;
int sensorValue2 = 0;
int lux2 = 0;
int lux3 = 0;
//int Timer= 0;
int Animation = 0;
int humd1= 0;
int humd11 = 0;
int humd1in= 0;
int humd1in1 = 0;
unsigned long messstart = 0;
#define interval 15000        // Messintervall in Millisekunden

char* on = "+";
char* off = "-";
char* statusLabel;
char* statusLabel1;
char* statusLabel2;

int tau1= 0;
int tau2 = 0;

int n;
int y;
int z;
int ao;
int xy;

float ab;
float b;
float maxtempo;
float mintempo;
float maxtempi;
float mintempi;
float maxluft;
float minluft;
float maxhumd1;
float minhumd1;
float maxtau;
float mintau;
float maxhumd1in;
float minhumd1in;
float pt;
float ptendenz2;



// Global Variables Defined
// This is so we can see them in all functions
// t is the temperature, h is the humidity
// Timer is used to reduce the frequency of reading the DHT11 - I found reading it every loop
// caused timing issues with the Ethernet.
// The Animation loop is to provide some bling to the LCD diaplay




// Setup - bring Ethernet, LCD and DHT11 live
void setup () {
if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
Serial.begin(9600);
Serial.println(F( "Failed to access Ethernet controller"));
ether.staticSetup(myip, gwip);
lcd.begin(16,2);
pinMode(15, OUTPUT);
Serial.println(F("MCP9808 demo"));
n = 0;
y = 3;
z = 4;
ao = 5;
xy = 0;

maxtempo = 0;
mintempo = 100;
maxtempi = 0;
mintempi = 100;
maxluft = 0;
minluft = 1000;
maxhumd1 = 0;
minhumd1 = 1000000;
maxtau = 0;
mintau = 100;
maxhumd1in = 0;
minhumd1in = 1000000;

pt = 100;
ptendenz2 = 101;

tempsensor.begin();

myHumidity.begin();
myHumidity2.begin();


if (pressure.begin())
Serial.println(F("BMP180 init success"));
else
{
// Oops, something went wrong, this is usually a connection problem,
// see the comments at the top of this sketch for the proper connections.

Serial.println(F("BMP180 init fail\n\n"));
while(1); // Pause forever.
}
}




// Here we build a web page and pass the t and h values into it
static word homePage() {
//ReadDHT11();



bfill = ether.tcpOffset();
bfill.emit_p(PSTR(
"HTTP/1.0 200 OK\r\n"
"Content-Type: text/html\r\n"
"Pragma: no-cache\r\n"
"\r\n"
"<title>Arduino Wetterstation</title>"
"<h1>Aussentemp.: $S $D Grad <br>Druck: $D HPa <br>Innentemp.: $S $D Grad <br>Regen: $D <br>Licht: $D Lux <br>Aussenfeuchtigkeit: $D % <br>Innenfeuchtigkeit: $D % <br>Taupunkt: $S $D Grad"),
statusLabel,t1, P1, statusLabel1, T1, raindetect1, lux3, humd11, humd1in1, statusLabel2, tau2);
return bfill.position();
}

// The main loop
// We add to the timer and read the DHT11 values when Timer == 1, otherwise we loop without reading it
// Once the Timer value == to 1100 we zero it and start the count again. This way the sensors are only
// read once every 1100 loops. Every time we go through the loop we listen for a request on the Ethernet
// If we see one we send the webpage. We also add an animation on the LCD so we know the loop is working.

void loop () {




//Timer = Timer+1;
//if(Timer==1)
if ( millis() > messstart + interval)
{
messstart = millis();  
float t = tempsensor.readTempC();
int raindetect = analogRead(A3);
int sensorValue1 = analogRead(A2);
float lux2 = sensorValue1 * 108.613;
float h = t * 9.0 / 5.0 + 32;
digitalWrite(15, HIGH);
float humd1 = myHumidity.readHumidity();
digitalWrite(15, LOW);
float humd1in = myHumidity2.readHumidity();

if (humd1 > 100) {
humd1 = 100;

} else {

}

if (humd1in > 100) {
humd1in = 100;

} else {

}

char status;
double T,P;
float ab = 17.271;
float b = 237.7;
float taupunktTemp = (ab * t) / (b + t) + log(humd1/100);
float tau1 = (b * taupunktTemp) / (ab - taupunktTemp);

status = pressure.startTemperature();
if (status != 0)
{
// Wait for the measurement to complete:
delay(status);

// Retrieve the completed temperature measurement:
// Note that the measurement is stored in the variable T.
// Function returns 1 if successful, 0 if failure.

status = pressure.getTemperature(T);
if (status != 0)
{



status = pressure.startPressure(3);
if (status != 0)
{
// Wait for the measurement to complete:
delay(status);

// Retrieve the completed pressure measurement:
// Note that the measurement is stored in the variable P.
// Note also that the function requires the previous temperature measurement (T).
// (If temperature is stable, you can do one temperature measurement for a number of pressure measurements.)
// Function returns 1 if successful, 0 if failure.

status = pressure.getPressure(P,T);
if (status != 0)
{


}
else Serial.println(F("error retrieving pressure measurement\n"));
}
else Serial.println(F("error starting pressure measurement\n"));
}
else Serial.println(F("error retrieving temperature measurement\n"));
}
else Serial.println(F("error starting temperature measurement\n"));


// set the cursor to (0,0):
lcd.setCursor(0, 0);
t1 = t;
h1 = h;
P1 = P;
T1 = T;
raindetect1 = raindetect;
sensorValue2 = sensorValue1;
lux3 = lux2;
humd11 = humd1;
humd1in1 = humd1in;
tau2 = tau1;

if (t1 < 0) {

t1 = t1 * -1;
statusLabel = off;

} else {

statusLabel = on;
t1 = t1;

}


if (T1 < 0) {

T1 = T1 * -1;
statusLabel1 = off;

} else {

statusLabel1 = on;
T1 = T1;

}

if (tau2 < 0) {

tau2 = tau2 * -1;
statusLabel2 = off;

} else {

statusLabel2 = on;
tau2 = tau2;

}


// print from 0 to 9:


float P2 = (P + 94);
int x;
x = analogRead (0);
if ((x > 200) && (x < 400)) {
y = y + 3;
lcd.setCursor(13,1);
lcd.print(F(" "));
z = 4;
ao = 5;
} else {

}

if ((x < 200) && (x > 60)) {
y = y - 3;
lcd.setCursor(13,1);
lcd.print(F(" "));
z = 4;
ao = 5;
} else {

}
if ((x < 600) && (x > 400)) {
z = z + 3;
} else {

}

if ((x < 800) && (x > 600)) {
ao = ao + 4;

} else {

}

if ((y < 4) && (y > 2)) {
lcd.setCursor(0,0);
lcd.print(F("Wetterstation "));
lcd.setCursor(0,1);
lcd.print(F("Version 06.03.16"));
} else {

}

if ((((y < 7) && (y > 5) && (ao < 6) && (ao > 4)))) {
lcd.setCursor(0,0);
lcd.print(F("Aussen.Temp "));
lcd.setCursor(0,1);
lcd.print(t,1);
lcd.print(F(" Grad "));
lcd.print(F(""));
lcd.setCursor(15,0);


} else {

}



if ((((y < 7) && (y > 5) && (ao < 10) && (ao > 8)))) {
lcd.setCursor(0,0);
lcd.print(F("Max: "));
lcd.print(maxtempo,1 );
lcd.print(F(" "));
lcd.setCursor(0,1);
lcd.print(F("Min: "));
lcd.print(mintempo,1 );
lcd.setCursor(15,0);


} else {

}

if ((((((y < 10) && (y > 8) && (ao < 6) && (ao > 4)))))) {
lcd.setCursor(0,0);
lcd.print(F("Innentemperatur"));
lcd.setCursor(0,1);
lcd.print(T,1);
lcd.print(F(" Grad "));
lcd.print(F(""));
lcd.setCursor(15,0);



} else {

}



if ((((y < 10) && (y > 8) && (ao < 10) && (ao > 8)))) {
lcd.setCursor(0,0);
lcd.print(F("Max: "));
lcd.print(maxtempi,1 );
lcd.print(F(" "));
lcd.setCursor(0,1);
lcd.print(F("Min: "));
lcd.print(mintempi,1 );
lcd.setCursor(15,0);



} else {

}


if (xy < 3600) {
xy = xy + 1;



} else {


xy = 0;
pt = P;
}

ptendenz2 = P - pt;


if ((((((y < 13) && (y > 11) && (z < 5) && (z > 3) && (ao < 6) && (ao > 4)))))) {
lcd.setCursor(0,0);
lcd.print(F("Luftdruck (REL) "));
lcd.setCursor(0,1);
lcd.print(P,2);
lcd.print(F("/"));
lcd.print(ptendenz2);
lcd.print(F(" HPa "));
lcd.setCursor(15,0);


} else {

}

if ((((((y < 13) && (y > 11) && (z < 8) && (z > 6) && (ao < 6) && (ao > 4)))))) {
lcd.setCursor(0,0);
lcd.print(F("Luftdruck (ABS) "));
lcd.setCursor(0,1);
lcd.print(P2,2);
lcd.print(F(" HPa "));
lcd.setCursor(15,0);


} else {
}

if ((((y < 13) && (y > 11) && (ao < 10) && (ao > 8)))) {
lcd.setCursor(0,0);
lcd.print(F("Max: "));
lcd.print(maxluft,2 );
lcd.print(F(" "));
lcd.setCursor(0,1);
lcd.print(F("Min: "));
lcd.print(minluft,2 );
lcd.print(F(" "));
lcd.setCursor(15,0);

} else {

}


if ((y < 16) && (y > 14)) {
lcd.setCursor(0,0);
lcd.print(F("Helligkeit "));
lcd.setCursor(0,1);
lcd.print(lux2,0);
lcd.print(F(" lx "));
lcd.setCursor(15,0);


} else {

}

if ((((y < 19) && (y > 17) && (ao < 6) && (ao > 4)))) {
lcd.setCursor(0,0);
lcd.print(F("Aus. Feuchtig. "));
lcd.setCursor(0,1);
lcd.print(humd1,1);
lcd.print(F(" % "));
lcd.setCursor(15,0);


} else {
}

if ((((y < 19) && (y > 17) && (ao < 10) && (ao > 8)))) {
lcd.setCursor(0,0);
lcd.print(F("Max: "));
lcd.print(maxhumd1,1 );
lcd.print(F(" "));
lcd.setCursor(0,1);
lcd.print(F("Min: "));
lcd.print(minhumd1,1 );
lcd.setCursor(15,0);


} else {

}

if ((((y < 22) && (y > 20) && (ao < 6) && (ao > 4)))) {
lcd.setCursor(0,0);
lcd.print(F("Taupunkt "));
lcd.setCursor(0,1);
lcd.print(tau1,1);
lcd.print(F(" Grad "));
lcd.print(F(""));
lcd.setCursor(15,0);



} else {

}



if ((((y < 22) && (y > 20) && (ao < 10) && (ao > 8)))) {
lcd.setCursor(0,0);
lcd.print(F("Max: "));
lcd.print(maxtau,1 );
lcd.print(F(" "));
lcd.setCursor(0,1);
lcd.print(F("Min: "));
lcd.print(mintau,1 );
lcd.setCursor(15,0);



} else {

}


if ((((((raindetect > 1000) && (y < 25) && (y > 22) && (ao < 6) && (ao > 4)))))) {

lcd.setCursor(0,0);
lcd.print(F("Regendetektor"));
lcd.setCursor(0,1);
lcd.print(F("Kein Regen "));
lcd.setCursor(15,0);




} else {

}

if ((((((raindetect < 1000) && (y < 25) && (y > 22) && (ao < 6) && (ao > 4)))))) {
lcd.setCursor(0,0);
lcd.print(F("Regendetektor"));
lcd.setCursor(0,1);
lcd.print(F("Regen "));
lcd.setCursor(15,0);




} else {

}


if ((((y < 28) && (y > 25) && (ao < 6) && (ao > 4)))) {
lcd.setCursor(0,0);
lcd.print(F("In. Feuchtig. "));
lcd.setCursor(0,1);
lcd.print(humd1in ,1);
lcd.print(F(" % "));
lcd.setCursor(15,0);


} else {
}

if ((((y < 28) && (y > 25) && (ao < 10) && (ao > 8)))) {
lcd.setCursor(0,0);
lcd.print(F("Max: "));
lcd.print(maxhumd1in,1 );
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(F("Min: "));
lcd.print(minhumd1in,1 );
lcd.setCursor(15,0);


} else {

}




if (y > 29) {
y = y - 3;
} else {
}

if (y < 1) {
y = y + 3;
} else {
}

if (z > 8) {
z = z - 6;
} else {
}

if (ao > 10) {
ao = ao - 8;
} else {
}



float tempo = t;
float tempi = T;
float luft = P;
float humdmaxmin1 = humd1;
float humdmaxmin1in = humd1in;
float taupunktminmax = tau1;

if (tempo > maxtempo) {

maxtempo = tempo;


} else {



}

if (tempo < mintempo) {

mintempo = tempo;


} else {



}

if (tempi > maxtempi) {

maxtempi = tempi;


} else {



}

if (tempi < mintempi) {

mintempi = tempi;


} else {



}

if (luft > maxluft) {

maxluft = luft;


} else {



}

if (luft < minluft) {

minluft = luft;


} else {



}

if (humdmaxmin1 > maxhumd1) {

maxhumd1 = humdmaxmin1;


} else {



}

if (humdmaxmin1 < minhumd1) {

minhumd1 = humdmaxmin1;


} else {



}

if (taupunktminmax > maxtau) {

maxtau = taupunktminmax;


} else {



}

if (taupunktminmax < mintau) {

mintau = taupunktminmax;


} else {



}

if (humdmaxmin1in > maxhumd1in) {

maxhumd1in = humdmaxmin1in;


} else {



}

if (humdmaxmin1in < minhumd1in) {

minhumd1in = humdmaxmin1in;


} else {



}
}

/*
if(Timer==15000)
{
Timer=0;
}
*/

word len = ether.packetReceive();
word pos = ether.packetLoop(len);

if (pos) // check if valid tcp data is received
{
ether.httpServerReply(homePage()); // send web page data
}



}

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  matrix display elegoo uno R3 starter set lecker16 7 146 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  LCD Display plötzlich komische Zeichen Jessi97 2 243 28.07.2016 11:34
Letzter Beitrag: Bitklopfer
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 736 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Altes Digitales Display mit Text/Bits durch Genuino Micro versorgen - SPI-Bibliothek? RollingStone 0 202 25.06.2016 17:46
Letzter Beitrag: RollingStone
  Wieso immer int ? Mathias 7 340 12.06.2016 17:23
Letzter Beitrag: Mathias
  Problem mit OLED 0.96" Display torsten_156 3 541 03.04.2016 15:10
Letzter Beitrag: hotsystems
  2.2 TFT SPI Display s_fr 3 482 20.02.2016 15:28
Letzter Beitrag: René Hitz
  SainSmart 5" TFT LCD Display + 5" TFT/SD Shield Kit Für Arduino Mega2560 R3 Falk84 14 1.241 19.02.2016 08:48
Letzter Beitrag: arduinopeter
  Text auf LCD Display s_fr 1 637 30.01.2016 14:24
Letzter Beitrag: Jelimi
  LCD Display Fehler s_fr 2 637 30.01.2016 10:21
Letzter Beitrag: s_fr

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste