Pages: [1]   Go Down
Author Topic: Brauche Hilfe mit i2c Display  (Read 582 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also ich habe folgendes Problem:
auf meinem i2c display (welches funktioniert) würde ich gerne die Daten, die normalerweise über den seriellen Monitor ausgegeben werden, anzeigen lassen.
es handelt sich dabei um eine Temperaturanzeige.
Das Bauteil das ich zu Messung verwende ist ein LM335Z Temperatursensor. Zur Genauigkeit würde ich auch gerne einen zweiten hinzufügen um den wert genauer anzeigen zu lassen.
Den Code hierzu habe ich schon mal soweit um zumindest die werte über den Seriellen Monitor auszugeben:

Code:
float temp_in_celsius = 0, temp_in_kelvin=0, temp_in_fahrenheit=0;

void setup()
{
  Serial.begin(9600);
}

void loop()
{

  //Eingang lesen und in Kelvin umrechnen
  temp_in_kelvin = analogRead(0) * 0.004882812 * 100;
  
  //Konvertiert Kelvin zu Grad Celsius +- 2 G Abweichung
  temp_in_celsius = temp_in_kelvin - 2.5 - 273.15;
  
  temp_in_fahrenheit = ((temp_in_kelvin - 2.5) * 9 / 5) - 459.67;

  //Gibt den Celsius wert am Seriellen Monitor aus
  Serial.print("Celsius: ");
  Serial.println(temp_in_celsius);                  

  //Gibt den wert in Fahrenheit am SM aus
  Serial.print("Fahrenheit: ");
  Serial.println(temp_in_fahrenheit);
  Serial.println();


  delay(1000);
}

mit der LiquidCrystal bin ich leider erst soweit:

Code:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
 
#define I2C_ADDR    0x3F  // Define I2C Address
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
 
LiquidCrystal_I2C       lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
 
void setup()
{
  lcd.begin (20,4,LCD_5x8DOTS);
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); // init the backlight
}
 
void loop()
{
  lcd.setBacklight (LOW);
  lcd.home();
  
für eine schnelle Hilfe wäre ich dankbar.
« Last Edit: February 03, 2013, 01:13:33 pm by uwefed » Logged

northern germany
Offline Offline
Jr. Member
**
Karma: 2
Posts: 94
Ausbildung: Funkmechaniker, Systemadministrator
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die LCD-Bibliothek gibt ähnlich aus wie Serial auch, also mit
Code:
lcd.print("Hallo Welt");
kannst du etwas anzeigen.
Ebenso geht
Code:
lcd.println("Eine Zeile");
um eine Zeile mit Zeilenumbruch zu schreiben.
Die statischen Daten, also z.B. dein "Celsius: ", kannst du "stehen lassen", indem du die Position angibst, an der ausgegeben werden soll:
Code:
lcd.setCursor(col,row);
wobei 0,0 die obere linke Ecke angibt. Die Angabe ist in Zeichen, nicht in Punkten bei der LCDLibrary.

Und alles zum nachlesen in den Beispielen der LCDLibrary.

Liebe Grüße und viel Erfolg

Dirk
Logged

using arduino leonardo
--
tomorrow today will only be yesterday, so live your life today!

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21270
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich verstehe nicht wieso Du bei einem I2C LCD folgendes angeben mußt:
Code:
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin,Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
 

Laut Beschreibung der Bibliothek braucht es al parameter die I2C Adresse und Zeilennummer und Spaltennummer
Quote
LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line

http://code.google.com/p/avr-netino/source/browse/libraries/LiquidCrystal_I2C/examples/HelloWorld/HelloWorld.pde?r=304484de312a830e883db739ce82b65b5c0c7956
« Last Edit: February 03, 2013, 01:22:20 pm by uwefed » Logged

Pages: [1]   Go Up
Jump to: