Pada tutorial Arduino Indonesia kali ini akan mengulas tentang bagaimana menghemat pin digital dari board Arduino Uno untuk LCD dengan menggunakan SPI dan shift register 74HC595.
Table of Contents
Library
Salah satu kelemahan dari board Arduino Uno ialah jumlah pin digital dan analog yang tidak terlalu banyak, sehingga kurang cocok untuk project dengan banyak input dan output. Kali ini akan diberikan sedikit tips untuk menghemat jumlah pin Arduino yang digunakan untuk LCD (secara default 6 pin), menjadi hanya 3 pin saja dengan menggunakan SPI dan shift register 74HC595. Untuk library LCD yang digunakan dapat diperoleh pada link berikut.
Setelah download library tersebut, copy-paste pada folder libraries Arduino, overwrite berkas library LiquidCrystal. Pada berkas baru tersebut terdapat contoh program HelloWorld_SPI.
Wiring Diagram
Berikut ini ialah wiring diagram (pengkabelan) untuk rangkaian board Arduino Uno, LCD, dan IC shift register 74HC595.
- Data data bit pin 14 IC 74HC595 terhubung dengan MOSI Arduino Uno pin 11
- Clock data bit pin 11 74HC595 SHCP terhubung dengan SCK Arduino Uno pin 13
- Latch pin 12 74HC595 STCP terhubung dengan SS Arduino Uno pin 10
- Pin 1 74HC595 Q1 terhubung dengan RS LCD
- Pin 3 74HC595 Q3 terhubung dengan E LCD
- Pin 4 74HC595 Q4 terhubung dengan D4 LCD
- Pin 5 74HC595 Q5 terhubung dengan D5 LCD
- Pin 6 74HC595 Q6 terhubung dengan D6 LCD
- Pin 7 74HC595 Q7 terhubung dengan D7 LCD
- Pin 10 74HC595 terhubung dengan Vcc
- Pin 13 74HC595 terhubung dengan Ground
Source Code
Berikut ini ialah source code (sketch) Arduino SPI LCD dengan 74HC595.
/*
Program LCD SPI
Arduino Uno 74HC595 shift Register
Loki Lang
*/
#include <SPI.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(10);
void setup()
{
lcd.begin(16, 2);
lcd.print("Hello world!");
delay(1000);
lcd.clear();
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print("Arduino SPI");
lcd.setCursor(0, 1);
lcd.print("74HC595");
}
Program LCD SPI
Arduino Uno 74HC595 shift Register
Loki Lang
*/
#include <SPI.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(10);
void setup()
{
lcd.begin(16, 2);
lcd.print("Hello world!");
delay(1000);
lcd.clear();
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print("Arduino SPI");
lcd.setCursor(0, 1);
lcd.print("74HC595");
}
Dengan menggunakan tips ini memungkinkan board Arduino Uno menghemat penggunan pin untuk LCD. Dari yang semula menggunakan 6 pin untuk LCD, hanya menjadi 3 pin saja, dengan menggunakan IC 74HC595.