Arduino Polska Forum
Biblioteka LiquidCrystal_I2C.h - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Biblioteka LiquidCrystal_I2C.h (/watek-biblioteka-liquidcrystal-i2c-h)

Strony: 1 2


Biblioteka LiquidCrystal_I2C.h - sylwunia35 - 19-03-2017

Witam
Mam problem z bibliotekom LiquidCrystal_I2C. chciałem zmienić piny LCD z PCF8574 czy jest to możliwe.
Korzystam Arduino IDE 1.8.0.Próby zmiany :
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
//LiquidCrystal_I2C  lcd(2,1,0,4,5,6,7);
kończą się niepowodzeniem.
Zrobiłem sobie płytkę w której inaczej zrobiłem połączenia z LCD dla wygody bo myślałem że nie będzie problemu a jednak jest.
Proszę o pomoc.


RE: Biblioteka LiquidCrystal_I2C.h - namok - 19-03-2017

Jak chcesz pomocy to pisz konkretnie co, gdzie, kiedy i dlaczego.
Nikt nie będzie się domyślał z której biblioteki korzystasz i jak zmieniłeś połączenia.


RE: Biblioteka LiquidCrystal_I2C.h - ferdricco - 19-03-2017

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

W pierwszej linijce jest ok. Jest adres , wyjścia są przypisane i podświetlenie tez jest.
 W drugiej linijce brakuje podświetlenia LCD.
Natomiast w trzeciej linijce niema ani adresu, ani podświetlenia.

Ten kod co podałeś jest podany jako komentarz do kodu.


RE: Biblioteka LiquidCrystal_I2C.h - sylwunia35 - 19-03-2017

Właśnie też tak myślałem że pierwsza jest ok ale wywala błąd TongueOSITIVE was not in scope


RE: Biblioteka LiquidCrystal_I2C.h - ferdricco - 19-03-2017

(19-03-2017, 21:41)sylwunia35 napisał(a): Właśnie też tak myślałem że pierwsza jest ok ale wywala błąd TongueOSITIVE was not in scope

Wstaw całość kodu zobaczymy co jest nie w hallo


RE: Biblioteka LiquidCrystal_I2C.h - sylwunia35 - 19-03-2017

(19-03-2017, 23:16)ferdricco napisał(a):
(19-03-2017, 21:41)sylwunia35 napisał(a): Właśnie też tak myślałem że pierwsza jest ok ale wywala błąd TongueOSITIVE was not in scope

Wstaw całość kodu zobaczymy co jest nie w hallo

#include <PCF8574.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
sLiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
//LiquidCrystal_I2C  lcd(2,1,0,4,5,6,7);
//LiquidCrystal_I2C lcd(0x3C, 16, 2);
//LiquidCrystal_I2C lcd(0x4E/2, 2, 1, 0, 4, 5, 6, 7, 3);  // konfigurujemy wyś
//LiquidCrystal_I2C lcd(0x4E/2, 2, 1, 0, 4, 5, 6, 7, 3);  // konfigurujemy wyświetlacz na modzule I2C
PCF8574 expander1; //PCF8574 expander2;
PCF8574 expander3;
// LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup()
{  
   lcd.begin();
   lcd.begin(16,2);   // initialize the lcd for 16 chars 2 lines, turn on backlight

   lcd.setCursor(0,0);
   lcd.print(" Centrala HB5 !");
    delay(2000);
   expander1.begin(0x38);//klawiatura
   //expander2.begin(0x3C);//wyswietlacz
   expander3.begin(0x3E);//ledy
   expander1.pinMode(0, OUTPUT);
   //expander2.pinMode(0, OUTPUT);
   expander3.pinMode(0, OUTPUT);
}

void loop()
{
 lcd.setCursor(1,1);
   lcd.print(" Centrala HB5 !");
    //expander.clear();
  expander1.digitalWrite(0, LOW);
//   expander2.digitalWrite(0, LOW);
  expander3.digitalWrite(0, LOW);
  delay(1000);
  expander1.digitalWrite(0, HIGH);
 // expander2.digitalWrite(0, HIGH);
  expander3.digitalWrite(0, HIGH);
  //expander.set();
  delay(500);
}
Dodam iż na takim kupnym konwerterze bez tej nili działa


RE: Biblioteka LiquidCrystal_I2C.h - ferdricco - 20-03-2017

(19-03-2017, 23:39)sylwunia35 napisał(a):
(19-03-2017, 23:16)ferdricco napisał(a):
(19-03-2017, 21:41)sylwunia35 napisał(a): Właśnie też tak myślałem że pierwsza jest ok ale wywala błąd TongueOSITIVE was not in scope

Wstaw całość kodu zobaczymy co jest nie w hallo

#include <PCF8574.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
sLiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
//LiquidCrystal_I2C  lcd(2,1,0,4,5,6,7);
//LiquidCrystal_I2C lcd(0x3C, 16, 2);
//LiquidCrystal_I2C lcd(0x4E/2, 2, 1, 0, 4, 5, 6, 7, 3);  // konfigurujemy wyś
//LiquidCrystal_I2C lcd(0x4E/2, 2, 1, 0, 4, 5, 6, 7, 3);  // konfigurujemy wyświetlacz na modzule I2C
PCF8574 expander1; //PCF8574 expander2;
PCF8574 expander3;
// LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup()
{  
   lcd.begin();
   lcd.begin(16,2);   // initialize the lcd for 16 chars 2 lines, turn on backlight

   lcd.setCursor(0,0);
   lcd.print(" Centrala HB5 !");
    delay(2000);
   expander1.begin(0x38);//klawiatura
   //expander2.begin(0x3C);//wyswietlacz
   expander3.begin(0x3E);//ledy
   expander1.pinMode(0, OUTPUT);
   //expander2.pinMode(0, OUTPUT);
   expander3.pinMode(0, OUTPUT);
}

void loop()
{
 lcd.setCursor(1,1);
   lcd.print(" Centrala HB5 !");
    //expander.clear();
  expander1.digitalWrite(0, LOW);
//   expander2.digitalWrite(0, LOW);
  expander3.digitalWrite(0, LOW);
  delay(1000);
  expander1.digitalWrite(0, HIGH);
 // expander2.digitalWrite(0, HIGH);
  expander3.digitalWrite(0, HIGH);
  //expander.set();
  delay(500);
}
Dodam iż na takim kupnym konwerterze bez tej nili działa

Czy ty w ogóle rozumiesz ten kod???
Wiesz co oznacza taki znak "//"???


RE: Biblioteka LiquidCrystal_I2C.h - sylwunia35 - 20-03-2017

(20-03-2017, 00:54)ferdricco napisał(a):
(19-03-2017, 23:39)sylwunia35 napisał(a):
(19-03-2017, 23:16)ferdricco napisał(a):
(19-03-2017, 21:41)sylwunia35 napisał(a): Właśnie też tak myślałem że pierwsza jest ok ale wywala błąd TongueOSITIVE was not in scope

Wstaw całość kodu zobaczymy co jest nie w hallo

#include <PCF8574.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
sLiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
//LiquidCrystal_I2C  lcd(2,1,0,4,5,6,7);
//LiquidCrystal_I2C lcd(0x3C, 16, 2);
//LiquidCrystal_I2C lcd(0x4E/2, 2, 1, 0, 4, 5, 6, 7, 3);  // konfigurujemy wyś
//LiquidCrystal_I2C lcd(0x4E/2, 2, 1, 0, 4, 5, 6, 7, 3);  // konfigurujemy wyświetlacz na modzule I2C
PCF8574 expander1; //PCF8574 expander2;
PCF8574 expander3;
// LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup()
{  
   lcd.begin();
   lcd.begin(16,2);   // initialize the lcd for 16 chars 2 lines, turn on backlight

   lcd.setCursor(0,0);
   lcd.print(" Centrala HB5 !");
    delay(2000);
   expander1.begin(0x38);//klawiatura
   //expander2.begin(0x3C);//wyswietlacz
   expander3.begin(0x3E);//ledy
   expander1.pinMode(0, OUTPUT);
   //expander2.pinMode(0, OUTPUT);
   expander3.pinMode(0, OUTPUT);
}

void loop()
{
 lcd.setCursor(1,1);
   lcd.print(" Centrala HB5 !");
    //expander.clear();
  expander1.digitalWrite(0, LOW);
//   expander2.digitalWrite(0, LOW);
  expander3.digitalWrite(0, LOW);
  delay(1000);
  expander1.digitalWrite(0, HIGH);
 // expander2.digitalWrite(0, HIGH);
  expander3.digitalWrite(0, HIGH);
  //expander.set();
  delay(500);
}
Dodam iż na takim kupnym konwerterze bez tej nili działa

Czy ty w ogóle rozumiesz ten kod???
Wiesz co oznacza taki znak "//"???

Tak te znaki zostawiłem bo testowałem różne warianty ale dobra dam czysty kod
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // tu jest problem
void setup()
{
lcd.begin();
lcd.begin(16,2);
}
void loop()
{
lcd.setCursor(1,1);
lcd.print(" COS TAM ");
}


RE: Biblioteka LiquidCrystal_I2C.h - sylwunia35 - 20-03-2017

(20-03-2017, 00:54)ferdricco napisał(a):
(19-03-2017, 23:39)sylwunia35 napisał(a):
(19-03-2017, 23:16)ferdricco napisał(a):
(19-03-2017, 21:41)sylwunia35 napisał(a): Właśnie też tak myślałem że pierwsza jest ok ale wywala błąd TongueOSITIVE was not in scope

Wstaw całość kodu zobaczymy co jest nie w hallo

#include <PCF8574.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
sLiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
//LiquidCrystal_I2C  lcd(2,1,0,4,5,6,7);
//LiquidCrystal_I2C lcd(0x3C, 16, 2);
//LiquidCrystal_I2C lcd(0x4E/2, 2, 1, 0, 4, 5, 6, 7, 3);  // konfigurujemy wyś
//LiquidCrystal_I2C lcd(0x4E/2, 2, 1, 0, 4, 5, 6, 7, 3);  // konfigurujemy wyświetlacz na modzule I2C
PCF8574 expander1; //PCF8574 expander2;
PCF8574 expander3;
// LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup()
{  
   lcd.begin();
   lcd.begin(16,2);   // initialize the lcd for 16 chars 2 lines, turn on backlight

   lcd.setCursor(0,0);
   lcd.print(" Centrala HB5 !");
    delay(2000);
   expander1.begin(0x38);//klawiatura
   //expander2.begin(0x3C);//wyswietlacz
   expander3.begin(0x3E);//ledy
   expander1.pinMode(0, OUTPUT);
   //expander2.pinMode(0, OUTPUT);
   expander3.pinMode(0, OUTPUT);
}

void loop()
{
 lcd.setCursor(1,1);
   lcd.print(" Centrala HB5 !");
    //expander.clear();
  expander1.digitalWrite(0, LOW);
//   expander2.digitalWrite(0, LOW);
  expander3.digitalWrite(0, LOW);
  delay(1000);
  expander1.digitalWrite(0, HIGH);
 // expander2.digitalWrite(0, HIGH);
  expander3.digitalWrite(0, HIGH);
  //expander.set();
  delay(500);
}
Dodam iż na takim kupnym konwerterze bez tej nili działa

Czy ty w ogóle rozumiesz ten kod???
Wiesz co oznacza taki znak "//"???

Tak te znaki zostawiłem bo testowałem różne warianty ale dobra dam czysty kod
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // tu jest problem
//LiquidCrystal_I2C lcd(0x27, 16, 2);// a tak jest ok tyle że ja mam inaczej podłączony wyświetlacz do PCF
void setup()
{  
  lcd.begin();
  lcd.begin(16,2);
}
void loop()
{
 lcd.setCursor(1,1);
 lcd.print(" COS TAM ");
}


RE: Biblioteka LiquidCrystal_I2C.h - Smaczek - 20-03-2017

Witam,
Myślę, że popełniłeś błąd myślowy. Nawet nie jeden, a wiele.
Jeśli masz ulicę (magistralę) i na tej ulicy masz domy o adresie 0x27 i 0x3C to nie ma problemu, żeby tam trafić. Ty chcesz dotrzeć do mieszkania (wyświetlacz) w domu o adresie 0x3C (expander) i w tym domu tego mieszkania należy szukać. Dodatkowo deklarujesz to mieszkanie: //LiquidCrystal_I2C lcd(0x3C, 16, 2); (biorąc oczywiście bez znaków komentarza) , a sam dom o adresie 0x3C budując dużo później: //expander2.begin(0x3C);//wyswietlacz. To najpierw stawiasz ściany mieszkania, czy też bloku w którym to mieszkanie ma być? Skąd kompilator ma wiedzieć, że rozkład mieszkań w domu 0x3C ma być identyczny jak dla 0x27? Na opak.
Pozdrawiam.