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:
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 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.
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