Go Down

Topic: 16X2 Display in einer spalte mehrer senor werte anzeigen. (Read 386 times) previous topic - next topic

DerMilko

Mar 31, 2018, 02:45 pm Last Edit: Mar 31, 2018, 07:16 pm by uwefed Reason: add CODE TAGs </>
hi läute,

ich möchte auf einem 16X2 Display in einer spalte mehrer analoge senor werte anzeigen.
Ich hab aber keine ahnung wie ich das machen kann.
Ich verwende einen Arduino UNO Rev3, zu zeit ist ein boden feuchtigekeitssenor angescholsen, ich möchte mehr anschließen, zum testen benutz ich gerade ein potentiometer.
ich hoffe ihr könnt mir weiter helfen. :smiley-lol:


Code: [Select]

int Sens = A2;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2);

/*

  All the resources for this project:
  http://randomnerdtutorials.com/

*/

int rainPin = A0;
int rainPin2 = A1;
int LEDrot = 3;
int LEDgruen = 5;
int LEDblau = 6;
int Button = 2;
int buttonState = 0;

// you can adjust the threshold value


void setup() {
  pinMode(rainPin, INPUT);
  pinMode(rainPin2, INPUT);
  pinMode(LEDblau, OUTPUT);
  pinMode(LEDgruen, OUTPUT);
  pinMode(LEDrot, OUTPUT);
  analogWrite(LEDrot, 0);
  Serial.begin(9600);

  pinMode(Button, INPUT);

  lcd.clear();

}

void LCD() {
  int sensorValue = analogRead(rainPin);
  int sensorValue2 = analogRead(rainPin2);
  lcd.begin();
  lcd.backlight();
  lcd.print("S1,S2,S3,S4,S5");
  lcd.setCursor(0, 1);
  lcd.print(sensorValue, sensorValue2);
}
/*void LCD2() {
  int sensorValue = analogRead(rainPin);
  lcd.begin();
  lcd.noBacklight();
  lcd.print("Sen1");
  lcd.setCursor(0, 1);
  lcd.print(sensorValue);
}*/
void Boden() {
  int sensorValue = analogRead(rainPin);
  Serial.print(sensorValue);

  if (sensorValue > 750) {
    analogWrite(LEDrot, 100);
    analogWrite(LEDblau, 0);
    delay(500);
  }
  else {
    analogWrite(LEDrot, 0);
    analogWrite(LEDblau, 100);
    delay(500);
  }
}


void loop()
{
  int sensorValue = analogRead(rainPin);
  int sensorValue2 = analogRead(rainPin2);
  Serial.print(sensorValue);
  //lcd.noBacklight();



  buttonState = digitalRead(Button);

  if (buttonState == HIGH) {
    LCD();
    Boden();
    delay(1000);
  }

  else {
    lcd.noBacklight();
    analogWrite(LEDblau, 0);
    analogWrite(LEDrot, 0);
    analogWrite(LEDgruen, 0);
  }

  if (sensorValue > 800) {
    LCD();
    Serial.println(" - Time to water your plant");
    analogWrite(LEDrot, 100);
    analogWrite(LEDblau, 0);
    delay(500);
    LCD();
    analogWrite(LEDrot, 0);
    analogWrite(LEDblau, 0);
    delay(500);
  }
  else {
    //LCD2();
  lcd.begin();
  lcd.noBacklight();
  lcd.print("S1,S2,S3,S4,S5");
  lcd.setCursor(0, 1);
  lcd.print(sensorValue);
  }

}



Tommy56

Setze Deinen Sketch bitte in Codetags (nicht Quote) - Das ist der </>-Button oben links im Forumseditor.

Bist Du Dir sicher, dass Du in einer Spalte (davon hast Du 16) mehrere Werte anzeigen willst?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

agmue

Meinst Du so?

Code: [Select]
 lcd.setCursor(0, 1);
  lcd.print(sensorValue1);
  lcd.print(' ');
  lcd.print(sensorValue2);
  lcd.print(' ');
  lcd.print(sensorValue3);
  lcd.print(' ');
  lcd.print(sensorValue4);

Das läßt sich natürlich noch verfeinern.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

noiasca

wie agmue schon schrieb, mit setcursor kannst du exakt die Position bestimmen wo Text hin soll und somit auch die Spalte.
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet


agmue

Mit if(sensorValue1<10) lcd.print(' '); kann man zweistellige Zahlen rechtsbündig ausgeben.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

HotSystems

Ja zimlich genau so danke!!
Tommy hat es schon geschrieben.

Dein Sketch ist grauenvoll zu lesen.

In einem Mobilgerät überhaupt nicht.
Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.


Damit wird dieser für alle besser lesbar.


Nur was du meinst, ist nicht Spalte sondern Zeile.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

DerMilko

Dein Sketch ist grauenvoll zu lesen.
Ich weiß, jedes mal wenn ich ihn sehe seh ich etwas was man verbessern kann ':D.
Man merkt das ich meinen Arduino noch nicht lang hab, und an dem Sketch schon sehr viel rum "gedoktort" hab ':D.

Tommy56

Aber das mit den Codetags hast Du immer noch nicht begriffen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HotSystems

Ich weiß, jedes mal wenn ich ihn sehe seh ich etwas was man verbessern kann ':D.
Man merkt das ich meinen Arduino noch nicht lang hab, und an dem Sketch schon sehr viel rum "gedoktort" hab ':D.
Meine Anmerkung bezog sich nicht auf deine Programmierqualität, sondern die Lesbarkeit ohne die Code-Tags.
Das solltest du auch annehmen und lernen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Go Up