• 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
Wyświetlacz LCD z konwerterem I2C nie wyświetla tekstu
#1
Witam serdecznie wszystkich,
mam taki problem, a mianowicie chodzi o problem z wyświetlaczem LCD. Tworzę projekt komputera pokładowego przy użyciu Arduino Uno z obrotomierzem do roweru przy użyciu poradnika na YT
 
https://youtu.be/prYAMnMPqTk?t=490

Ogólnie nie miałbym problemu z podłączeniem samemu, jednakże pierwszy raz korzystam z konwertera I2C do wyświetlacza LCD, więc nie byłem pewny na jakiej zasadzie to działa. Po podłączeniu wszystkiego przyszedł czas na testy. Podłączyłem zasilanie i wszystko działa, chociażby takie jest wrażenie, bo się świeci wyświetlacz. Ściągnąłem bibliotekę LiquidCrystal_I2C. Następnie wgrałem kod:


Kod:
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

const int hallPin = 2;
const unsigned long sampleTime = 5000;
const int maxRPM = 300;

void setup() {
  Serial.begin(9600);
  pinMode(hallPin, INPUT);
  lcd.begin(16, 2);
  lcd.print("Miernik kadencji");
  delay(5000);
  lcd.clear();
}

void loop() {
  delay(100);
  int rpm = getRPM();
  lcd.clear();
  displayRPM(rpm);
  displayBar(rpm);
}

float getRPM() { //int
  // sample for sampleTime in millisecs
  int count = 0;
  boolean flag = LOW;
  unsigned long currentTime = 0;
  unsigned long startTime = millis();
  while (currentTime <= sampleTime)  {
    if (digitalRead(hallPin) == HIGH) {
      flag = HIGH;
    }
    if (digitalRead(hallPin) == LOW && flag == HIGH) {
      count++;
      flag = LOW;
    }
    currentTime = millis() - startTime;
  }
  float count2rpm = int(60000. / float(sampleTime)) * count;
  return count2rpm;
}

void displayRPM(int rpm) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("RPM: ");
  lcd.print(rpm, DEC);
}

void displayBar(int rpm) {
  int numOfBars = map(rpm, 0, maxRPM, 0, 15);
  lcd.setCursor(0, 1);
  if (rpm != 0) {
    for (int i = 0; i <= numOfBars; i++)
    {
      lcd.setCursor(i, 1);
      lcd.write(1023);
    }
  }
}


Po kompilacji wyskoczył błąd

\obrotowa.ino: In function 'void displayBar(int)':
\obrotowa.ino:62:21: warning: large integer implicitly truncated to unsigned type [-Woverflow]


lecz wszystko się normalnie wgrało. Problem w tym, że na wyświetlaczu nie wyświetla się dosłownie nic, tylko się ciągle świeci. Postanowiłem więc wgrać jakiś najprostszy kod, aby sprawdzić czy to wina kodu, mianowicie taki:


Kod:
/*
*  LCM1602 & Arduino Uno
*  VCC - > 5 V
*  GND - GND
*  SCL -> A5
*  SDA -> A4
*/
#include <Wire.h>  // standardowa biblioteka Arduino
#include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD

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


void setup()
{
lcd.begin();  // Inicjalizacja LCD
lcd.backlight(); // zalaczenie podwietlenia
lcd.setCursor(0,1);
lcd.print("Hello, world!"); //tekst

}

void loop()
{
  lcd.backlight(); // zalaczenie podswietlenia
  delay(5000);
  lcd.noBacklight(); // wylaczenie podswietlenia
  delay(5000);
}


Kod się wgrał, wyświetlacz wygaszał się i odpalał w pętli, jednak napisu jakiekolwiek dalej brak. Próbowałem podłączać SCL oraz SDA i do SCL oraz SDA na Arduino i tak jak w drugim kodzie do A4 i A5, ale nic to nie zmieniło.
 
Pytanie następujące - czy jest możliwość, że otrzymałem uszkodzony wyświetlacz i temu nie wyświetlają mi się teksty, czy jednak problem może tkwić gdzieś indziej lub robię coś źle i popełniam błąd. Wszystkie części dzisiaj zakupione.
  • Płytka Arduino Uno
  • Konwerter I2C dla wyświetlacza LCD HD44780
  • Wyświetlacz LCD 2x16 znaków niebieski ze złączami - justPi
  • 4 baterie AA 1.5V
 
Odpowiedź
  


Wiadomości w tym wątku
Wyświetlacz LCD z konwerterem I2C nie wyświetla tekstu - przez xK2x - 09-02-2023, 23:12

Skocz do:


Przeglądający: 1 gości