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
11.03.2016, 20:35
Beitrag #9
RE: Display Blinkt immer
Danke für die Antwort. Die 15000 stehen für 15000 Durchläufe, was ungefähr einer Sekunde entspricht. Ich habe deinen Timer auf 1000 gestellt. Leider hat das Blinken noch nicht aufgehört. Dafür läuft der Webserver im Durchschnitt 2 ms schneller Wink.

Irgendwie bin ich ratlos, was das Problem verursachen könnte.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.03.2016, 20:46
Beitrag #10
RE: Display Blinkt immer
Wie sieht es denn mit Antworten auf meine anderen Fragen aus Beitrag #6 aus?

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, 20:54
Beitrag #11
Sad RE: Display Blinkt immer
Sorry, hab ich wohl überlesen Dodgy

Das Backlight wird immer stärker und schwächer = Es entsteht der Effekt, dass das Display immer blinken würde. Der Arduino wird mit einem starken USB-Adapter gespeist. Glaube das Maximum liegt bei 1.5 A. Sollte also kein Problem sein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.03.2016, 21:07
Beitrag #12
RE: Display Blinkt immer
Welches Display verwendest du? Link?
Hat das Backlight einen Vorwiderstand?

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, 21:11
Beitrag #13
RE: Display Blinkt immer
Das 16x2 LCD Display mit Tasten: http://www.robodino.de/wp-content/galler...g_6474.jpg

Also ich habe keinen Vorwiderstand eingebaut.
Wenn ich ja einfach etwas darstellen will (z.B mit lcd.print(Test)Wink dann funktioniert es tadellos.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.03.2016, 21:29
Beitrag #14
RE: Display Blinkt immer
Jetzt habe ich auch keine Idee mehr. Confused

Kommentiere doch mal alle Blöcke mit den LCD-Ausgaben aus und nimm dann wieder Block für Block rein. Vielleicht findest du dann die Stelle ab der der Fehler auftritt.

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, 21:44 (Dieser Beitrag wurde zuletzt bearbeitet: 11.03.2016 21:58 von ardu_arne.)
Beitrag #15
RE: Display Blinkt immer
Alle LCD Blöcke ausser den Ersten habe ich rausgenommen:

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 1000        // 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)))) {


} else {

}



if ((((y < 7) && (y > 5) && (ao < 10) && (ao > 8)))) {


} else {

}

if ((((((y < 10) && (y > 8) && (ao < 6) && (ao > 4)))))) {



} else {

}



if ((((y < 10) && (y > 8) && (ao < 10) && (ao > 8)))) {



} 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)))))) {


} else {

}

if ((((((y < 13) && (y > 11) && (z < 8) && (z > 6) && (ao < 6) && (ao > 4)))))) {


} else {
}

if ((((y < 13) && (y > 11) && (ao < 10) && (ao > 8)))) {


} else {

}


if ((y < 16) && (y > 14)) {


} else {

}

if ((((y < 19) && (y > 17) && (ao < 6) && (ao > 4)))) {


} else {
}

if ((((y < 19) && (y > 17) && (ao < 10) && (ao > 8)))) {


} else {

}

if ((((y < 22) && (y > 20) && (ao < 6) && (ao > 4)))) {



} else {

}



if ((((y < 22) && (y > 20) && (ao < 10) && (ao > 8)))) {



} else {

}


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





} else {

}

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



} else {

}


if ((((y < 28) && (y > 25) && (ao < 6) && (ao > 4)))) {



} else {
}

if ((((y < 28) && (y > 25) && (ao < 10) && (ao > 8)))) {



} 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
}



}

Immer noch dasselbe.

Edit: Codebereich formatiert
Gruß Arne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.03.2016, 22:07
Beitrag #16
RE: Display Blinkt immer
So hatte ich das nicht gemeint, da hast du mich leider missverstanden. Undecided

Ich wollte auch die ganzen if-Bedingungen raus haben.
Aber nicht alles raus löschen sondern nur auskommentieren.

Also nach der ersten LCD-Ausgabe ein /* und ganz am Ende ein */
Dann kannst du Stück für Stück wieder herein nehmen indem du die Position des /* nach unten verschiebst.

Ich kann leider nichts testen weil mir die Hardware fehlt.

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 124 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  LCD Display plötzlich komische Zeichen Jessi97 2 234 28.07.2016 11:34
Letzter Beitrag: Bitklopfer
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 732 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Altes Digitales Display mit Text/Bits durch Genuino Micro versorgen - SPI-Bibliothek? RollingStone 0 200 25.06.2016 17:46
Letzter Beitrag: RollingStone
  Wieso immer int ? Mathias 7 339 12.06.2016 17:23
Letzter Beitrag: Mathias
  Problem mit OLED 0.96" Display torsten_156 3 533 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.227 19.02.2016 08:48
Letzter Beitrag: arduinopeter
  Text auf LCD Display s_fr 1 631 30.01.2016 14:24
Letzter Beitrag: Jelimi
  LCD Display Fehler s_fr 2 618 30.01.2016 10:21
Letzter Beitrag: s_fr

Gehe zu:


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