Krijg display niet werkend
12 berichten
• Pagina 1 van 2 • 1, 2
Krijg display niet werkend
Ik ben nieuw op dit forum en een beginner met de Arduino.
Wel heb ik uit het verleden elektronica en programmeer ervaring met c.
Ik heb een Arduino UNO Rev 3. Tot nu toe ging het maken van eenvoudige schakeling prima. Leds, relais schakelen. Analoge ingangen meten. Seriële communicatie, enz.
De volgende stap was het aansluiten van een display. En dit wil niet lukken.
Ik heb een LCD Display HD44780 - 20x4 wit op blauw met I2C interface gekocht. Op de achterkant van het display staat QC2004A.
Welk merk en versie van de I2C interface ik heb, is mij niet duidelijk.
In eerste instantie het display aangeslotenen via de I2C interface zoals beschreven op de site http://arduino-info.wikispaces.com/LCD-Blue-I2C#v3.
Tijdens de compilatie geen foutmeldingen. Helaas blijft het bij een 'leeg' display. Zie foto in de bijlage.
Zoals op de wiki site aangeven het adres gewijzigd naar 0x27. Ook dit hielp niet.
Op de wiki site staat dat SDA met ANALOG Pin 4 en SCL met ANALOG pin 5 verbonden moet worden. De UNO Rev 3 heeft echter ook een SDA en SCL ingang.
Vervolgens de I2C Interface op deze ingangen aangesloten. Geen resultaat.
Toen het display direct op de Arduino aangesloten. Het resultaat blijft hetzelfde.
Iemand een idee wat ik over het hoofd zie?
Wel heb ik uit het verleden elektronica en programmeer ervaring met c.
Ik heb een Arduino UNO Rev 3. Tot nu toe ging het maken van eenvoudige schakeling prima. Leds, relais schakelen. Analoge ingangen meten. Seriële communicatie, enz.
De volgende stap was het aansluiten van een display. En dit wil niet lukken.
Ik heb een LCD Display HD44780 - 20x4 wit op blauw met I2C interface gekocht. Op de achterkant van het display staat QC2004A.
Welk merk en versie van de I2C interface ik heb, is mij niet duidelijk.
In eerste instantie het display aangeslotenen via de I2C interface zoals beschreven op de site http://arduino-info.wikispaces.com/LCD-Blue-I2C#v3.
Tijdens de compilatie geen foutmeldingen. Helaas blijft het bij een 'leeg' display. Zie foto in de bijlage.
Zoals op de wiki site aangeven het adres gewijzigd naar 0x27. Ook dit hielp niet.
Op de wiki site staat dat SDA met ANALOG Pin 4 en SCL met ANALOG pin 5 verbonden moet worden. De UNO Rev 3 heeft echter ook een SDA en SCL ingang.
Vervolgens de I2C Interface op deze ingangen aangesloten. Geen resultaat.
Toen het display direct op de Arduino aangesloten. Het resultaat blijft hetzelfde.
Iemand een idee wat ik over het hoofd zie?
- Bijlagen
-
- Hier blijft het bij
- IMG_2202.JPG (16.85 KiB) 11397 keer bekeken
-
- I2C Interface
- IMG_2201.JPG (36.58 KiB) 11397 keer bekeken
-
- LCD Display HD44780 - 20x4 wit op blauw
- IMG_2200.JPG (42.67 KiB) 11397 keer bekeken
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Krijg display niet werkend
De oorzaak zit hem in de pin definities. Heb hetzelfde probleem gehad. Ben ff aan 't zoeken
@edit: helaas dat was een ander board.
Kan je even je code laten zien? Ik heb een vermoeden maar moet de code ff zien.
@edit: helaas dat was een ander board.
Kan je even je code laten zien? Ik heb een vermoeden maar moet de code ff zien.
Re: Krijg display niet werkend
Ik heb een vier regel display. De code hieronder is bedoeld voor twee regels. Dat heb ik ook aangepast. Maar heeft ook geen resultaat gehad.
Dit is de code die ik gebruikt heb voor het display direct op de UNO:
/*
LiquidCrystal Library - Hello World
Demonstrates the use a 16x2 LCD display. The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.
This sketch prints "Hello World!" to the LCD
and shows the time.
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
=========================================================================
En dit is de code die ik gebuikt heb met de I2C:
/* YourDuino.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC A0 A1 A2"
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-l ... /downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x20 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//none
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines and turn on backlight
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ----------------
// NOTE: Cursor Position: CHAR, LINE) start at 0
lcd.setCursor(3,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(2,1);
lcd.print("From YourDuino");
delay(1000);
lcd.setCursor(0,2);
lcd.print("20 by 4 Line Display");
lcd.setCursor(0,3);
delay(2000);
lcd.print("http://YourDuino.com");
delay(8000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Start Serial Monitor");
lcd.setCursor(0,1);
lcd.print("Type chars 2 display");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
}/* --(end main loop )-- */
/* ( THE END ) */
Dit is de code die ik gebruikt heb voor het display direct op de UNO:
/*
LiquidCrystal Library - Hello World
Demonstrates the use a 16x2 LCD display. The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.
This sketch prints "Hello World!" to the LCD
and shows the time.
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
=========================================================================
En dit is de code die ik gebuikt heb met de I2C:
/* YourDuino.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC A0 A1 A2"
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-l ... /downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x20 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//none
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines and turn on backlight
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ----------------
// NOTE: Cursor Position: CHAR, LINE) start at 0
lcd.setCursor(3,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(2,1);
lcd.print("From YourDuino");
delay(1000);
lcd.setCursor(0,2);
lcd.print("20 by 4 Line Display");
lcd.setCursor(0,3);
delay(2000);
lcd.print("http://YourDuino.com");
delay(8000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Start Serial Monitor");
lcd.setCursor(0,1);
lcd.print("Type chars 2 display");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
}/* --(end main loop )-- */
/* ( THE END ) */
Re: Krijg display niet werkend
Ik zie in je sketch geen I2C staan. Dat gaat dus niet werken.
Je moet een voorbeeld zoeken met LCD enI2C.
Je moet een voorbeeld zoeken met LCD enI2C.
Re: Krijg display niet werkend
@Beamer: Klopt. Ik heb het display met en zonder I2C aangesloten.
De bovenste sketch is voor het aansluiten van het display zonder I2C. Daaronder staat de sketch die ik gebruikt heb met de I2C.
Beide gaven geen resultaat.
De bovenste sketch is voor het aansluiten van het display zonder I2C. Daaronder staat de sketch die ik gebruikt heb met de I2C.
Beide gaven geen resultaat.
Re: Krijg display niet werkend
Ik heb ook eens gespeeld met een 2004 display en had de I2C interface met de headerpins rechtsreeks op de 20x4 gesoldeerd.
In eerste instantie had ik een dergelijk blokjesbeeld, nadat ik de soldeerverbindingen had nagelopen werkte het zonder problemen.
Het beeld wat je hebt kan een slechte verbinding zijn lijkt mij.
In eerste instantie had ik een dergelijk blokjesbeeld, nadat ik de soldeerverbindingen had nagelopen werkte het zonder problemen.
Het beeld wat je hebt kan een slechte verbinding zijn lijkt mij.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Krijg display niet werkend
Wat ik al vermoedde: Je moet bij I2C ook het adres meegeven van dat adaptertje. Die worden gegeven door die 3 soldeerpads onder de potmeter. In de huidige stand is dat adres 0x27.
In mijn code heb ik de volgende regel.
cpp code
Verder kun je de code die je hier laat zien het beste tonen met de volgende code tags [ code2=cpp ] en /[ /code2 ] en dan zonder de spaties. dan ziet het er zo uit:
cpp code
Nu kijkend naar de code heb je kans dat als je het adres 0x20 veranderd in 0x27 dat hij het wel doet. Anders weet ik nog wel een andere library die ik gebruik en prima werkt.
In mijn code heb ik de volgende regel.
cpp code
LiquidCrystal_I2C myDisplay(0x27, 20, 4);
Verder kun je de code die je hier laat zien het beste tonen met de volgende code tags [ code2=cpp ] en /[ /code2 ] en dan zonder de spaties. dan ziet het er zo uit:
cpp code
/* YourDuino.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC A0 A1 A2"
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-l ... /downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x20 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//none
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(20, 4); // initialize the lcd for 20 chars 4 lines and turn on backlight
// ------- Quick 3 blinks of backlight -------------
for (int i = 0; i < 3; i++) {
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ----------------
// NOTE: Cursor Position: CHAR, LINE) start at 0
lcd.setCursor(3, 0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(2, 1);
lcd.print("From YourDuino");
delay(1000);
lcd.setCursor(0, 2);
lcd.print("20 by 4 Line Display");
lcd.setCursor(0, 3);
delay(2000);
lcd.print("http://YourDuino.com");
delay(8000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.setCursor(0, 0); //Start at character 0 on line 0
lcd.print("Start Serial Monitor");
lcd.setCursor(0, 1);
lcd.print("Type chars 2 display");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
}/* --(end main loop )-- */
/* ( THE END ) */
Nu kijkend naar de code heb je kans dat als je het adres 0x20 veranderd in 0x27 dat hij het wel doet. Anders weet ik nog wel een andere library die ik gebruik en prima werkt.
Re: Krijg display niet werkend
@nicoverduin, bedankt voor jouw terugkoppeling en tip. Dat leest inderdaad beter.
Ik heb de code aangepast met jouw regel. Het adres had ik ook al eens aangepast, maar ik zie dat jij alleen de argumenten 20, 4 gebruikt. 20 karakters en 4 regels naar ik aanneem.
Voor ik deze code probeerde had ik de Arduino IDE opnieuw geïnstalleerd. Ik had zo veel gerommeld met libraries dat ik twijfelde of het nog wel goed stond. Ik gebruik versie 1.5.8.
Nu krijg ik bij de compilatie de volgende foutmelding:
In de code staat:
In de map waar de libraries staan, staat nu alleen de LiquidCrystal librarie (\Documents\Arduino\libraries\LiquidCrystal). Daar stonden er meer. O.a. Wire.
Mis ik nu wat?
Ps
Nog een algemene vraag over het importeren van een bibliotheek. Hoe kan ik het beste een bibliotheek toevoegen. En hoe weet ik of ik de juiste heb.
Ik heb de code aangepast met jouw regel. Het adres had ik ook al eens aangepast, maar ik zie dat jij alleen de argumenten 20, 4 gebruikt. 20 karakters en 4 regels naar ik aanneem.
Voor ik deze code probeerde had ik de Arduino IDE opnieuw geïnstalleerd. Ik had zo veel gerommeld met libraries dat ik twijfelde of het nog wel goed stond. Ik gebruik versie 1.5.8.
Nu krijg ik bij de compilatie de volgende foutmelding:
- Code: Alles selecteren
sketch_feb01a.ino:22:40: error: invalid conversion from 'int' to 't_backlighPol' [-fpermissive]
In file included from sketch_feb01a.ino:14:0:
\\psf\Home\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:53:4: error: initializing argument 3 of 'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, t_backlighPol)' [-fpermissive]
LiquidCrystal_I2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol);
^
sketch_feb01a.ino: In function 'void setup()':
sketch_feb01a.ino:31:5: error: 'lcd' was not declared in this scope
sketch_feb01a.ino: In function 'void loop()':
sketch_feb01a.ino:73:13: error: 'lcd' was not declared in this scope
Fout bij compileren.
In de code staat:
- Code: Alles selecteren
/*-----( Import needed libraries )-----*/
#include <Wire.h> // Comes with Arduino IDE
In de map waar de libraries staan, staat nu alleen de LiquidCrystal librarie (\Documents\Arduino\libraries\LiquidCrystal). Daar stonden er meer. O.a. Wire.
Mis ik nu wat?
Ps
Nog een algemene vraag over het importeren van een bibliotheek. Hoe kan ik het beste een bibliotheek toevoegen. En hoe weet ik of ik de juiste heb.
Re: Krijg display niet werkend
@MarcelK, bedankt voor jouw reactie.
Ik heb een Headerpin socket op het display gesoldeerd. Hierin is de I2C Interface kaart gestoken.
Heb alle solderingen nog eens onder de loop genomen. Dat ziet er goed uit. Kan het dus volgens mij niet zijn.
Ik heb een Headerpin socket op het display gesoldeerd. Hierin is de I2C Interface kaart gestoken.
Heb alle solderingen nog eens onder de loop genomen. Dat ziet er goed uit. Kan het dus volgens mij niet zijn.
Re: Krijg display niet werkend
Opgelost
Schaamrood op de kaken
Een ander zou zeggen RTFM en kijk niet alleen naar de plaatjes.
Met hulp van de leverancier, B&P, die mij een test sketch stuurde kwam ik er achter.
SCL en SDA moet op Analoog pin 4 en 5 en niet op TX en RX
Schaamrood op de kaken
Een ander zou zeggen RTFM en kijk niet alleen naar de plaatjes.
Met hulp van de leverancier, B&P, die mij een test sketch stuurde kwam ik er achter.
SCL en SDA moet op Analoog pin 4 en 5 en niet op TX en RX
12 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast