İPUCU

Donanım Bilgisayar Donanımı İle İlgili Yardımlaşma Bölümümüz ...

Seçenekler

16×2 LCD Modülünü Bağladık!

'iMuh@fiz - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
08/2012
Nereden:
Bakü
Yaş:
26
Mesajlar:
11.214
Konular:
4118
Teşekkür (Etti):
1199
Teşekkür (Aldı):
1250
Ticaret:
(0) %
18-07-2013 10:23
#1
16×2 LCD Modülünü Bağladık!

Merhaba arkadaşlar, öncelikle baya gecikmeli olan bu yazımdan ötürü sizlerden özür dilerim. İşlerimin yoğunluğundan dolayı anca yazabiliyorum.
Bu yazımda 16×2 bir LCD Modülü Raspberry Pi’ye nasıl bağladığımdan ve çalıştırdığımdan bahsedeceğim.
Gerekenler:

  • Raspberry Pi
  • 16×2 LCD Modülü. Ben mavi üstü beyaz yazılı olanı edindim.
  • 2 Tane 5K Ayarlı Direnç (Biri ekran arka plan parlaklığı, diğeri ekran kontrastını ayarlamak için, hoşunuza giden değer için sabit direnç de bağlayabilirsiniz)
  • Breadboard
  • Breadboard üzerinde pinleri birleştirmek için Jumper Kit kullandım, siz tabi tek damarlı kablo da kullanabilirsiniz.
  • Erkek-Erkek ve ayarlı dirençleri bağlayabilmem için Dişi-Erkek Jumper Kablo kullandım.
  • Ben kolaylık olsun diye GPIO Breakout Kit kullandım, siz tabi bunu kullanmak zorunda değilsiniz.
Yapılacaklar

  • Öncelikle LCD Modülünün pinlerinden bahsetmek istiyorum:
    1. Ground
    2. VCC (5V)
    3. Contrast adjustment (VO)
    4. Register Select (RS) (RS=0: Command, RS=1: Data)
    5. Read/Write (R/W) R/W=0: Write, R/W=1: Read
    6. Enable
    7. Bit 0 (Not required in 4-bit operation)
    8. Bit 1 (Not required in 4-bit operation)
    9. Bit 2 (Not required in 4-bit operation)
    10. Bit 3 (Not required in 4-bit operation)
    11. Bit 4
    12. Bit 5
    13. Bit 6
    14. Bit 7
    15. LED Backlight Anode (+)
    16. LED Backlight Catode (-)
  • Pi’yi şu şekilde bağladım ben:
    LCD Pin Function Pi Function Pi Pin 01 GND GND P1-06 02 +5V +5V P1-02 03 Contrast GND P1-06 04 RS GPIO7 P1-26 05 RW GND P1-06 06 E GPIO8 P1-24 07 Data 0 08 Data 1 09 Data 2 10 Data 3 11 Data 4 GPIO25 P1-22 12 Data 5 GPIO24 P1-18 13 Data 6 GPIO23 P1-16 14 Data 7 GPIO18 P1-12 15 +5V via 560ohm 16 GND P1-06
  • Cihaz 4 Bit moduna geçirildiği için Gerekli GPIO sayısı da azaldığından hem bağlaması hem işlemesi daha kolay oluyor. Bu sebeple böyle bağladık. Ben ayrıca 16. pin (resimde en sağdaki pin olarak kalıyor) ve 3. pin arasına 2 adet ayarlı direnç bağladım, bu sayede ekranın parlaklık ve kontrastını kolayca ayarlayabildim kendimce (ayarlı direnç bağlamazsanız full kontrasttan çalışmıyor (hepsi yanıyor) gibi görüyorsunuz).
    Ayrıca aşağıdaki resimden de bağlamayı daha görsel olarak inceleyebilirsiniz:
  • Daha sonra Raspberry Pi Python GPIO kütüphanesini kurdum. Bunun için aşağıdaki yolları izledim:
    1. Önce Raspberry Pi Python GPIO Proje sayfasına girip downloads kısmından en güncel versiyonun linkini aldım.
    2. Daha sonra .deb paketini şu komutla indirip kurdum (Bu yazıyı okuduğunuzda daha güncel sürüm çıkmış olabilir, lütfen kontrol edin indirmeden önce de komuttaki linki ona göre güncelleyin) (06.06.2013 tarihli en güncel python2, pthon3 ve kaynak kodu dosyalarını alternatif link olarak buradan indirebilirsiniz) 1cd $HOME
      2wget https://raspberry-gpio-python.google...2a-1_armhf.deb
      3sudo dpkg -i python-rpi.gpio_0.5.2a-1_armhf.deb
      4rm -R python-rpi.gpio_0.5.2a-1_armhf.deb
  • Şimdi ise aşağıdaki kodu home klasörüne deneme.py olarak kaydettim ve root olarak çalıştırdım (alternatif olarak kodu buradan da indirebilirsiniz.): 1#!/usr/bin/python
    2#
    3# HD44780 LCD Test Script for
    4# Raspberry Pi
    5#
    6# Author : Matt Hawkins
    7# Site : Raspberry Pi Spy | Raspberry Pi tutorials, scripts, help and downloads
    8#
    9# Date : 26/07/2012
    10#
    11
    12# The wiring for the LCD is as follows:
    13# 1 : GND
    14# 2 : 5V
    15# 3 : Contrast (0-5V)*
    16# 4 : RS (Register Select)
    17# 5 : R/W (Read Write) - GROUND THIS PIN
    18# 6 : Enable or Strobe
    19# 7 : Data Bit 0 - NOT USED
    20# 8 : Data Bit 1 - NOT USED
    21# 9 : Data Bit 2 - NOT USED
    22# 10: Data Bit 3 - NOT USED
    23# 11: Data Bit 4
    24# 12: Data Bit 5
    25# 13: Data Bit 6
    26# 14: Data Bit 7
    27# 15: LCD Backlight +5V**
    28# 16: LCD Backlight GND
    29
    30#import
    31import RPi.GPIO as GPIO
    32import time
    33
    34# Define GPIO to LCD mapping
    35LCD_RS = 7
    36LCD_E = 8
    37LCD_D4 = 25
    38LCD_D5 = 24
    39LCD_D6 = 23
    40LCD_D7 = 18
    41
    42# Define some device constants
    43LCD_WIDTH = 16 # Maximum characters per line
    44LCD_CHR = True
    45LCD_CMD = False
    46
    47LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
    48LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line
    49
    50# Timing constants
    51E_PULSE = 0.00005
    52E_DELAY = 0.00005
    53
    54def main():
    55 # Main program block
    56
    57GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbers
    58 GPIO.setup(LCD_E, GPIO.OUT) # E
    59 GPIO.setup(LCD_RS, GPIO.OUT) # RS
    60 GPIO.setup(LCD_D4, GPIO.OUT) # DB4
    61 GPIO.setup(LCD_D5, GPIO.OUT) # DB5
    62 GPIO.setup(LCD_D6, GPIO.OUT) # DB6
    63 GPIO.setup(LCD_D7, GPIO.OUT) # DB7
    64
    65# Initialise display
    66 lcd_init()
    67
    68# Send some test
    69 lcd_byte(LCD_LINE_1, LCD_CMD)
    70 lcd_string("Rasbperry Pi")
    71 lcd_byte(LCD_LINE_2, LCD_CMD)
    72 lcd_string("Model B")
    73
    74time.sleep(3) # 3 second delay
    75
    76# Send some text
    77 lcd_byte(LCD_LINE_1, LCD_CMD)
    78 lcd_string("Raspberrypi")
    79 lcd_byte(LCD_LINE_2, LCD_CMD)
    80 lcd_string(".gen.tr")
    81
    82time.sleep(20)
    83
    84def lcd_init():
    85 # Initialise display
    86 lcd_byte(0x33,LCD_CMD)
    87 lcd_byte(0x32,LCD_CMD)
    88 lcd_byte(0x28,LCD_CMD)
    89 lcd_byte(0x0C,LCD_CMD)
    90 lcd_byte(0x06,LCD_CMD)
    91 lcd_byte(0x01,LCD_CMD)
    92
    93def lcd_string(message):
    94 # Send string to display
    95
    96message = message.ljust(LCD_WIDTH," ")
    97
    98for i in range(LCD_WIDTH):
    99 lcd_byte(ord(message[i]),LCD_CHR)
    100
    101def lcd_byte(bits, mode):
    102 # Send byte to data pins
    103 # bits = data
    104 # mode = True for character
    105 # False for command
    106
    107GPIO.output(LCD_RS, mode) # RS
    108
    109# High bits
    110 GPIO.output(LCD_D4, False)
    111 GPIO.output(LCD_D5, False)
    112 GPIO.output(LCD_D6, False)
    113 GPIO.output(LCD_D7, False)
    114 if bits&0x10==0x10:
    115 GPIO.output(LCD_D4, True)
    116 if bits&0x20==0x20:
    117 GPIO.output(LCD_D5, True)
    118 if bits&0x40==0x40:
    119 GPIO.output(LCD_D6, True)
    120 if bits&0x80==0x80:
    121 GPIO.output(LCD_D7, True)
    122
    123# Toggle 'Enable' pin
    124 time.sleep(E_DELAY)
    125 GPIO.output(LCD_E, True)
    126 time.sleep(E_PULSE)
    127 GPIO.output(LCD_E, False)
    128 time.sleep(E_DELAY)
    129
    130# Low bits
    131 GPIO.output(LCD_D4, False)
    132 GPIO.output(LCD_D5, False)
    133 GPIO.output(LCD_D6, False)
    134 GPIO.output(LCD_D7, False)
    135 if bits&0x01==0x01:
    136 GPIO.output(LCD_D4, True)
    137 if bits&0x02==0x02:
    138 GPIO.output(LCD_D5, True)
    139 if bits&0x04==0x04:
    140 GPIO.output(LCD_D6, True)
    141 if bits&0x08==0x08:
    142 GPIO.output(LCD_D7, True)
    143
    144# Toggle 'Enable' pin
    145 time.sleep(E_DELAY)
    146 GPIO.output(LCD_E, True)
    147 time.sleep(E_PULSE)
    148 GPIO.output(LCD_E, False)
    149 time.sleep(E_DELAY)
    150
    151if __name__ == '__main__':
    152 main()


    1cd $HOME
    2nano test.py


    (SSHdan bağlanıyorsanız masaüstünüzde kopyaladığınız metni putty den sağ tık ile yapıştırır)
    CTRL+X ve Y ile kaydettim
  • Daha sonra kodu root olarak çalıştırdım: 1sudo python test.py
  • Afiyet olsun
--------------------- Kimler geldi kimler gecti don bak arkana elbet ki zaman bizi sizide silip supurecektir peki bizden geriye ne kalicak ? keske hic bir sey kalmasa...

Youtube kanalim ► https://goo.gl/eM6wz2

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı