Go Down

Topic: Gastank mit Schwimmer (Read 1 time) previous topic - next topic

KAmin

Mario ich dank dir! ;)
Ich hab da zwar keine große Veränderung gefunden :D aber es geht.
Sei mir nicht böse aber die Balkenanziege habe ich wieder mit rein genommen. (Will diese auch beherschen ;) )
Was mich gleich zu einer weiteren Frage aufwirft.

Wenn ich den Arduino starte geht alles mit den Balken i.o.
Manchmal starte ich den und es verzieht sich eine kleine Apalte in der Balkenanzeige die beim nächsten start wieder weg ist. Mhh...
Was ist das für ein Misterium?
Liest das die IC zu schnell?

Code: [Select]
#include <LiquidCrystal.h>
#include <LcdBarGraph.h>

byte lcdNumCols = 16; // -- Anzahl der vollen Balken im LCD
byte sensorPin = 1; // -- Analogeingang

long data = 0;
unsigned long actmillis,lmillis1,lmillis2=0;
int time1=300;                         // Zeit für LCD
int time2=10000;                       // Zeit für Loopdurchlauf

int potiVal;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // -- Aufbau der LCD Verbindung
LcdBarGraph lbg(&lcd, lcdNumCols);  // -- Aufbau der Balken

/////////////////////////////////////////////////////////////////////////////////////////////////   

void setup(){

  analogReference (INTERNAL);   //  Interne Spannung 1,1 V DC am AREF Ausgang
  lcd.begin(2, lcdNumCols);   // -- Initialisierung des LCD
  lcd.clear();
  delay(1000);

  //einmal initialen Wert setzen, damit nicht bei "0" angefangen wird
  data = analogRead(sensorPin);
}



//////////////////////////////////////////////////////////////////////////////////////////////////     
void loop()
{
  actmillis=millis();
  if (actmillis-lmillis2>time2){                                      // alle 10ms durchlaufen um den Integrator ein bisschen besser zu machen
    data = ((data * 95 ) + ( analogRead(sensorPin) * 5)) / 100;
    potiVal = ((data/4) * 100)/251;                                        // Potiwert in Prozent umrechnen
    lmillis2=millis(); 
  }

  if (actmillis-lmillis1>time1){                           // alle 300ms durchlauf da 3mal in der Sekunde das Display auffrischen reicht
    lbg.drawValue( data, 1024);   // -- Setzt den Wert vom Analogen Eingang
    lcd.setCursor(0,1);                                // 0 = Zeile  ;  1 = Spalte
    lcd.print("Tankinhalt");
    lcd.setCursor(14,1);
    lcd.print("%");
    lcd.setCursor(11,1);
    lcd.print(potiVal);
    if( potiVal < 100 )                               // Ist potiVal kleiner als 100 setze ein leerzeichen
      lcd.print( " " );
    if( potiVal < 10 )                                // Ist potiVal kleiner als 10 setze ein leerzeichen
      lcd.print( " " );
    lmillis1=millis();
    }
  }

mkl0815

Sorry, die Balkenanzeige hatte ich nur für mich rausgenommen, damit ich es cmpilieren kann. Hatte die Lib nicht zur Hand. Hab dann beim posten vergessen die Kommentare zu entfernen.
Die "kleinen" Unterschiede sind aber genau das wichtige. Daher nochmal genau schauen was sich geändert hat. Falls Du ein Linux oder einen Mac zur Hand hast, das Tool "diff" ist da sehr hilfreich.

Go Up