• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
problem z wyświetlaczem I2c
#1
Witam. Mam problem z wyświetlaniem napisów na wyświetlaczu 16x2 z modułem I2c. Nie zależnie  czy podłącze SDA i SCL pod wyjście cyfrowe czy analogowe to wyświetla mi tylko po jednej literze z wiersza czyli "H" i "L" i nic poza tym. Adres wyświetlacza sprawdzałem i jest 0x3F. Biblioteka wgrana. Co robie żle?



 
Kod:
#include <LiquidCrystal_I2C.h>

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

void setup() {
  lcd.init();
  lcd.clear();         
  lcd.backlight();      // Make sure backlight is on
 
  // Print a message on both lines of the LCD.
  lcd.setCursor(2,0);   //Set cursor to character 2 on line 0
  lcd.print("Hello world!");
 
  lcd.setCursor(2,1);   //Move cursor to character 2 on line 1
  lcd.print("LCD Tutorial");
}

void loop() {
}
 
Odpowiedź
#2
Problem z biblioteką LiquidCrystal.

Możesz bawić się w char array zamiast stringa i wyświetlać znak po znaku albo spróbować zmienić bibliotekę (zobacz, czy ta zadziała: https://github.com/johnrickman/LiquidCrystal_I2C)
 
Odpowiedź
#3
(03-01-2023, 20:47)MadMrQ napisał(a): Problem z biblioteką LiquidCrystal.

Możesz bawić się w char array zamiast stringa i wyświetlać znak po znaku albo spróbować zmienić bibliotekę (zobacz, czy ta zadziała: https://github.com/johnrickman/LiquidCrystal_I2C)
niestety bez zmian, ale zauważyłem że z programu CodeDesigner wyświetla poprawnie ale jak przeniose kod z CodeDesignera do arduinoIDE to znowu tylko pierwsze litery. Czyli z programu CD pasują biblioteki a z AI już nie?
 
Odpowiedź
#4
(03-01-2023, 17:16)sp5is napisał(a): Witam. Mam problem z wyświetlaniem napisów na wyświetlaczu 16x2 z modułem I2c. Nie zależnie  czy podłącze SDA i SCL pod wyjście cyfrowe czy analogowe to wyświetla mi tylko po jednej literze z wiersza czyli "H" i "L" i nic poza tym. Adres wyświetlacza sprawdzałem i jest 0x3F. Biblioteka wgrana. Co robie żle?



 
Kod:
#include <LiquidCrystal_I2C.h>

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

void setup() {
  lcd.init();
  lcd.clear();        
  lcd.backlight();      // Make sure backlight is on
 
  // Print a message on both lines of the LCD.
  lcd.setCursor(2,0);   //Set cursor to character 2 on line 0
  lcd.print("Hello world!");
 
  lcd.setCursor(2,1);   //Move cursor to character 2 on line 1
  lcd.print("LCD Tutorial");
}

void loop() {
}
 
Odpowiedź
#5
Cześć spróbuj tego. I oczywiście sciągnij bibliotekę LiquidCrystal_I2C-1.1.2

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

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Ustawienie adresu ukladu na 0x27

void setup()
{
  lcd.begin(16,2);
  lcd.backlight(); // zalaczenie podwietlenia
  lcd.setCursor(0,0);
  lcd.print("LCD & I2C");
  delay(500);
  lcd.setCursor(0,1);
  lcd.print("**********");
}

void loop()
{
   lcd.backlight(); // zalaczenie podswietlenia
   delay(5000);
   lcd.noBacklight(); // wylaczenie podswietlenia
   delay(5000);
}
 
Odpowiedź
#6
żadnej reakcji
 
Odpowiedź
#7
Nie ma cyfrowych i analogowych pinów I2C, sprzętowy interfejs sprzętowy jest w UNO tylko 1, choć może być wyprowadzony na kilka zestawów pinów, typowo jest tylko na pinach A4 i A5, ale może być też dodatkowy zestaw pinów obok złącza ICSP, albo za pinem 13. To te same piny uC, weź multimetr i sprawdź.
Można użyć I2C programowego na dowolnych pinach, działa znacznie wolniej, ale czasami do testów wystarczy.
Linia I2C musi być podciągnięta do VCC przez rezystory 2-10k. CZASAMI moduły mają takie rezystory, czasami nie, czasami rezystancja wbudowanych jest nieodpowiednia, czasami kable za długie.
Może też być uszkodzone UNO, LCD, kable. Jak się ma jeden zestaw, to ciężko ustalić co, lepiej mieć kilka i w takich wypadkach podmienić, na początek można zacząć od kabli.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#8
(04-01-2023, 06:01)kaczakat napisał(a): Nie ma cyfrowych i analogowych pinów I2C, sprzętowy interfejs sprzętowy jest w UNO tylko 1, choć może być wyprowadzony na kilka zestawów pinów, typowo jest tylko na pinach A4 i A5, ale może być też dodatkowy zestaw pinów obok złącza ICSP, albo za pinem 13. To te same piny uC, weź multimetr i sprawdź.
Można użyć I2C programowego na dowolnych pinach, działa znacznie wolniej, ale czasami do testów wystarczy.
Linia I2C musi być podciągnięta do VCC przez rezystory 2-10k. CZASAMI moduły mają takie rezystory, czasami nie, czasami rezystancja wbudowanych jest nieodpowiednia, czasami kable za długie.
Może też być uszkodzone UNO, LCD, kable. Jak się ma jeden zestaw, to ciężko ustalić co, lepiej mieć kilka i w takich wypadkach podmienić, na początek można zacząć od kabli.

Wyświetlacz sprawny, z aplkacją codedesigner działa wszystko jak należy.
 
Odpowiedź
#9
Jeżeli z codedesigner działa, a biblioteka w Arduino IDE nie działa, to znaczy, że nie umiesz użyć przykładu z biblioteki, albo masz więcej bibliotek, mogą być na tyle podobne, że nie wypluwa błędów, ale na tyle różne, że jednak nie działają.
Włącz sobie pełne komunikaty podczas kompilacji i sprawdź, czy do kompilacji jest użyta ta biblioteka, którą chcesz, a jak jest ich więcej to usuń niepotrzebne lub przenieś je poza katalogi Arduino.
Też używam LiquidCrystal_I2C-1.1.2 od Marco Schwartz i działa OK.

Są LCD z nietypowym połączeniem adaptera I2C do LCD, wtedy trzeba użyć biblioteki, w której jest możliwość edycji, który pin jest podłączony do którego pinu LCD.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#10
(04-01-2023, 18:18)kaczakat napisał(a): Jeżeli z codedesigner działa, a biblioteka w Arduino IDE nie działa, to znaczy, że nie umiesz użyć przykładu z biblioteki,  albo masz więcej bibliotek, mogą być na tyle podobne, że nie wypluwa błędów, ale na tyle różne, że jednak nie działają.
Włącz sobie pełne komunikaty podczas kompilacji i sprawdź, czy do kompilacji jest użyta ta biblioteka, którą chcesz, a jak jest ich więcej to usuń niepotrzebne lub przenieś je poza katalogi Arduino.
Też używam LiquidCrystal_I2C-1.1.2  od Marco Schwartz i działa OK.

Są LCD z nietypowym połączeniem adaptera I2C do LCD, wtedy trzeba użyć biblioteki, w której jest możliwość edycji, który pin jest podłączony do którego pinu LCD.
Dziękuje, to był strzał w dziesiątke. Zadziałało bez problemu z LiquidCrystal I2C 1.1.2  po tym jak inne wyrzuciłem z katalogu.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości