Arduino LCD – krótka instrukcja

Electropia.pl wprowadziła do sprzedaży serię wyświetlaczy LCD z funkcją dotykową o rozmiarze 2.4 przystosowanych do użycia z Arduino:
arduino_clone_and_lcdlcd_tft_backlcd_tft_on_arduino
Wyświetlacze te napędzane są przez układ Samsung S6D0154.

Biblioteki

Żeby uruchomić wyświetlacz należy najpierw dodać kilka bibliotek do Arduino IDE:

Biblioteki te umieszczone są w repozytoriach git-a; żeby je dodać do Arduino IDE (instrukcje dla Internet Explorera):

  • Otwórzcie podane linki
  • Z prawej strony znajdziecie klawisz ‚Download ZIP’; wciśnijcie go, żeby pobrać kod
  • Kliknijcie ‚Otwórz’ (nie: ‚Zapisz’); otwarte archiwum pojawi się po chwili w eksploratorze, np. katalog TFTLCD-Library-master
  • Przekopiujcie cały rozpakowany katalog do bibliotek Arduino IDE (zob. ramka poniżej):
    • [CTRL]+[C] na katalogu (skopiowanie do schowka)
    • Przejdźcie do: C:\Program Files (x86)\Arduino\libraries
    • Wklejcie katalog [CTRL]+[V]

Arduino IDE trzyma biblioteki w katalogu wskazanym przez jego konfigurację. Możecie sprawdzić ten katalog w menu Plik/Preferencje w polu „Lokalizacja szkicownika”. Biblioteki są odczytywane z podkatalogu „libraries”.

Powyższe operacje wykonajcie dla każdej z 3 bibliotek. Możecie do tego potrzebować praw administratora. Po tej operacji katalog ‚C:\Program Files (x86)\Arduino\libraries’ powinien zawierać nowe podkatalogi ‚Adafruit-GFX-Library-master’, ‚TFTLCD-Library-master’ i ‚Touch-Screen-Library-master’. Nowe biblioteki pojawią się w Arduino IDE pod Szkic-Importuj bibliotekę

Pierwszy kod

Oto przykładowy kod, który umożliwi Wam wykreślenie niebieskiego kwadratu na tle czerwonego ekranu. Otwórzcie Arduino IDE i dołączcie biblioteki ‚Szkic-Importuj bibliotekę-Adafruit-GFX-Library-master’ oraz ‚Szkic-Importuj bibliotekę-TFTLCD-Library-master’. Kod programu wygląda tak:

#include <registers.h>
#include <pin_magic.h>
#include <Adafruit_TFTLCD.h>
#include <Adafruit_GFX.h>
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
#define RED 0xF800
#define BLUE 0x001F
//Tworzymy instancję wyswietlacza:
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
void setup(){
  //...
  tft.reset();
  tft.begin(0x154);
  //Czerwony ekran
  tft.fillScreen(RED);
}
void loop(){
  //Niebieski ekran
  tft.fillRect(50, 50, 100, 100, BLUE);
}

Kilka przydatnych poleceń poniżej:

tft.setRotation(i); Kierunek ekranu; i=0..3
tft.fillScreen(z); Wypełnienie całego ekranu; z: kolor w systemie 565, np:
#define RED 0xF800
z = tft.color565(r,g,b) Podaj kod koloru (r,g,b); do wykorzystania z np. fillScreen()
tft.fillRect(x, y, xl, yl, z); Wykreśl na pozycji (x,y) wypełniony kwadrat o bokach (xl, yl) i kolorze z
tft.drawPixel(x,y,c); Zapal piksel na pozycji (x,y) na kolor c
tft.setTextSize(4); Ustaw wielkość czcionki na 4
tft.setCursor(x,y); Ustaw kursor w pozycji (x,y)
tft.println(„a”); Wyświetl napis „a” na ekranie

Dla przykładu, żeby wyświetlić napis „electropia” na ekranie:

  • Ustaw wielkość czcionki:tft.setTextSize(4);
  • Ustaw kursor w pozycji 0,20:tft.setCursor(0,20);
  • Wyświetl napis:tft.println("electropia");

Arduino Mega 2560

Powyższe instrukcje zadziałają dla Arduino UNO R3. Jeżeli jednak spróbujecie przełożyć wyświetlacz do Arduino Mega 2560 i uruchomić ten sam kod (z tymi samymi bibliotekami) – zobaczycie jedynie jasny ekran.

W porównianiu do  UNO (i napędzającego go AtMega328p), w Arduino Mega piny cyfrowe Dx są podłączone do innych portów kontrolera AtMega2560. Stąd się bierze się różnica w działaniu.

Można to szybko rozwiązać:

  • Do katalogu z biblioteką ‚libraries/TFTLCD-Library-master’ dodajcie plik „mega_24_shield.h” pobrany z: githuba Smoke-And-Wires,
  • Z ‚libraries/TFTLCD-Library-master’ usuńcie plik „pin_magic.h” (skopiujcie oryginalny plik gdzieś na bok, żeby później przywrócić bibliotekę do stanu początkowego),
  • W pliku ‚libraries/TFTLCD-Library-master/Adafruit_TFTLCD.cpp’ zmieńcie linijkę:
    #include "pin_magic.h"
    na:
    #include "mega_24_shield.h"
  • Owórzcie nowy projekt, dodajcie biblioteki Szkic-Importuj bibliotekę-Adafruit-GFX-Library-master’ oraz ‚Szkic-Importuj bibliotekę-TFTLCD-Library-master’ (tak jak dla UNO); program powinien teraz teraz wyglądać tak:
#include <mega_24_shield.h>
#include <registers.h>
#include <Adafruit_TFTLCD.h>

#include <Adafruit_GFX.h>

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Skopiujcie resztę kodu podobnie jak dla UNO:

#include <mega_24_shield.h>
#include <registers.h>
#include <Adafruit_TFTLCD.h>
#include <Adafruit_GFX.h>

#define RED 0xF800
#define BLUE 0x001F
//Tworzymy instancję wyswietlacza:
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
void setup(){
  //...
  tft.reset();
  tft.begin(0x154);
  //Czerwony ekran
  tft.fillScreen(RED);
}
void loop(){
  //Niebieski ekran
  tft.fillRect(50, 50, 100, 100, BLUE);
}


Zauważyliście brak #define LCD_...? Nie są już potrzebne – autorzy „mega_24_shield.h” zdefiniowali je za Was!

Rezultatem powinna być oszałamiająca grafika:

mega_lcdOczywiście, żeby z powrotem użyć kodu na UNO, będziecie musieli przywrócić bibliotekę do stanu oryginalnego: zamienić „#include” w „libraries/TFTLCD-Library-master/Adafruit_TFTLCD.cpp”, z powrotem dodać  „pin_magic.h” (zrobiliście ich kopię przez modyfikacjami, prawda?) oraz usunąć „mega_24_shield” .

Biblioteka Swift Smoke-And-Wires obsługuje tylko wyświetlacze z czipem ST7781 (ID: 0x932x). Nie przyda się do tego LCD.

Podsumowanie

Keypad na Arduino z wyświetlaczem LCD TFT 2.4 cala
Keypad na Arduino z wyświetlaczem LCD TFT 2.4 cala

Moduł wyświetlacza będzie bardzo praktycznym uzupełnieniem Waszych projektów. Wbudowane gniazdo na karty SD pozwoli na przechowywanie kolorowych obrazków do wykorzystania na tło. Dotykowy interfejs wzbogaci Wasze projekty o element interakcji. Jestem pewien, że znajdziecie wiele zastosowań dla tego modułu. Moduł lcd tft 2.4 możecie kupić w sklepie electropia.pl

Źródła

  • http://misc.ws/2013/11/08/touch-screen-shield-for-arduino-uno/
  • http://forum.arduino.cc/index.php?topic=223769
  • http://forum.arduino.cc/index.php?topic=134708
  • http://forum.arduino.cc/index.php?topic=286790
  • https://github.com/samuraijap/TFTLCD-Library/issues/2
  • https://github.com/Smoke-And-Wires/

5 myśli nt. „Arduino LCD – krótka instrukcja”

  1. Nie wiem, czy jest Pan świadom tego, że Pana praca została wykorzystana na portalu majsterkowo.pl, bez podania źródła i autora (to się chyba nazywa plagiat).
    Proszę się zgłosić do administratora portalu, powinien zadziałać w temacie.

    1. Nie – nie byłem, dziekuję za reakcję. Swoje teksty publikuję na licencji Creative Commons: BY-NC-SA. każdy może ich użyć pod warunkiem dodania autorstwa, nie stosowania komercyjnego i dzielenia się na tych samych zasadach. Ba – nawiam do dzielenia się nimi i rozwijania – ale przy uznaniu powyższych zasad. Jeszcze raz dziękuję za informacje i zapraszam do dalszego odwiedzania mojego bloga:)

      1. Widzę, że odpowiedział Pan na tamten wpis.
        Wydaje mi się, że na majsterkowie wpis ten bierze udział w konkursie, w którym można uzyskać rabat na zakupy w sklepie botland. Więc podlega to pod kradzież.
        P.S. Nie, żebym nie lubił majsterkowa. Śledzę tamtą stronę prawie od początku istnienia. Ale kradzieży nie mogłem zostawić bez reakcji.

  2. Jestem ciekaw, dlaczego Pana odpowiedź dot. skopiowania bez zgody poradnika, na portalu majsterkowo.pl została usunięta ?

    1. Witam,
      Specjalnie poprosiłem admina majsterkowa, żeby nie usuwał tego tekstu – ale przepuścił mój komentarz (mimo że zawiera linki do tego bloga). Komentarz faktycznie pojawił się – ale zniknął po kilku godzinach. Nie wiem jak działa majsterkowo i kto może usuwać komentarze…
      Źle się czuję z całą tą sytuacją. Z jednej strony cieszę się, że ktoś korzysta z moich materiałów – z drugiej: szkoda, że w taki sposób… Może jednak w ten sposób sama idea dotrze do wiekszej liczby ludzi i to właśnie będzie plus? A może sprowokuje to gdzieś-u kogoś jakąś głębszą refleksję?
      Na forum majsterkowa natrafiłem na taki wątek: http://majsterkowo.pl/forum/czarna-seria-artykulow-w-poczekalni-t4301.html#p27047.
      Pozdrawiam,
      Arek

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *