Go Down

Topic: Brauche Hilfe mit i2c Display (Read 681 times) previous topic - next topic

Geilduino

Feb 03, 2013, 11:33 am Last Edit: Feb 03, 2013, 07:13 pm by uwefed Reason: 1
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: [Select]
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: [Select]
#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.

dischneider

Die LCD-Bibliothek gibt ähnlich aus wie Serial auch, also mit
Code: [Select]
lcd.print("Hallo Welt");
kannst du etwas anzeigen.
Ebenso geht
Code: [Select]
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: [Select]
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
using arduino leonardo, arduino uno ...
--
tomorrow today will only be yesterday, so live your life today!

uwefed

#2
Feb 03, 2013, 07:20 pm Last Edit: Feb 03, 2013, 07:22 pm by uwefed Reason: 1
Ich verstehe nicht wieso Du bei einem I2C LCD folgendes angeben mußt:
Code: [Select]
#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

Go Up