Arduino Forum

International => Deutsch => Topic started by: DerMilko on Mar 31, 2018, 02:45 pm

Title: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: DerMilko on Mar 31, 2018, 02:45 pm
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);
  }

}


Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: Tommy56 on Mar 31, 2018, 03:10 pm
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
Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: agmue on Mar 31, 2018, 03:20 pm
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.
Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: noiasca on Mar 31, 2018, 03:47 pm
wie agmue schon schrieb, mit setcursor kannst du exakt die Position bestimmen wo Text hin soll und somit auch die Spalte.
Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: DerMilko on Mar 31, 2018, 03:53 pm
Meinst Du so?

Ja zimlich genau so danke!!
Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: agmue on Mar 31, 2018, 03:57 pm
Mit if(sensorValue1<10) lcd.print(' '); kann man zweistellige Zahlen rechtsbündig ausgeben.
Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: HotSystems on Mar 31, 2018, 03:59 pm
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.
Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: DerMilko on Mar 31, 2018, 07:11 pm
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.
Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: Tommy56 on Mar 31, 2018, 07:13 pm
Aber das mit den Codetags hast Du immer noch nicht begriffen.

Gruß Tommy
Title: Re: 16X2 Display in einer spalte mehrer senor werte anzeigen.
Post by: HotSystems on Mar 31, 2018, 07:46 pm
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.