Arduino Polska Forum

Pełna wersja: Biblioteka LiquidCrystal_I2C.h
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2
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.
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.
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.
Właśnie też tak myślałem że pierwsza jest ok ale wywala błąd TongueOSITIVE was not in scope
(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
(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
(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 "//"???
(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 ");
}
(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 ");
}
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.
Stron: 1 2