Wyświetlacz ze starego Siemens’a M55 sterowany przez Arduino + TERMOMETR DS18B20

Wyświetlacz ze starego Siemens’a M55 sterowany przez Arduino + TERMOMETR DS18B20

Witajcie, dziś przedstawię wam poradnik jak podłączyć wyświetlacz LM15SGFNZ07 który wygrzebiecie z telefonów Siemens M55, S55, A60, C60, MC60.
Na aukcjach można pozyskać uszkodzone telefony za ok 10zł. a może nawet macie jakiś gdzieś w czeluściach swoich szuflad :)
Jako że ja dostałem od kumpla stary zepsuty Siemens M55 i znalazłem informacje jak wykorzystać z niego LCD to postanowiłem napisać dla was ten poradnik :)

2013-02-14 21.17.39

Poradnik powstał przy zebraniu materiałów z kilku źródeł w których były bardziej szczegółowo opisane zasady działania.

Ja postaram się je przedstawić bardziej zrozumiale dla laików bo sam jestem początkujący w świecie Arduino jak i elektroniki. Głównie to moje hobby :)

Przejdźmy więc do rzeczy :)

Wyświetlacz:

Wyświetlacz posiada 10 padowe złącze do którego przylutowałem kabelki ale można też wykorzystać taśmę (akurat nie miałem jej pod ręką).

Wymiary wyświetlacza to 101x80px.

SONY DSC

Piny od wyświetlacza:

SONY DSC SONY DSC

 

  • Pin 1 – [ Cs ]
  • Pin 2 – [ Reset ]
  • Pin 3 – [ Rs ]
  • Pin 4 – [ Sclk ]
  • Pin 5 – [ Sdata ]
  • Pin 6 – [ +2.9V ]
  • Pin 7 – [ Gnd ]
  • Pin 8 – [ Led1 + ]
  • Pin 9 – [ Led1, Led2 GND ]
  • Pin 10 – [ Led2 + ]

Podłączenie do Arduino:

arduino

 

LCD – Arduino

  • Pin 1 – Pin 6 (Rezystor 10kΩ)
  • Pin 2 – Pin 5 (Rezystor 10kΩ)
  • Pin 3 – Pin 4 (Rezystor 10kΩ)
  • Pin 4 – Pin 3 (Rezystor 10kΩ)
  • Pin 5 – Pin 2 (Rezystor 10kΩ)
  • Pin 6 – 3V3 (Producent zaleca 2.9V ale 3.3V mu nie zaszkodzi)
  • Pin 7 – Gnd
  • Pin 8 – 3V3
  • Pin 9 – Gnd
  • Pin 10 – 3V3

Według tego poradnika należy dać rezystory 4.7kΩ ja dałem 10kΩ (takie posiadałem) czyli większe i działa dobrze.

Nigdzie nie znalazłem not katalogowych producenta do tego wyświetlacza. Dlatego też nie mam pewności czy instrukcje na których podstawie napisałem ten poradnik są bezpieczne dla wyświetlacza.
Zalecał bym zmontowanie układu (na Atmega 8/168/328) zasilanego 3.3V z wykorzystaniem rezystorów 4.7k (zamiast 10k) ponieważ tutaj Arduino dostarcza na wyjściu napięcie 5V które przy dłuższym użytkowaniu może (choć nie musi) skrócić żywotność wyświetlacza.

Jak wszystko jest już podłączone to zostało nam pobrać biblioteki i wgrać kod.

Potrzebne biblioteki:

Biblioteki wrzucamy do folderu /libraries/

Kod:

 

Opis funkcji

  • send_lcd(unsigned char data) – Funkcja wysyłąjaca bajt do LCD.
  • init_lcd(void) – Funkcja inicjalizująca LCD, należy ja dodać na początku funkcji main()
  • contrast_lcd(unsigned char contrast) – Funkcja ustawiająca kontrast (przyjmuje dane w postaci 12 bitowej np: contrast_lcd (0x11f)
  • window_lcd(unsigned char xstart, unsigned char ystart, unsigned char xend, unsigned char yend) – Funkcja rezerwująca w pamięci dany obszar
  • cursor_lcd(unsigned char row, unsigned char col) – Funkcja ustawiajaca pozycję kursora
  • pixel_lcd(unsigned char x, unsigned char y,unsigned int color) – Funkcja rysująca pixel w danym kolorze; x jest numerem pixela wzdłuż osi poziomej od lewej strony, y wzdłuż osi pionowej od dołu ekranu.
  • clear_lcd(unsigned int col) – Funkcja zapełniajaca cały ekran wybranym kolorem
  • line_lcd(unsigned char x1,unsigned char x2, unsigned char y1, unsigned char y2, unsigned int color) – Funkcja rysująca linię, x adresowane jest od lewej strony, y od dołu
  • area_lcd(unsigned char x,unsigned char y, unsigned char height, unsigned char width, unsigned int color) – Funkcja zapełniająca wybrany obszar kolorem, x adresowane jest od lewej strony, y od dołu, szerokosć w prawa stronę od punktu poczatkowego, wysokosć w górę
  • frame_lcd(unsigned char x,unsigned char y, unsigned char height, unsigned char width, unsigned char size, unsigned int color) – Funkcja rysująca ramkę, wszystko adresowane tak jak dla funkcji area_lcd, przedostatni argument oznacza szerokość linii ramki
  • chr_lcd( char chr, unsigned char x, unsigned char y, unsigned int size, unsigned int color_font, unsigned int color) – Funkcja pisząca znak. Argumenty: x-numer pozycji znaku, y-numer linii znaku, size-rozmiar czcionki (1 lub 2), font_color-kolor czcionki, color-kolor tła czcionki(jesli -1 rysowana jest sama czcionka bez tła)
  • str_lcd(char *str, unsigned char x, unsigned char y, unsigned int size, unsigned int color_font, unsigned int color) – Funkcja pisząca tekst, argumenty jak wyżej,  przykład: str_lcd(“TEST LCD”,1, 2, 2, RED, WHITE);

Źródło: Obsługa LCD z siemensa M55. Biblioteki z języku C dla AVR. – Drzasiek

Kolory są zdefiniowane w bibliotece (plik LM15SGFNZ07.h)

#define WHITE 0xFFF  // Biały
#define BLACK 0x000 //Czarny
#define RED 0xF00 // Czerwony
#define GREEN 0x0F0 // Zielony
#define BLUE 0x00F // Niebieski
#define CYAN 0x0FF
#define MAGENTA 0xF0F
#define YELLOW 0xFF0 //Żółty
#define BROWN 0xB22 // Brązowy
#define ORANGE 0xFA0 //Pomarańczowy
#define PINK 0xF9E // Różowy

Przetłumaczyłem dla nieznających angielskiego ale kolory to chyba każdy powinien znać :D
Możliwe że można zdefiniować ich więcej ale jeszcze nie próbowałem.

Mamy już działający wyświetlacz a teraz dodajmy do niego termometr :)

Potrzebny nam będzie popularny czujnik temperatury DS18B20 oraz rezystor 4,7kΩ podłączony według schematu.

Termometr_DS18B20

 

Potrzebne biblioteki:

Biblioteki wrzucamy do folderu /libraries/

Kod:

 

Tak to działa:

No i to by było na tyle. Mam nadzieję że instrukcja ta będzie dla was pomocna i zrobicie pożytek ze swojego starego telefonu :)

Ocena: 4.78/5 (głosów: 49)

Podobne posty

58 komentarzy do “Wyświetlacz ze starego Siemens’a M55 sterowany przez Arduino + TERMOMETR DS18B20

Odpowiedz

anuluj

Masz uwagi?