Sari la conținut
ELFORUM - Forumul electronistilor

Eroare compilare - LCD.h


messu

Postări Recomandate

Tot incerc sa compilez codul de mai jos, pentru un Arduino Nano, insa in permanenta imi returneaza urmatoarea eroare:

 

C:\Users\Messu\Desktop\sketch_midifootcontroller\sketch_midifootcontroller.ino:2:17: fatal error: LCD.h: No such file or directory
#include <LCD.h>
^
compilation terminated.
exit status 1
Error compiling for board Arduino Nano.
Toate sugestiile gasite online, niste librarii in speta, nu au reusit sa rezolve problema.
Ce s-ar putea face ? E o problema de librarii sau de versiune de Arduino IDE ?
Codul este cel atasat, iar mai multe detalii se pot gasi la adresa:

 

cod_arduino.txt

Link spre comentariu

cod de testare:

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("vasile eugen");
}
void loop() {
}
Link spre comentariu

 

#include "Storage.h"

#include <LCD.h>

#include <LiquidCrystal.h>

#include <LiquidCrystal_I2C.h>

 

#include "constants.h"

#include "LCDisplay.h"

#include <Wire.h>

#include <EEPROM.h>

o eroare tipică atunci când bagi cinşpe librării de acelaşi fel, nu una! :rade: (am păţit-o şi eu când mă chinuiam cu 7775 ăla... cică lipsă librărie, dar erau invocate de mai multe ori, de fapt) ...

uneori contează şi în ce ordine le pui... deşi nu se spune explicit, unele librării nu funcţionează (pe tăcute, fără să ţipe compilatorul, alteori compilatorul zice că "nu găseşte librăria X", deşi, de fapt, lipseşte alta, fără de care X nu merge... ) fără a include alta/altele ÎNAINTEA lor, nu după.

 

eroare de versiune aveai dacă codul era scris pentru o versiune anterioară 1.5.0, parcă, dar şi atunci nu ar fi trebuit să se plângă de LCD.h, ci de Arduino.h

 

ce fel de LCD foloseşti pentru proiect: conectat în paralel sau prin I2C ori One-Wire?

Link spre comentariu

Pastreaza esenta softului si rescrie programul atasand DOAR acele librarii de care ai nevoie ...altfel obtii varza postata.

ar fi, fara indoiala cea mai buna idee, numai ca nu conosc programare ... :(

Nu stiu daca erau mai multe librarii de acelasi fel.

Se pare ca incepe sa se rezolve.

Am facut asa: am cutat cu google LCD.h, pe care am descarcat am facut un director, in cel implicit pentru librarii al lui Arduino IDE si l-am pus acolo. La fel am facut si cu Constants.h, Storage.h si LCDisplay.h, care erau oferite de catre autorul codului.

Dupa pasul asta m-am trezit cu o gramada de warnings si errors, dar n-a mai zis nimic de LCD.h. Warning-urile erau : "deprecated conversion from string constant to 'char* " si nu m-am atins de ele, erorile erau legare de libraria LCD.h care apela libraria Wire.h. Mai exact necazul era legat de fapul ca sintaxa din libraria Wire s-a schimbat Wire.send s-a transformat in Wire.write. Foarte "inteligenta" idee... Asa ca am facut schimbarea in LCD.ccp si am ramas numai cu warning-urile.

Codul s-a compilat, in sfarsit si pare ca functioneaza. L-am testat in Proteus. LED-urile si butoanele functioneaza OK, numai ca afisajul LED nu arata nimic.

Necazul cred ca este de la linia

 

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

 

care imi genera o eroare, legata de "POSITIVE", termen pe care nu il intelegea. Asa ca am schimbat linia in

 

LiquidCrystal_I2C lcd(0x27,20,4); // Set the LCD I2C address

 

dupa cum am gasit intr-un exemplu.

 

Nu mai da eroare, dar nici nu afiseaza nimic.

Ce ar putea insemna termenii din paranteza, in afara de adresa ?

Ar putea fi iesirile circuitului PCF574 ? Dar cum le conectez la display ?

 

Display-ul pea care vreau sa il folosesc este 20x2 conectat pe I2C.

Editat de messu
Link spre comentariu

NU ai nevoie de lcd.h si minunile ce le-ai mai descarcat tu de pe net, ai nevoie doar de libraria LiquidCrystal I2C, asta include ea wire.h si tot ce trebuie:

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

 

LiquidCrystal_I2C lcd(0x27, 20, 2); // Set the LCD I2C address

 

Presupun ca modulul cu PCF8574 nu are activat jumperii aia sa schimbi adresa.

Editat de modoran
Link spre comentariu

Libraris LiquidCrystal I2C, cred ca era deja instalata cand imi dadea eroarea cu LCD.h.

Cu modulul PCF8574 inca n-am apucat sa probez pentru ca am acasa toaote tinichelele si nu ajug acasa decat la sfarsitul saptamanii.

Momentan am facut o simulare in Proteus si asa am vazut ca nu afiseaza nimic. Nu stiu daca e lagat corect PCF-ul al display...

Link spre comentariu

... pentru ce versiune de Arduino IDE zice tipu' de unde-ai luat proiectul că e scris? cel puţin linkul dat de tine dă numai arhiva şi enumeră librăriile, altceva nimic...
pentru că din ce spui, sunt sigur că ai ultima versiune instalată, aia sigur a fost scrisă pentru o versiune mai veche, (dar nu foarte, că văd că nu apare şi Arduino.h) şi deja sunt plânsete pe forumul arduino.cc şi pe aiurea din motive de "incompatibilităţi"...

ah, şi lasă simulările deoparte... nu cred că ai în Proteus plăcuţe-clonă chinezeşti... şi te cam strofoci degeaba.
ai răbdare până ajungi acasă, şi vezi acolo concret cum stă treaba.

Editat de MifTy
Link spre comentariu

Dupa ce am scris am vazut ca aveti comunicarea pe ic2 .Uitativa aici prin exemple:

 

http://nicuflorica.blogspot.ro/search/label/afisaj%20alfanumeric

 

uncod din exemple si se compileaza:

//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(2,1);
  lcd.print("Ywrobot Arduino!");
   lcd.setCursor(0,2);
  lcd.print("Arduino LCM IIC 2004");
   lcd.setCursor(2,3);
  lcd.print("Power By Ec-yuan!");
}


void loop()
{
}
Editat de vasile eugen
Link spre comentariu

Multumesc pentru sugestii !

Intr-adevar, cum banuisem, PCF8574 era gresit legat la display. Acum l-am legat corect (se pare) si display-ul a prins viata, insa afiseaza niste carctere necunoscute. O sa incerc in weekend cu componente adevarate, ca in simulare cred ca nu pot sa obtin mai mult de atat.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări