Skocz do zawartości
UinqeN

Problem z lcd shield naArduino Uno

Pomocna odpowiedź

Witam forumowiczow, mam problem jak wspomnialem w temacie z lcd sheild . Wprowadzam taki kod

/*
 LiquidCrystal Library - Autoscroll

Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.

This sketch demonstrates the use of the autoscroll()
and noAutoscroll() functions to make new text scroll or not.

The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)

Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe

This example code is in the public domain.

http://arduino.cc/en/Tutorial/LiquidCrystalAutoscroll

*/

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {
 // set up the LCD's number of columns and rows:
 lcd.begin(16, 2);
}

void loop() {
 // set the cursor to (0,0):
 lcd.setCursor(0, 0);
 // print from 0 to 9:
 for (int thisChar = 0; thisChar < 10; thisChar++) {
   lcd.print(thisChar);
   delay(500);
 }

 // set the cursor to (16,1):
 lcd.setCursor(16, 1);
 // set the display to automatically scroll:
 lcd.autoscroll();
 // print from 0 to 9:
 for (int thisChar = 0; thisChar < 10; thisChar++) {
   lcd.print(thisChar);
   delay(500);
 }
 // turn off automatic scrolling
 lcd.noAutoscroll();

 // clear screen for the next loop:
 lcd.clear();
}

Piny w LiquidCrystal lcd(8,9,4,5,6,7); zmienilem przez wzglad na internetowy poradnik. Sam w swobie wyswietlacz nie pokazuje mi niczego, nawet rzedu prostokatow ktore powinieniem byl wyregulowac potencjometrem znajdujacym sie na plycie. Moj wyswietlacz jest niebieski i taki z niego pozytek. Podlaczenie fizyczne zle nie jest bo nie da sie podpiac tej wkladki(mam na mysli lcd shield) na odwrot. W narzedziach plytka jak i com sa zgodne,za to mam ustawiony programator na USBasp na pozostalych ustawianiecha takze probowalem wgrac ten kod ale efekt byl ten sam. Jesli ktos ma chwile to poprosze o wsparcie 🙂

Udostępnij ten post


Link to post
Share on other sites

Zaraz, to nie możesz wgrać kodu czy wgrany do Arduino program nie działa?

A coś innego umiesz wgrać? Mruganie diodą (słynny blink który masz w przykładach) działa?

Naprawdę masz programator USBasp? Bo do płytki UNO podłączonej kablem USB ustawiasz:

Narzędzia: Płytka: Arduino/Genuino Uno

Programator: AVRISP mkII

i port COM jaki tam Ci się pojawił nowy.

Udostępnij ten post


Link to post
Share on other sites
Zaraz, to nie możesz wgrać kodu czy wgrany do Arduino program nie działa?

A coś innego umiesz wgrać? Mruganie diodą (słynny blink który masz w przykładach) działa?

Naprawdę masz programator USBasp? Bo do płytki UNO podłączonej kablem USB ustawiasz:

Narzędzia: Płytka: Arduino/Genuino Uno

Programator: AVRISP mkII

i port COM jaki tam Ci się pojawił nowy.

Blad poczatkujacego , juz uzupelniam opis. Caly programator arduino uno dziala bez zarzutow, problem pojawia sie w momencie podalczenie lcd shielda. Jak wspomnialem wczesniej wyswietlacz ten jest jakby martwy , reaguje tylko na zasilanie (jest tylko i wilacznie pdswietlany). W przypadku podaleczenia samego wyswietlacza lcd przez plytke stykowa wszystko dziala tak jak powinno. Ten program jest przykladowy , poprostu nie moge wzbudzic wyswietalacza ani wyswietlac na nim czego kolwiek

Ps. Zmeinilem opcje programatora wedlug podpowiedzi, niestety nie roziwazuje to mojego problemu 🙁 A podpiac na odwort lcd shielda poprostu sie nie da 😃 wyciecia miedzy pinami

wykluczaja taki blad

IMG_20170203_180703.thumb.jpg.8de5748c5a744759241adcc482da507a.jpg

Udostępnij ten post


Link to post
Share on other sites

Czyli przy połączeniu przez płytkę stykową program działa i wyświetla wszystko jak należy? Podłączałeś programator z podłączonym wyświetlaczem do płytki stykowej?

Niestety z praktyki wiem że wyświetlacze HD44780 czasami bywają kapryśne, w tym sensie że niektóre działają tak jak powinny a niektóre nie będą działać prawidłowo bez zwiększonych opóźnień.

Próbowałeś korzystać z tego wyświetlacza nie używając gotowych bibliotek? Mi najczęściej trafiały się problemy jeśli korzystałem z gotowych bibliotek 😉

Udostępnij ten post


Link to post
Share on other sites

To ja już nic nie rozumiem.

Co to jest "Caly programator arduino uno"? To programator (np. USBasp) czy płytka Arduino UNO?

"W przypadku podaleczenia samego wyswietlacza lcd przez plytke stykowa wszystko dziala tak jak powinno"

Czy podłączałeś inny wyświetlacz czy ten sam na shieldzie, ale drutami i do czego? Do płytki stykowej? Co na niej było?

"Zmeinilem opcje programatora wedlug podpowiedzi, niestety nie roziwazuje to mojego problemu"

Którego problemu? Z wgrywaniem kodu do pamięci FLASH procesora czy z jego niedziałaniem? Odróżniasz jedno od drugiego? Spróbuj wyrażać się jaśniej. Nie chodzi że jesteś początkującym, tylko czytaj swoje posty przed wysłaniem jak ktoś kto nic nie wie o tym co robisz i próbuj je zrozumieć.

Czy możesz wskazać miejsce gdzie kupiłeś ten shield i/lub jego typ/schemat? Przy bezpośrednim nałożeniu jednego na drugie właściwie jedynym źródłem błędu jest definicja pinów w konstruktorze LiquidCrystal lcd(). Piszesz, że coś tam zmieniałeś - wg czego? Możesz zapadać link do tego poradnika? Kolejność wydaje się dobra (RS, E, D4-7) i chyba pasuje do typowego shielda LCD, ale może Twój jest jakiś inny? I skoro coś działało na płytce stykowej, to pokaż jak to połączyłeś i wrzuć kod który tam działał - to chyba najlepszy punkt wyjścia do poszukiwań błędu.

Udostępnij ten post


Link to post
Share on other sites
Czyli przy połączeniu przez płytkę stykową program działa i wyświetla wszystko jak należy? Podłączałeś programator z podłączonym wyświetlaczem do płytki stykowej?

Niestety z praktyki wiem że wyświetlacze HD44780 czasami bywają kapryśne, w tym sensie że niektóre działają tak jak powinny a niektóre nie będą działać prawidłowo bez zwiększonych opóźnień.

Próbowałeś korzystać z tego wyświetlacza nie używając gotowych bibliotek? Mi najczęściej trafiały się problemy jeśli korzystałem z gotowych bibliotek 😉

Po przeczytaniu tego postu wpisalem program z poza glownej biblioteki. Niestety nic sie nie zmienilo. Moze wyswietlacz jest uszkodzony? 🙁 ,dziwi mnie jednak fakt ze jest on jak wspomnialem wczesniej zupelnie martwy(poza podswietleniem) nie chce sie skubany dac wysterowac. Wpisalem taki kod

#include <LiquidCrystal.h>
double odczyt;
LiquidCrystal lcd(8,9,4,5,6,7);// informacje do jakich pinow zostal podlaczony nowy wyswietlacz
void setup() {
lcd.begin(16,2); //deklaracja typu
lcd.clear();
lcd.setCursor(0,0); //ustawaienie kursora 
lcd.print("PROBA 2"); //tkest w wierszu 1
lcd.setCursor(0,1); //ustawienie kursora
lcd.print("LCD NIE DZIALA");

}
void loop () {
}

[ Dodano: 04-02-2017, 15:30 ]

To ja już nic nie rozumiem.

Co to jest "Caly programator arduino uno"? To programator (np. USBasp) czy płytka Arduino UNO?

"W przypadku podaleczenia samego wyswietlacza lcd przez plytke stykowa wszystko dziala tak jak powinno"

Czy podłączałeś inny wyświetlacz czy ten sam na shieldzie, ale drutami i do czego? Do płytki stykowej? Co na niej było?

"Zmeinilem opcje programatora wedlug podpowiedzi, niestety nie roziwazuje to mojego problemu"

Którego problemu? Z wgrywaniem kodu do pamięci FLASH procesora czy z jego niedziałaniem? Odróżniasz jedno od drugiego? Spróbuj wyrażać się jaśniej. Nie chodzi że jesteś początkującym, tylko czytaj swoje posty przed wysłaniem jak ktoś kto nic nie wie o tym co robisz i próbuj je zrozumieć.

Czy możesz wskazać miejsce gdzie kupiłeś ten shield i/lub jego typ/schemat? Przy bezpośrednim nałożeniu jednego na drugie właściwie jedynym źródłem błędu jest definicja pinów w konstruktorze LiquidCrystal lcd(). Piszesz, że coś tam zmieniałeś - wg czego? Możesz zapadać link do tego poradnika? Kolejność wydaje się dobra (RS, E, D4-7) i chyba pasuje do typowego shielda LCD, ale może Twój jest jakiś inny? I skoro coś działało na płytce stykowej, to pokaż jak to połączyłeś i wrzuć kod który tam działał - to chyba najlepszy punkt wyjścia do poszukiwań błędu.

Juz sie poprawiam, cale arduino czyli podlaczenie arduino uno przez usb do komputera.(samo arduino uno)

Nie, podlaczylem inny wyswietlacz wedlug tego poradnika :

Nie roziwazuje to mojego problemu z oblsuga lcd shielda, wszystko inne jest cacy 🙂

Zakupilem shielda ze strony :http://allegro.pl/modul-shield-lcd-arduino-wyswietlacz-klawiatura-i5818224548.html?snapshot=MjAxNy0wMS0yOFQxNjozMjoyN1o7YnV5ZXI7YTRiZjIyN2I0N2I3NTk3OTE5NjRhZjRkYjU2MTllMjI2NGE2YTkxM2ViYWQ4ZWY5ZWRiMTA2NzM5ODZjZTdhYw== a co do poradinka to skorzystalem z tego :https://www.youtube.com/watch?v=gAkc5LShEXY&t=214s mistrz z filmiku zaczyna tlumaczyc zmiane od 2:21 ,a co do programi jaki dzialal przez plytke stykowa to ten :

#include <LiquidCrystal.h>
double odczyt;
LiquidCrystal lcd(8,9,4,5,6,7);// informacje do jakich pinow zostal podlaczony nowy wyswietlacz
void setup() {
lcd.begin(16,2); //deklaracja typu
lcd.clear();
lcd.setCursor(0,0); //ustawaienie kursora 
lcd.print("Nap. Odczytane"); //tkest w wierszu 1
lcd.setCursor(0,1); //ustawienie kursora
lcd.print("0.000V");

}

void loop() {
odczyt = analogRead(A0)*5.0/1023.0; 
lcd.setCursor(0,1);
lcd.print(odczyt);
delay(200);
}

Mam nadzieje ze teraz sie dogadamy 🙂

Arduino_LCD.thumb.png.fea6965d27df76314212075d1efb67c1.png

Udostępnij ten post


Link to post
Share on other sites

Ok, to mamy pełny obraz. Nie wygląda to dobrze a przynajmniej ja nie widzę jakiegoś oczywistego babola który zrobiłeś.

Przede wszystkim zawsze zaczynaj od dokumentacji producenta. Skoro Twój shield jest f-my DFRobot, to żadne tam magiczne poradniki na YT tylko szukasz źródeł i tam powinieneś zacząć:

https://www.dfrobot.com/wiki/index.php/LCD_KeyPad_Shield_For_Arduino_SKU:_DFR0009

Ta firma robiła kiedyś starszą wersję tego samego shielda a jak się okazuje na naszym rynku często można kupić okazy naprawdę muzealne:

https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

Z tego co widzę to akurat w tym wypadku różnią się trochę opornikami przy klawiaturze więc inne są napięcia mierzone przez ADC podczas jej odczytu, no i wyglądem samej płytki. Wydaje mi się, że podłączenie LCD jest takie samo, więc to nie tu jest problem.

Na powyższych stronach są przykładowe programy które powinny działać na UNO przeniesione wprost 1:1. Pewnie nie zadziałają, skoro nie działa Twój kodzik wyglądający poprawnie.

Kluczowa kolejność pinów w wywołaniu:

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

jest taka jak u Ciebie w kodzie, więc to też nie to.

Jak rozumiem wszystko inne jest OK:

- płytka w IDE ustawiona na UNO,
- kręciłeś potencjometrem od kontrastu na shieldzie i podczas pracy programu - gdy spodziewałeś się jakichś napisów - nic na ekranie się nie zmieniało (a kontrast?),
- obejrzałeś dokładnie shield czy nie ma jakichś niedolutowanych pinów od złącza do UNO lub do samego LCD,
- pomierzyłeś podstawowe zasilania w czasie pracy: Vcc (5V) i VLCD (to z potencjometru, powinno być w granicach od 0 do 0.5V),
- nie zrobiłeś wcześniej temu shieldowi niczego głupiego, co go załatwiło a o czym wstydzisz się teraz napisać.

Mam kilka pomysłów:

1. Sprawdź czy shield w ogóle dopuszcza do wykonywania jakiegoś programu: załóż go i odpal wypisywanie czegoś na porcie szeregowym lub LED blink. Upewnij się, że przycisk RESET na shieldzie działa tj. resetuje wykonywany program.

2. Napisz prosty program do włączania/wyłączania podświetlenia. Numer pinu masz w dokumentacji producenta. Ustaw go na OUTPUT i wystawiaj tam w pętli 1 i 0 np. co sekundę.

3. Napisz prosty program powoli (np. 1Hz) ruszający 0/1 w pętli tylko jednym pinem na raz, po kolei: 8, 9, 4, 5, 6, 7 i sprawdź woltomierzem czy poprawne napięcia przechodzą na shield. Ustaw na początku na wyjścia w stanie 0 wszystkie 6 pinów, ale machaj tylko jednym. Ma być prawie 0 i prawie 5V. Każde odstępstwo jest podejrzane.

4. Podłącz shield kabelkami do UNO tak jak podłączałeś "goły" LCD, już bez płytki pośredniej. Wyprowadzenia masz w dokumentacji producenta. Nie zapomnij masie i zasilaniu.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...